scientist-softserv / adventist_knapsack

Apache License 2.0
1 stars 0 forks source link

🧹 Remove ability spec #38

Closed jeremyf closed 9 months ago

jeremyf commented 9 months ago

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.

diff of ability spec before commit ``` ❯ 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 ```
Comparing full changes when copying Hyku's ability spec to Knapsack ``` 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 ```

Related to: