diff --git a/app/assets/javascripts/shared/autosave_form.js b/app/assets/javascripts/shared/autosave_form.js index 0e3dc5233..d383a9a8e 100644 --- a/app/assets/javascripts/shared/autosave_form.js +++ b/app/assets/javascripts/shared/autosave_form.js @@ -1,10 +1,10 @@ -(function () { +(function() { 'use strict'; function initAutosaveListeners() { $(document).on('change', 'form[data-action*="autosave-form"]', function({ currentTarget }) { $.rails.fire($(currentTarget), 'submit'); - }) + }); } $(document).one('turbolinks:load', initAutosaveListeners); diff --git a/app/assets/javascripts/shared/remote_modal.js b/app/assets/javascripts/shared/remote_modal.js index 4e9471457..2a81a710b 100644 --- a/app/assets/javascripts/shared/remote_modal.js +++ b/app/assets/javascripts/shared/remote_modal.js @@ -1,4 +1,4 @@ -(function () { +(function() { 'use strict'; function initRemoteModalListeners() { @@ -8,11 +8,10 @@ ev.preventDefault(); animateSpinner(); - $.get(ev.currentTarget.getAttribute('href')).then(function({modal}) { - $(modal).modal('show') - .on("shown.bs.modal", function() { + $.get(ev.currentTarget.getAttribute('href')).then(function({ modal }) { + $(modal).on("shown.bs.modal", function() { $(this).find(".selectpicker").selectpicker(); - }); + }).modal('show'); animateSpinner(null, false); }); }); diff --git a/app/assets/javascripts/shared/swap_remote_container.js b/app/assets/javascripts/shared/swap_remote_container.js index 1c613aedf..6e21467ea 100644 --- a/app/assets/javascripts/shared/swap_remote_container.js +++ b/app/assets/javascripts/shared/swap_remote_container.js @@ -1,4 +1,4 @@ -(function () { +(function() { 'use strict'; function initSwapRemoteContainerListeners() { @@ -8,7 +8,7 @@ ev.stopPropagation(); ev.preventDefault(); - $.get(element.getAttribute('href')).then(function({html, flash}) { + $.get(element.getAttribute('href')).then(function({ html, flash }) { let targetID = element.getAttribute('data-target'); let targetElement = $(element).closest(targetID); let newContainer = $(html); diff --git a/app/assets/javascripts/shared/toggle_visibility.js b/app/assets/javascripts/shared/toggle_visibility.js index 26987523f..6eb9480a7 100644 --- a/app/assets/javascripts/shared/toggle_visibility.js +++ b/app/assets/javascripts/shared/toggle_visibility.js @@ -1,8 +1,8 @@ -(function () { +(function() { 'use strict'; function initToggleVisibilityListeners() { - $(document).on('change', 'input[data-action="toggle-visibility"]', function({currentTarget}) { + $(document).on('change', 'input[data-action="toggle-visibility"]', function({ currentTarget }) { let toggleId = currentTarget.getAttribute('data-target'); let element = document.getElementById(toggleId); diff --git a/app/controllers/access_permissions/experiments_controller.rb b/app/controllers/access_permissions/experiments_controller.rb index 3daf2975a..604eff459 100644 --- a/app/controllers/access_permissions/experiments_controller.rb +++ b/app/controllers/access_permissions/experiments_controller.rb @@ -5,7 +5,7 @@ module AccessPermissions before_action :set_project before_action :set_experiment before_action :check_read_permissions, only: %i(show) - before_action :check_manage_permissions, only: %i(create edit update) + before_action :check_manage_permissions, only: %i(edit update) def show respond_to do |format| @@ -20,7 +20,7 @@ module AccessPermissions end def update - @experiment_member = ExperimentMember.new(current_user, @experiment, @project) + @experiment_member = ExperimentMember.new(current_user, @experiment, @project) @experiment_member.update(permitted_update_params) respond_to do |format| diff --git a/app/controllers/access_permissions/my_modules_controller.rb b/app/controllers/access_permissions/my_modules_controller.rb index 897733fc9..314c7f14f 100644 --- a/app/controllers/access_permissions/my_modules_controller.rb +++ b/app/controllers/access_permissions/my_modules_controller.rb @@ -6,7 +6,7 @@ module AccessPermissions before_action :set_experiment before_action :set_my_module before_action :check_read_permissions, only: %i(show) - before_action :check_manage_permissions, only: %i(create edit update) + before_action :check_manage_permissions, only: %i(edit update) def show respond_to do |format| diff --git a/app/forms/access_permissions/new_user_project_form.rb b/app/forms/access_permissions/new_user_project_form.rb index deded453b..cc4177663 100644 --- a/app/forms/access_permissions/new_user_project_form.rb +++ b/app/forms/access_permissions/new_user_project_form.rb @@ -4,7 +4,7 @@ module AccessPermissions class NewUserProjectForm include ActiveModel::Model - attr_accessor :project,:resource_members + attr_accessor :project, :resource_members attr_reader :current_user, :new_members_count def initialize(current_user, project, attributes = {}) @@ -45,4 +45,3 @@ module AccessPermissions end end end - diff --git a/app/helpers/user_assignments_helper.rb b/app/helpers/user_assignments_helper.rb index 661081e16..5f8f1bd4e 100644 --- a/app/helpers/user_assignments_helper.rb +++ b/app/helpers/user_assignments_helper.rb @@ -27,8 +27,10 @@ module UserAssignmentsHelper current_user_assignment_name = user_assignment&.user_role&.name [ - t('user_assignment.from_project', user_role: project_user_assignment.user_role.name), - (t('user_assignment.from_experiment', user_role: experiment_user_assignment.user_role.name) if experiment_user_assignment.present?), + t('user_assignment.from_project', + user_role: project_user_assignment.user_role.name), + (t('user_assignment.from_experiment', + user_role: experiment_user_assignment.user_role.name) if experiment_user_assignment.present?), current_user_assignment_name ].compact.join(' / ') else @@ -36,4 +38,3 @@ module UserAssignmentsHelper end end end - diff --git a/app/models/experiment_member.rb b/app/models/experiment_member.rb index a72a766ad..fd7d179c0 100644 --- a/app/models/experiment_member.rb +++ b/app/models/experiment_member.rb @@ -8,7 +8,6 @@ class ExperimentMember :user, :project, :user_role, :user_assignment - def initialize(current_user, experiment, project, user = nil) @experiment = experiment @current_user = current_user diff --git a/app/models/my_module_member.rb b/app/models/my_module_member.rb index ac63aae79..ed17511d4 100644 --- a/app/models/my_module_member.rb +++ b/app/models/my_module_member.rb @@ -8,7 +8,6 @@ class MyModuleMember :experiment, :user, :project, :user_role, :user_assignment - def initialize(current_user, my_module, experiment, project, user = nil) @experiment = experiment @current_user = current_user diff --git a/app/models/project_member.rb b/app/models/project_member.rb index 84e2a1c3e..b748d1255 100644 --- a/app/models/project_member.rb +++ b/app/models/project_member.rb @@ -90,15 +90,13 @@ class ProjectMember end def validate_user_project_relation_presence - if UserProject.find_by(project: @project, user: @user).present? - errors.add(:user) - end + return if UserProject.find_by(project: @project, user: @user).nil? + errors.add(:user) end def validate_user_project_assignment_presence - if UserAssignment.find_by(assignable: @project, user: @user).present? - errors.add(:user_role_id, :already_present) - end + return if UserAssignment.find_by(assignable: @project, user: @user).nil? + errors.add(:user_role_id, :already_present) end def project_owners diff --git a/app/views/access_permissions/my_modules/my_module_member.json.jbuilder b/app/views/access_permissions/my_modules/my_module_member.json.jbuilder index e32f10de8..ec08a604d 100644 --- a/app/views/access_permissions/my_modules/my_module_member.json.jbuilder +++ b/app/views/access_permissions/my_modules/my_module_member.json.jbuilder @@ -8,7 +8,9 @@ json.form controller.render_to_string( experiment: @my_module_member.experiment, my_module: @my_module_member.my_module, project: @my_module_member.project, - update_path: access_permissions_project_experiment_my_module_path(@my_module_member.project, @my_module_member.experiment, @my_module_member.my_module) + update_path: access_permissions_project_experiment_my_module_path(@my_module_member.project, + @my_module_member.experiment, + @my_module_member.my_module) }, layout: false ) diff --git a/spec/controllers/access_permissions/experiments_controller_spec.rb b/spec/controllers/access_permissions/experiments_controller_spec.rb index 0cf3e7584..460e0eb0f 100644 --- a/spec/controllers/access_permissions/experiments_controller_spec.rb +++ b/spec/controllers/access_permissions/experiments_controller_spec.rb @@ -14,13 +14,18 @@ describe AccessPermissions::ExperimentsController, type: :controller do let!(:viewer_user_role) { create :viewer_role } let!(:technician_role) { create :technician_role } let!(:user_project) { create :user_project, user: user, project: project } - let!(:user_assignment) { create :user_assignment, assignable: project, user: user, user_role: owner_role, assigned_by: user } + let!(:user_assignment) { + create :user_assignment, + assignable: project, + user: user, + user_role: owner_role, + assigned_by: user + } let!(:viewer_user) { create :user, confirmed_at: Time.zone.now } let!(:normal_user_team) { create :user_team, :normal_user, user: viewer_user, team: team } let!(:viewer_user_project) { create :user_project, user: viewer_user, project: project } - - describe "GET #show" do + describe 'GET #show' do it 'returns a http success response' do get :show, params: { project_id: project.id, id: experiment.id }, format: :json expect(response).to have_http_status :success @@ -32,9 +37,9 @@ describe AccessPermissions::ExperimentsController, type: :controller do end end - describe "GET #edit" do + describe 'GET #edit' do it 'returns a http success response' do - get :edit, params: { project_id: project.id, id: experiment.id}, format: :json + get :edit, params: { project_id: project.id, id: experiment.id }, format: :json expect(response).to have_http_status :success end @@ -44,7 +49,11 @@ describe AccessPermissions::ExperimentsController, type: :controller do end it 'renders 403 if user does not have manage permissions on project' do - create :user_assignment, assignable: experiment, user: viewer_user, user_role: viewer_user_role, assigned_by: user + create :user_assignment, + assignable: experiment, + user: viewer_user, + user_role: viewer_user_role, + assigned_by: user sign_in_viewer_user @@ -53,9 +62,21 @@ describe AccessPermissions::ExperimentsController, type: :controller do end end - describe "PUT #update" do - let!(:viewer_project_assignment) { create :user_assignment, assignable: project, user: viewer_user, user_role: viewer_user_role, assigned_by: user } - let!(:viewer_user_assignment) { create :user_assignment, assignable: experiment, user: viewer_user, user_role: viewer_user_role, assigned_by: user } + describe 'PUT #update' do + let!(:viewer_project_assignment) { + create :user_assignment, + assignable: project, + user: viewer_user, + user_role: viewer_user_role, + assigned_by: user + } + let!(:viewer_user_assignment) { + create :user_assignment, + assignable: experiment, + user: viewer_user, + user_role: viewer_user_role, + assigned_by: user + } let(:valid_params) { { diff --git a/spec/controllers/access_permissions/my_modules_controller_spec.rb b/spec/controllers/access_permissions/my_modules_controller_spec.rb index 61c2841b0..5d459d74a 100644 --- a/spec/controllers/access_permissions/my_modules_controller_spec.rb +++ b/spec/controllers/access_permissions/my_modules_controller_spec.rb @@ -14,13 +14,18 @@ describe AccessPermissions::MyModulesController, type: :controller do let!(:viewer_user_role) { create :viewer_role } let!(:technician_role) { create :technician_role } let!(:user_project) { create :user_project, user: user, project: project } - let!(:user_assignment) { create :user_assignment, assignable: project, user: user, user_role: owner_role, assigned_by: user } + let!(:user_assignment) { + create :user_assignment, + assignable: project, + user: user, + user_role: owner_role, + assigned_by: user + } let!(:viewer_user) { create :user, confirmed_at: Time.zone.now } let!(:normal_user_team) { create :user_team, :normal_user, user: viewer_user, team: team } let!(:viewer_user_project) { create :user_project, user: viewer_user, project: project } let!(:my_module) { create :my_module, experiment: experiment } - describe "GET #show" do it 'returns a http success response' do get :show, params: { project_id: project.id, experiment_id: experiment.id, id: my_module.id }, format: :json @@ -55,8 +60,20 @@ describe AccessPermissions::MyModulesController, type: :controller do end describe "PUT #update" do - let!(:viewer_project_assignment) { create :user_assignment, assignable: project, user: viewer_user, user_role: viewer_user_role, assigned_by: user } - let!(:viewer_user_assignment) { create :user_assignment, assignable: my_module, user: viewer_user, user_role: viewer_user_role, assigned_by: user } + let!(:viewer_project_assignment) { + create :user_assignment, + assignable: project, + user: viewer_user, + user_role: viewer_user_role, + assigned_by: user + } + let!(:viewer_user_assignment) { + create :user_assignment, + assignable: my_module, + user: viewer_user, + user_role: viewer_user_role, + assigned_by: user + } let(:valid_params) { { diff --git a/spec/controllers/access_permissions/projects_controller_spec.rb b/spec/controllers/access_permissions/projects_controller_spec.rb index 9ffafecd5..f25bbba4a 100644 --- a/spec/controllers/access_permissions/projects_controller_spec.rb +++ b/spec/controllers/access_permissions/projects_controller_spec.rb @@ -13,11 +13,22 @@ describe AccessPermissions::ProjectsController, type: :controller do let!(:normal_user_role) { create :normal_user_role } let!(:technician_role) { create :technician_role } let!(:user_project) { create :user_project, user: user, project: project } - let!(:user_assignment) { create :user_assignment, assignable: project, user: user, user_role: owner_role, assigned_by: user } + let!(:user_assignment) { + create :user_assignment, + assignable: project, + user: user, + user_role: owner_role, + assigned_by: user + } let!(:normal_user) { create :user, confirmed_at: Time.zone.now } - let!(:normal_user_team) { create :user_team, :normal_user, user: normal_user, team: team } + let!(:normal_user_team) { + create :user_team, + :normal_user, + user: normal_user, + team: team + } - describe "GET #new" do + describe 'GET #new' do it 'returns a http success response' do get :new, params: { id: project.id }, format: :json expect(response).to have_http_status :success @@ -40,7 +51,7 @@ describe AccessPermissions::ProjectsController, type: :controller do end end - describe "GET #show" do + describe 'GET #show' do it 'returns a http success response' do get :show, params: { id: project.id }, format: :json expect(response).to have_http_status :success @@ -63,7 +74,7 @@ describe AccessPermissions::ProjectsController, type: :controller do end end - describe "GET #edit" do + describe 'GET #edit' do it 'returns a http success response' do get :edit, params: { id: project.id }, format: :json expect(response).to have_http_status :success @@ -85,9 +96,15 @@ describe AccessPermissions::ProjectsController, type: :controller do end end - describe "PUT #update" do + describe 'PUT #update' do let!(:normal_user_project) { create :user_project, user: normal_user, project: project } - let!(:normal_user_assignment) { create :user_assignment, assignable: project, user: normal_user, user_role: normal_user_role, assigned_by: user } + let!(:normal_user_assignment) { + create :user_assignment, + assignable: project, + user: normal_user, + user_role: normal_user_role, + assigned_by: user + } let(:valid_params) { { @@ -135,7 +152,7 @@ describe AccessPermissions::ProjectsController, type: :controller do expect { post :create, params: valid_params, format: :json }.to change(UserProject, :count).by(1).and \ - change(UserAssignment, :count).by(1) + change(UserAssignment, :count).by(1) end it 'does not create an assigment if user is already assigned' do @@ -144,7 +161,7 @@ describe AccessPermissions::ProjectsController, type: :controller do expect { post :create, params: valid_params, format: :json }.to change(UserProject, :count).by(0).and \ - change(UserAssignment, :count).by(0) + change(UserAssignment, :count).by(0) end it 'does not create an assigment when the user is already assigned with different permission' do @@ -154,7 +171,7 @@ describe AccessPermissions::ProjectsController, type: :controller do expect { post :create, params: valid_params, format: :json }.to change(UserProject, :count).by(0).and \ - change(UserAssignment, :count).by(0) + change(UserAssignment, :count).by(0) end it 'renders 403 if user does not have manage permissions on project' do @@ -165,9 +182,15 @@ describe AccessPermissions::ProjectsController, type: :controller do end end - describe "DELETE #destroy" do + describe 'DELETE #destroy' do let!(:normal_user_project) { create :user_project, user: normal_user, project: project } - let!(:normal_user_assignment) { create :user_assignment, assignable: project, user: normal_user, user_role: normal_user_role, assigned_by: user } + let!(:normal_user_assignment) { + create :user_assignment, + assignable: project, + user: normal_user, + user_role: normal_user_role, + assigned_by: user + } let(:valid_params) { { @@ -180,7 +203,7 @@ describe AccessPermissions::ProjectsController, type: :controller do expect { delete :destroy, params: valid_params, format: :json }.to change(UserProject, :count).by(-1).and \ - change(UserAssignment, :count).by(-1) + change(UserAssignment, :count).by(-1) end it 'renders 403 if user does not have manage permissions on project' do diff --git a/spec/factories/user_roles.rb b/spec/factories/user_roles.rb index 43ddb987b..ac655399b 100644 --- a/spec/factories/user_roles.rb +++ b/spec/factories/user_roles.rb @@ -32,7 +32,6 @@ FactoryBot.define do predefined { true } end - factory :technician_role do name { I18n.t('user_roles.predefined.technician') } permissions { diff --git a/spec/models/experiment_member_spec.rb b/spec/models/experiment_member_spec.rb index d41769d65..5a580759d 100644 --- a/spec/models/experiment_member_spec.rb +++ b/spec/models/experiment_member_spec.rb @@ -7,7 +7,13 @@ describe ExperimentMember, type: :model do let!(:user) { create :user } let!(:project) { create :project } let!(:user_project) { create :user_project, user: user, project: project } - let!(:user_assignment) { create :user_assignment, assignable: project, user: user, user_role: owner_role, assigned_by: user } + let!(:user_assignment) { + create :user_assignment, + assignable: project, + user: user, + user_role: owner_role, + assigned_by: user + } let!(:experiment) { create :experiment, project: project } let(:normal_user_role) { create :normal_user_role } diff --git a/spec/models/project_member_spec.rb b/spec/models/project_member_spec.rb index 7e4cbdabc..4b170062e 100644 --- a/spec/models/project_member_spec.rb +++ b/spec/models/project_member_spec.rb @@ -10,7 +10,6 @@ describe ProjectMember, type: :model do let(:subject) { described_class.new(user, project, user) } - describe 'create' do it 'create a user_assignment and user_project records' do subject.assign = true @@ -33,7 +32,13 @@ describe ProjectMember, type: :model do describe 'update' do let!(:user_project) { create :user_project, user: user, project: project } - let!(:user_assignment) { create :user_assignment, assignable: project, user: user, user_role: owner_role, assigned_by: user } + let!(:user_assignment) { + create :user_assignment, + assignable: project, + user: user, + user_role: owner_role, + assigned_by: user + } it 'updates only the user assignment role' do subject.user_role_id = normal_user_role.id @@ -53,9 +58,21 @@ describe ProjectMember, type: :model do describe 'destroy' do let!(:user_two) { create :user } let!(:user_project_two) { create :user_project, user: user_two, project: project } - let!(:user_assignment_two) { create :user_assignment, assignable: project, user: user_two, user_role: owner_role, assigned_by: user } + let!(:user_assignment_two) { + create :user_assignment, + assignable: project, + user: user_two, + user_role: owner_role, + assigned_by: user + } let!(:user_project) { create :user_project, user: user, project: project } - let!(:user_assignment) { create :user_assignment, assignable: project, user: user, user_role: owner_role, assigned_by: user } + let!(:user_assignment) { + create :user_assignment, + assignable: project, + user: user, + user_role: owner_role, + assigned_by: user + } it 'removes the user_assignment and user_project' do expect {