Skip to content

Commit

Permalink
🧹 Remove ability spec
Browse files Browse the repository at this point in the history
Prior to this commit, we had a copy of the ability_spec.rb.  That
Knapsack copy looks to have less coverage than the Hyku version.  And I
found the *diff of ability spec before commit* to be a bit confusing.

To see what would change I copied Hyku's spec over which is present in
the diff *Comparing full changes when copying Hyku's ability spec to Knapsack*

My preference would be do have an ability_decorator_spec to highlight if
and how the abilities of this are different.

Regardless, I'm removing the spec for now.

<details>
<summary>diff of ability spec before commit</summary>

```
❯ diff spec/models/ability_spec.rb hyrax-webapp/spec/models/ability_spec.rb
56,57c56,61
<   describe 'an administrative user' do
<     let(:user) { FactoryBot.create(:admin) }
---
>   describe 'an ordinary user with a role on this tenant' do
>     let(:user) do
>       u = FactoryBot.create(:user)
>       u.add_role(:depositor)
>       u
>     end
61c65
<     it { is_expected.to be_able_to(:manage, Site) }
---
>     it { is_expected.not_to be_able_to(:manage, Site) }
66,67c70,71
<       it "has the admin group" do
<         expect(subject).to include 'admin'
---
>       it "does have the registered group" do
>         expect(subject).to include 'registered'
68a73,76
>
>       it "does not have the admin group" do
>         expect(subject).not_to include 'admin'
>       end
71a80,87
>   describe 'an administrative user' do
>     let(:user) { FactoryBot.create(:admin) }
>
>     it { is_expected.not_to be_able_to(:manage, :all) }
>     it { is_expected.not_to be_able_to(:manage, Account) }
>     it { is_expected.to be_able_to(:manage, Site) }
>   end
>
76a93,191
>
>   # Brought over from blacklight-access_controls v0.6.2
>   describe '#user_groups' do
>     subject { ability.user_groups }
>
>     context 'an admin user' do
>       let(:user) { FactoryBot.create(:admin) }
>
>       it { is_expected.to contain_exactly('admin', 'registered', 'public') }
>     end
>
>     # NOTE(bkiahstroud): Override to test guest users instead of
>     # "unregistered" (User.new) users; see User#add_default_group_membership!
>     context 'a guest user' do
>       let(:user) { create(:guest_user) }
>
>       it { is_expected.to contain_exactly('public') }
>     end
>
>     context 'a registered user' do
>       let(:user) { create(:user) }
>
>       it { is_expected.to contain_exactly('registered', 'public') }
>     end
>
>     # NOTE(bkiahstroud): Override test to create Hyrax::Groups
>     # that the user is a member of.
>     context 'a user with groups' do
>       let(:user)    { create(:user) }
>
>       before do
>         create(:group, name: 'group1', member_users: [user])
>         create(:group, name: 'group2', member_users: [user])
>       end
>
>       it { is_expected.to include('group1', 'group2') }
>     end
>   end
>
>   describe '#admin?' do
>     subject { ability.admin? }
>
>     context 'a user with the admin role' do
>       let(:user) { create(:admin) }
>
>       it { is_expected.to eq(true) }
>     end
>
>     context 'a user in the admin Hyrax::Group' do
>       let(:user) { create(:user) }
>
>       before do
>         create(:admin_group, member_users: [user])
>       end
>
>       it { is_expected.to eq(true) }
>     end
>
>     context 'a user without the admin role' do
>       let(:user) { create(:user) }
>
>       it { is_expected.to eq(false) }
>     end
>
>     context 'a user not in the admin Hyrax::Group' do
>       let(:user) { create(:user) }
>
>       before do
>         create(:group, name: 'non-admin', member_users: [user])
>       end
>
>       it { is_expected.to eq(false) }
>     end
>   end
>
>   describe '#all_user_and_group_roles' do
>     let(:user) { create(:user) }
>     let(:user_reader_role) { create(:role, :user_reader) }
>     let(:collection_editor_role) { create(:role, :collection_editor) }
>     let(:work_depositor_role) { create(:role, :work_depositor) }
>
>     before do
>       user.add_role(user_reader_role.name, Site.instance)
>       create(
>         :group,
>         name: 'test_group',
>         member_users: [user],
>         roles: [collection_editor_role.name, work_depositor_role.name]
>       )
>     end
>
>     it 'lists all role names that apply to the user' do
>       expect(subject.all_user_and_group_roles).to contain_exactly(
>         user_reader_role.name,
>         collection_editor_role.name,
>         work_depositor_role.name
>       )
>     end
>   end
```

</details>

<details>
<summary>Comparing full changes when copying Hyku's ability spec to
Knapsack</summary>

