diff --git a/lib/data_update_scripts/20210203104631_add_single_resource_admin_role_to_users_with_tech_admin.rb b/lib/data_update_scripts/20210203104631_add_single_resource_admin_role_to_users_with_tech_admin.rb index f3b915ed9..3bc6f064f 100644 --- a/lib/data_update_scripts/20210203104631_add_single_resource_admin_role_to_users_with_tech_admin.rb +++ b/lib/data_update_scripts/20210203104631_add_single_resource_admin_role_to_users_with_tech_admin.rb @@ -1,10 +1,16 @@ module DataUpdateScripts class AddSingleResourceAdminRoleToUsersWithTechAdmin def run - users_with_tech_admin_role = Role.find_by(name: "tech_admin").users - users_with_tech_admin_role.find_each do |user| - user.add_role(:single_resource_admin, DataUpdateScript) - end + # This script causes errors when it runs on Forems that do not have any + # users with a tech_admin role. + # 20210209185037_add_single_resource_role_to_tech_admins is the script + # that should override this one as a replacement. + + # users_with_tech_admin_role = Role.find_by(name: "tech_admin").users + + # users_with_tech_admin_role.find_each do |user| + # user.add_role(:single_resource_admin, DataUpdateScript) + # end end end end diff --git a/lib/data_update_scripts/20210209185037_add_single_resource_role_to_tech_admins.rb b/lib/data_update_scripts/20210209185037_add_single_resource_role_to_tech_admins.rb new file mode 100644 index 000000000..ae0d997b5 --- /dev/null +++ b/lib/data_update_scripts/20210209185037_add_single_resource_role_to_tech_admins.rb @@ -0,0 +1,12 @@ +module DataUpdateScripts + class AddSingleResourceRoleToTechAdmins + def run + users_with_tech_admin_role = Role.find_by(name: "tech_admin")&.users + return unless users_with_tech_admin_role + + users_with_tech_admin_role.find_each do |user| + user.add_role(:single_resource_admin, DataUpdateScript) + end + end + end +end diff --git a/spec/lib/data_update_scripts/add_single_resource_admin_role_to_users_with_tech_admin_spec.rb b/spec/lib/data_update_scripts/add_single_resource_admin_role_to_users_with_tech_admin_spec.rb deleted file mode 100644 index 99510d4de..000000000 --- a/spec/lib/data_update_scripts/add_single_resource_admin_role_to_users_with_tech_admin_spec.rb +++ /dev/null @@ -1,28 +0,0 @@ -require "rails_helper" -require Rails.root.join( - "lib/data_update_scripts/20210203104631_add_single_resource_admin_role_to_users_with_tech_admin.rb", -) - -describe DataUpdateScripts::AddSingleResourceAdminRoleToUsersWithTechAdmin do - let!(:tech_admin1) { create(:user, :tech_admin) } - let!(:tech_admin2) { create(:user, :tech_admin) } - let!(:admin) { create(:user, :admin) } - - it "adds single_resource_admin roles to users with tech_admin roles" do - described_class.new.run - - expect(tech_admin1.reload.roles.pluck(:name)).to include("single_resource_admin") - expect(tech_admin2.reload.roles.pluck(:name)).to include("single_resource_admin") - end - - it "sets the correct resource type for the single_resource_admin role" do - described_class.new.run - expect(tech_admin2.reload.roles.pluck(:resource_type)).to include("DataUpdateScript") - end - - it "does not add single_resource_admin roles alongside other roles" do - described_class.new.run - expect(admin.reload.roles.pluck(:name)).not_to include("single_resource_admin") - end - -end diff --git a/spec/lib/data_update_scripts/add_single_resource_role_to_tech_admins_spec.rb b/spec/lib/data_update_scripts/add_single_resource_role_to_tech_admins_spec.rb new file mode 100644 index 000000000..428e568a4 --- /dev/null +++ b/spec/lib/data_update_scripts/add_single_resource_role_to_tech_admins_spec.rb @@ -0,0 +1,38 @@ +require "rails_helper" +require Rails.root.join( + "lib/data_update_scripts/20210209185037_add_single_resource_role_to_tech_admins.rb", +) + +describe DataUpdateScripts::AddSingleResourceRoleToTechAdmins do + let!(:admin) { create(:user, :admin) } + + context "without any tech_admin users" do + it "does not add any roles to any other users with roles" do + expect do + described_class.new.run + end.not_to change(admin.reload.roles, :count) + end + end + + context "with tech_admin users" do + let!(:tech_admin1) { create(:user, :tech_admin) } + let!(:tech_admin2) { create(:user, :tech_admin) } + + it "adds single_resource_admin roles to users with tech_admin roles" do + described_class.new.run + + expect(tech_admin1.reload.roles.pluck(:name)).to include("single_resource_admin") + expect(tech_admin2.reload.roles.pluck(:name)).to include("single_resource_admin") + end + + it "sets the correct resource type for the single_resource_admin role" do + described_class.new.run + expect(tech_admin2.reload.roles.pluck(:resource_type)).to include("DataUpdateScript") + end + + it "does not add single_resource_admin roles alongside other roles" do + described_class.new.run + expect(admin.reload.roles.pluck(:name)).not_to include("single_resource_admin") + end + end +end