diff --git a/app/controllers/canvas_controller.rb b/app/controllers/canvas_controller.rb index 992aa1cc4..e9377fa9f 100644 --- a/app/controllers/canvas_controller.rb +++ b/app/controllers/canvas_controller.rb @@ -189,7 +189,7 @@ class CanvasController < ApplicationController team: my_module.experiment.project.team, project: my_module.experiment.project, subject: my_module, - message_items: { my_module: @my_module.id }) + message_items: { my_module: my_module.id }) end # Create workflow image diff --git a/app/controllers/my_modules_controller.rb b/app/controllers/my_modules_controller.rb index 2c5e36f1a..ff94c2410 100644 --- a/app/controllers/my_modules_controller.rb +++ b/app/controllers/my_modules_controller.rb @@ -189,21 +189,8 @@ class MyModulesController < ApplicationController :change_task_due_date end # rubocop:enable Metrics/BlockNesting - Activities::CreateActivityService - .call(activity_type: type_of, - owner: current_user, - subject: @my_module, - project: - @my_module.experiment.project, - team: current_team, - message_items: { - my_module: @my_module.id, - my_module_duedate: - { - id: @my_module.id, - value_for: 'due_date' - } - }) + log_activity(type_of, my_module_duedate: { id: @my_module.id, + value_for: 'due_date' }) end end end @@ -421,8 +408,10 @@ class MyModulesController < ApplicationController if records_names.any? records_names.uniq! - log_activity_assign_unassign_records(:assign_repository_record, - records_names) + log_activity(:assign_repository_record, + repository: @repository.id, + record_names: records_names.join(', ')) + flash = I18n.t('repositories.assigned_records_flash', records: records_names.join(', ')) flash = I18n.t('repositories.assigned_records_downstream_flash', @@ -468,8 +457,10 @@ class MyModulesController < ApplicationController records.update_all(last_modified_by_id: current_user.id) if records.any? - log_activity_assign_unassign_records(:unassign_repository_record, - records.map(&:name)) + log_activity(:unassign_repository_record, + repository: @repository.id, + record_names: records.map(&:name).join(', ')) + flash = I18n.t('repositories.unassigned_records_flash', records: records.map(&:name).join(', ')) respond_to do |format| @@ -663,25 +654,15 @@ class MyModulesController < ApplicationController :archived) end - def log_activity(type_of) - Activities::CreateActivityService - .call(activity_type: type_of, - owner: current_user, - team: @my_module.experiment.project.team, - project: @my_module.experiment.project, - subject: @my_module, - message_items: { my_module: @my_module.id }) - end + def log_activity(type_of, message_items = {}) + message_items = { my_module: @my_module.id }.merge(message_items) - def log_activity_assign_unassign_records(type_of, records_names) Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, team: @my_module.experiment.project.team, project: @my_module.experiment.project, subject: @my_module, - message_items: { my_module: @my_module.id, - repository: @repository.id, - record_names: records_names.join(', ') }) + message_items: message_items) end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index e171cf911..31eed9eb2 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -172,14 +172,8 @@ class ProjectsController < ApplicationController if !return_error && @project.update(project_params) # Add activities if needed if message_visibility.present? - Activities::CreateActivityService - .call(activity_type: :change_project_visibility, - owner: current_user, - subject: @project, - team: @project.team, - project: @project, - message_items: { project: @project.id, - visibility: message_visibility }) + log_activity(:change_project_visibility, + visibility: message_visibility) end if message_renamed.present? log_activity(:rename_project) @@ -349,13 +343,15 @@ class ProjectsController < ApplicationController render_403 unless can_manage_project?(@project) end - def log_activity(type_of) + def log_activity(type_of, message_items = {}) + message_items = { project: @project.id }.merge(message_items) + Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, subject: @project, team: @project.team, project: @project, - message_items: { project: @project.id }) + message_items: message_items) end end diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index ac8bcb261..082a9e6d4 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -376,7 +376,9 @@ class ProtocolsController < ApplicationController end else # Everything good, display flash & render 200 - log_activity_task_protocol(:update_protocol_in_task_from_repository) + log_activity(:update_protocol_in_task_from_repository, + @protocol.my_module.experiment.project, + protocol_repository: @protocol.parent.id) flash[:success] = t( 'my_modules.protocols.revert_flash' ) @@ -416,7 +418,9 @@ class ProtocolsController < ApplicationController end else # Everything good, record activity, display flash & render 200 - log_activity_task_protocol(:update_protocol_in_repository_from_task) + log_activity(:update_protocol_in_repository_from_task, + @protocol.my_module.experiment.project, + protocol_repository: @protocol.parent.id) flash[:success] = t( 'my_modules.protocols.update_parent_flash' ) @@ -456,7 +460,9 @@ class ProtocolsController < ApplicationController end else # Everything good, display flash & render 200 - log_activity_task_protocol(:update_protocol_in_task_from_repository) + log_activity(:update_protocol_in_task_from_repository, + @protocol.my_module.experiment.project, + protocol_repository: @protocol.parent.id) flash[:success] = t( 'my_modules.protocols.update_from_parent_flash' ) @@ -496,7 +502,9 @@ class ProtocolsController < ApplicationController end else # Everything good, record activity, display flash & render 200 - log_activity_task_protocol(:load_protocol_to_task_from_repository) + log_activity(:load_protocol_to_task_from_repository, + @protocol.my_module.experiment.project, + protocol_repository: @protocol.parent.id) flash[:success] = t('my_modules.protocols.load_from_repository_flash') flash.keep(:success) format.json { render json: {}, status: :ok } @@ -533,15 +541,8 @@ class ProtocolsController < ApplicationController end else # Everything good, record activity, display flash & render 200 - Activities::CreateActivityService - .call(activity_type: :load_protocol_to_task_from_file, - owner: current_user, - subject: @protocol, - team: current_team, - project: @protocol.my_module.experiment.project, - message_items: { - protocol: @protocol.id - }) + log_activity(:load_protocol_to_task_from_file, + @protocol.my_module.experiment.project) flash[:success] = t( 'my_modules.protocols.load_from_file_flash' ) @@ -1201,27 +1202,15 @@ class ProtocolsController < ApplicationController render_403 unless can_create_protocols_in_repository?(current_team) end - def log_activity(type_of) - Activities::CreateActivityService - .call(activity_type: type_of, - owner: current_user, - subject: @protocol, - team: current_team, - message_items: { - protocol: @protocol.id - }) - end + def log_activity(type_of, project = nil, message_items = {}) + message_items = { protocol: @protocol.id }.merge(message_items) - def log_activity_task_protocol(type_of) Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, subject: @protocol, team: current_team, - project: @protocol.my_module.experiment.project, - message_items: { - protocol_task: @protocol.id, - protocol_reporitory: @protocol.parent.id - }) + project: project, + message_items: message_items) end end diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index fac9e03e9..928dff418 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -131,13 +131,7 @@ class ReportsController < ApplicationController report = Report.find_by_id(report_id) next unless report.present? && can_manage_reports?(current_team) # record an activity - Activities::CreateActivityService - .call(activity_type: :delete_report, - owner: current_user, - subject: report, - team: report.team, - project: report.project, - message_items: { report: report.id }) + log_activity(:delete_report, report) report.destroy end @@ -493,13 +487,13 @@ class ReportsController < ApplicationController :html) end - def log_activity(type_of) + def log_activity(type_of, report = @report) Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, - subject: @report, - team: @report.team, - project: @report.project, - message_items: { report: @report.id }) + subject: report, + team: report.team, + project: report.project, + message_items: { report: report.id }) end end diff --git a/app/controllers/result_assets_controller.rb b/app/controllers/result_assets_controller.rb index db7e5ff68..e29b08e20 100644 --- a/app/controllers/result_assets_controller.rb +++ b/app/controllers/result_assets_controller.rb @@ -208,17 +208,7 @@ class ResultAssetsController < ApplicationController # Post process file here asset.post_process_file(@my_module.experiment.project.team) - # Generate activity - Activities::CreateActivityService - .call(activity_type: :add_result, - owner: current_user, - subject: result, - team: @my_module.experiment.project.team, - project: @my_module.experiment.project, - message_items: { - result: result.id, - result_type: t('activities.result_type.asset') - }) + log_activity(:add_result, result) else success = false end @@ -226,15 +216,15 @@ class ResultAssetsController < ApplicationController { status: success, results: results } end - def log_activity(type_of) + def log_activity(type_of, result = @result) Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, - subject: @result, + subject: result, team: @my_module.experiment.project.team, project: @my_module.experiment.project, message_items: { - result: @result.id, + result: result.id, result_type: t('activities.result_type.asset') }) end diff --git a/app/controllers/steps_controller.rb b/app/controllers/steps_controller.rb index 0bf9450d5..8c96b4f8b 100644 --- a/app/controllers/steps_controller.rb +++ b/app/controllers/steps_controller.rb @@ -265,21 +265,14 @@ class StepsController < ApplicationController # This should always hold true (only in module can # check items be checked, but still check just in case) if @protocol.in_module? - Activities::CreateActivityService - .call(activity_type: type_of, - owner: current_user, - subject: @protocol, - team: current_team, - project: @protocol.my_module.experiment.project, - message_items: { - protocol: @protocol.id, - step: @chk_item.checklist.step.id, - step_position: { id: @chk_item.checklist.step.id, - value_for: 'position' }, - checkbox: text_activity, - num_completed: completed_items.to_s, - num_all: all_items.to_s - }) + log_activity(type_of, + @protocol.my_module.experiment.project, + step: @chk_item.checklist.step.id, + step_position: { id: @chk_item.checklist.step.id, + value_for: 'position' }, + checkbox: text_activity, + num_completed: completed_items.to_s, + num_all: all_items.to_s) end end else @@ -315,19 +308,10 @@ class StepsController < ApplicationController # module protocols, so my_module is always # not nil; nonetheless, check if my_module is present if @protocol.in_module? - Activities::CreateActivityService - .call(activity_type: type_of, - owner: current_user, - subject: @protocol, - team: current_team, - project: @protocol.my_module.experiment.project, - message_items: { - protocol: @protocol.id, - step: @step.id, - step_position: { id: @step.id, value_for: 'position' }, - num_completed: completed_steps.to_s, - num_all: all_steps.to_s - }) + log_activity(type_of, + @protocol.my_module.experiment.project, + num_completed: completed_steps.to_s, + num_all: all_steps.to_s) end end @@ -616,17 +600,18 @@ class StepsController < ApplicationController ) end - def log_activity(type_of, project = nil) + def log_activity(type_of, project = nil, message_items = {}) + default_items = { protocol: @protocol.id, + step: @step.id, + step_position: { id: @step.id, value_for: 'position' } } + message_items = default_items.merge(message_items) + Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, subject: @protocol, team: current_team, project: project, - message_items: { - protocol: @protocol.id, - step: @step.id, - step_position: { id: @step.id, value_for: 'position' } - }) + message_items: message_items) end end diff --git a/config/locales/global_activities/en.yml b/config/locales/global_activities/en.yml index 6afcc0121..eaa2cc1e9 100644 --- a/config/locales/global_activities/en.yml +++ b/config/locales/global_activities/en.yml @@ -50,9 +50,9 @@ en: create_step_html: "%{user} created protocol %{protocol}'s step %{step_position} %{step}." edit_step_html: "%{user} edited protocol %{protocol}'s step %{step_position} %{step}." destroy_step_html: "%{user} deleted protocol %{protocol}'s step %{step_position} %{step}." - load_protocol_to_task_from_repository_html: "%{user} loaded protocol %{protocol_task} to task from Protocol repository %{protocol_repository}." + load_protocol_to_task_from_repository_html: "%{user} loaded protocol %{protocol} to task from Protocol repository %{protocol_repository}." load_protocol_to_task_from_file_html: "%{user} loaded protocol %{protocol} to task from file." - update_protocol_in_task_from_repository_html: "%{user} updated protocol %{protocol_task} on task with version from Protocol repository %{protocol_repository}." + update_protocol_in_task_from_repository_html: "%{user} updated protocol %{protocol} on task with version from Protocol repository %{protocol_repository}." check_step_checklist_item_html: "%{user} completed checklist item %{checkbox} (%{num_completed}/%{num_all} completed) in protocol %{protocol}'s step %{step_position} %{step}." uncheck_step_checklist_item_html: "%{user} uncompleted checklist item %{checkbox} (%{num_completed}/%{num_all} completed) in protocol %{protocol}'s step %{step_position} %{step}." add_comment_to_step_html: "%{user} commented on protocol %{protocol}'s step %{step_position} %{step}." @@ -62,8 +62,8 @@ en: uncomplete_step_html: "%{user} uncompleted protocol %{protocol}'s step %{step_position} %{step} (%{num_completed}/%{num_all} completed)." complete_task_html: "%{user} completed task %{my_module}." uncomplete_task_html: "%{user} uncompleted task %{my_module}." - assign_repository_records_html: "%{user} assigned inventory item(s) %{record_names} from inventory %{repository} to task %{my_module}." - unassign_repository_records_html: "%{user} unassigned inventory item(s) %{record_names} from inventory %{repository} to task %{my_module}." + assign_repository_record_html: "%{user} assigned inventory item(s) %{record_names} from inventory %{repository} to task %{my_module}." + unassign_repository_record_html: "%{user} unassigned inventory item(s) %{record_names} from inventory %{repository} to task %{my_module}." assign_user_to_project_html: "%{user} assigned user %{user_target} with user role %{role} to project %{project}." unassign_user_from_project_html: "%{user} removed user %{user_target} with user role %{role} from project %{project}." change_user_role_on_project_html: "%{user} changed %{user_target}'s role on project %{project} to %{role}." diff --git a/spec/controllers/experiments_controller_spec.rb b/spec/controllers/experiments_controller_spec.rb index cf869c3c2..3ee3e6182 100644 --- a/spec/controllers/experiments_controller_spec.rb +++ b/spec/controllers/experiments_controller_spec.rb @@ -87,8 +87,7 @@ describe ExperimentsController, type: :controller do describe '#archive' do let(:params) do { id: experiment.id, - experiment: { name: 'test experiment A1', - description: 'test description one' } } + experiment: { archived: false } } end it 'calls create activity service' do expect(Activities::CreateActivityService).to receive(:call) diff --git a/spec/controllers/project_comments_controller_spec.rb b/spec/controllers/project_comments_controller_spec.rb index 121b9491d..17b93543b 100644 --- a/spec/controllers/project_comments_controller_spec.rb +++ b/spec/controllers/project_comments_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ProjectCommentsController, type: :controller do login_user - let(:user) { User.first } + let(:user) { subject.current_user } let(:team) { create :team, created_by: user } let(:user_team) { create :user_team, team: team, user: user } let(:user_project) { create :user_project, :owner, user: user } diff --git a/spec/controllers/reports_controller_spec.rb b/spec/controllers/reports_controller_spec.rb index 515e78faa..8cc3cf06a 100644 --- a/spec/controllers/reports_controller_spec.rb +++ b/spec/controllers/reports_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ReportsController, type: :controller do login_user - let(:user) { User.first } + let(:user) { subject.current_user } let!(:team) { create :team, created_by: user } let!(:user_team) { create :user_team, team: team, user: user } let(:user_project) { create :user_project, :owner, user: user } diff --git a/spec/controllers/repository_list_items_controller_spec.rb b/spec/controllers/repository_list_items_controller_spec.rb index e28fe2377..45e09549a 100644 --- a/spec/controllers/repository_list_items_controller_spec.rb +++ b/spec/controllers/repository_list_items_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe RepositoryListItemsController, type: :controller do login_user render_views - let(:user) { User.first } + let(:user) { subject.current_user } let!(:team) { create :team, created_by: user } let!(:user_team) { create :user_team, team: team, user: user } let!(:repository) { create :repository, team: team, created_by: user } diff --git a/spec/controllers/result_assets_controller_spec.rb b/spec/controllers/result_assets_controller_spec.rb index 0748675a4..a04fb1766 100644 --- a/spec/controllers/result_assets_controller_spec.rb +++ b/spec/controllers/result_assets_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ResultAssetsController, type: :controller do login_user - let(:user) { User.first } + let(:user) { subject.current_user } let!(:team) { create :team, :with_members } let!(:user_project) { create :user_project, :owner, user: user } let(:project) do diff --git a/spec/controllers/result_comments_controller_spec.rb b/spec/controllers/result_comments_controller_spec.rb index 339b8ba19..a98853cd9 100644 --- a/spec/controllers/result_comments_controller_spec.rb +++ b/spec/controllers/result_comments_controller_spec.rb @@ -5,8 +5,8 @@ require 'rails_helper' describe ResultCommentsController, type: :controller do login_user - let(:user) { User.first } - let!(:team) { create :team, :with_members } + let(:user) { subject.current_user } + let!(:team) { create :team, created_by: user, users: [user] } let!(:user_project) { create :user_project, :owner, user: user } let(:project) do create :project, team: team, user_projects: [user_project] diff --git a/spec/controllers/result_tables_controller_spec.rb b/spec/controllers/result_tables_controller_spec.rb index 4675255d2..bd559d344 100644 --- a/spec/controllers/result_tables_controller_spec.rb +++ b/spec/controllers/result_tables_controller_spec.rb @@ -5,8 +5,8 @@ require 'rails_helper' describe ResultTablesController, type: :controller do login_user - let(:user) { User.first } - let!(:team) { create :team, :with_members } + let(:user) { subject.current_user } + let!(:team) { create :team, created_by: user, users: [user] } let!(:user_project) { create :user_project, :owner, user: user } let(:project) do create :project, team: team, user_projects: [user_project] diff --git a/spec/controllers/result_texts_controller_spec.rb b/spec/controllers/result_texts_controller_spec.rb index 761981403..8fd6da5fa 100644 --- a/spec/controllers/result_texts_controller_spec.rb +++ b/spec/controllers/result_texts_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ResultTextsController, type: :controller do login_user - let(:user) { User.first } + let(:user) { subject.current_user } let!(:team) { create :team, :with_members } let!(:user_project) { create :user_project, :owner, user: user } let(:project) do diff --git a/spec/controllers/results_controller_spec.rb b/spec/controllers/results_controller_spec.rb index d0e39f5f3..418682d0b 100644 --- a/spec/controllers/results_controller_spec.rb +++ b/spec/controllers/results_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ResultsController, type: :controller do login_user - let(:user) { User.first } + let(:user) { subject.current_user } let!(:team) { create :team, :with_members } let!(:user_project) { create :user_project, :owner, user: user } let(:project) do diff --git a/spec/controllers/system_notifications_controller_spec.rb b/spec/controllers/system_notifications_controller_spec.rb index 9c17f92ea..6e55ed18c 100644 --- a/spec/controllers/system_notifications_controller_spec.rb +++ b/spec/controllers/system_notifications_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe SystemNotificationsController, type: :controller do login_user render_views - let(:user) { User.first } + let(:user) { subject.current_user } describe 'Methods' do let(:notifcation_one) { create :system_notification } diff --git a/spec/controllers/user_projects_controller_spec.rb b/spec/controllers/user_projects_controller_spec.rb index fe409ff46..fe285774c 100644 --- a/spec/controllers/user_projects_controller_spec.rb +++ b/spec/controllers/user_projects_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe UserProjectsController, type: :controller do login_user - let(:user) { User.first } + let(:user) { subject.current_user } let(:user_two) { create :user } let(:target_user) { create :user } let!(:team) { create :team, created_by: user } diff --git a/spec/factories/result_comment.rb b/spec/factories/result_comments.rb similarity index 81% rename from spec/factories/result_comment.rb rename to spec/factories/result_comments.rb index a49246425..c483edd5c 100644 --- a/spec/factories/result_comment.rb +++ b/spec/factories/result_comments.rb @@ -3,7 +3,7 @@ FactoryBot.define do factory :result_comment do user + result message { Faker::Lorem.sentence } - result { create(:result) } end end diff --git a/spec/factories/result_table.rb b/spec/factories/result_table.rb index 759ed3b0a..2a055e772 100644 --- a/spec/factories/result_table.rb +++ b/spec/factories/result_table.rb @@ -2,7 +2,7 @@ FactoryBot.define do factory :result_table do - table { create(:table) } - result { create(:result) } + table + result end end