```
diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb
index 424f6bc..ca8a439 100644
--- a/spec/models/ability_spec.rb
+++ b/spec/models/ability_spec.rb
@@ -53,20 +53,36 @@
     end
   end

+  describe 'an ordinary user with a role on this tenant' do
+    let(:user) do
+      u = FactoryBot.create(:user)
+      u.add_role(:depositor)
+      u
+    end
+
+    it { is_expected.not_to be_able_to(:manage, :all) }
+    it { is_expected.not_to be_able_to(:manage, Account) }
+    it { is_expected.not_to be_able_to(:manage, Site) }
+
+    describe "#user_groups" do
+      subject { ability.user_groups }
+
+      it "does have the registered group" do
+        expect(subject).to include 'registered'
+      end
+
+      it "does not have the admin group" do
+        expect(subject).not_to include 'admin'
+      end
+    end
+  end
+
   describe 'an administrative user' do
     let(:user) { FactoryBot.create(:admin) }

     it { is_expected.not_to be_able_to(:manage, :all) }
     it { is_expected.not_to be_able_to(:manage, Account) }
     it { is_expected.to be_able_to(:manage, Site) }
-
-    describe "#user_groups" do
-      subject { ability.user_groups }
-
-      it "has the admin group" do
-        expect(subject).to include 'admin'
-      end
-    end
   end

   describe 'a superadmin user' do
@@ -74,4 +90,103 @@

     it { is_expected.to be_able_to(:manage, :all) }
   end
+
+  # Brought over from blacklight-access_controls v0.6.2
+  describe '#user_groups' do
+    subject { ability.user_groups }
+
+    context 'an admin user' do
+      let(:user) { FactoryBot.create(:admin) }
+
+      it { is_expected.to contain_exactly('admin', 'registered', 'public') }
+    end
+
+    # NOTE(bkiahstroud): Override to test guest users instead of
+    # "unregistered" (User.new) users; see User#add_default_group_membership!
+    context 'a guest user' do
+      let(:user) { create(:guest_user) }
+
+      it { is_expected.to contain_exactly('public') }
+    end
+
+    context 'a registered user' do
+      let(:user) { create(:user) }
+
+      it { is_expected.to contain_exactly('registered', 'public') }
+    end
+
+    # NOTE(bkiahstroud): Override test to create Hyrax::Groups
+    # that the user is a member of.
+    context 'a user with groups' do
+      let(:user)    { create(:user) }
+
+      before do
+        create(:group, name: 'group1', member_users: [user])
+        create(:group, name: 'group2', member_users: [user])
+      end
+
+      it { is_expected.to include('group1', 'group2') }
+    end
+  end
+
+  describe '#admin?' do
+    subject { ability.admin? }
+
+    context 'a user with the admin role' do
+      let(:user) { create(:admin) }
+
+      it { is_expected.to eq(true) }
+    end
+
+    context 'a user in the admin Hyrax::Group' do
+      let(:user) { create(:user) }
+
+      before do
+        create(:admin_group, member_users: [user])
+      end
+
+      it { is_expected.to eq(true) }
+    end
+
+    context 'a user without the admin role' do
+      let(:user) { create(:user) }
+
+      it { is_expected.to eq(false) }
+    end
+
+    context 'a user not in the admin Hyrax::Group' do
+      let(:user) { create(:user) }
+
+      before do
+        create(:group, name: 'non-admin', member_users: [user])
+      end
+
+      it { is_expected.to eq(false) }
+    end
+  end
+
+  describe '#all_user_and_group_roles' do
+    let(:user) { create(:user) }
+    let(:user_reader_role) { create(:role, :user_reader) }
+    let(:collection_editor_role) { create(:role, :collection_editor) }
+    let(:work_depositor_role) { create(:role, :work_depositor) }
+
+    before do
+      user.add_role(user_reader_role.name, Site.instance)
+      create(
+        :group,
+        name: 'test_group',
+        member_users: [user],
+        roles: [collection_editor_role.name, work_depositor_role.name]
+      )
+    end
+
+    it 'lists all role names that apply to the user' do
+      expect(subject.all_user_and_group_roles).to contain_exactly(
+        user_reader_role.name,
+        collection_editor_role.name,
+        work_depositor_role.name
+      )
+    end
+  end
 end
```

</details>

Related to:

- https://github.com/scientist-softserv/adventist-dl/issues/538
  • Loading branch information
jeremyf committed Oct 4, 2023
1 parent cfa8f4d commit 7d48c5d
Showing 1 changed file with 0 additions and 77 deletions.
77 changes: 0 additions & 77 deletions spec/models/ability_spec.rb

This file was deleted.

0 comments on commit 7d48c5d

Please sign in to comment.