diff --git a/spec/controllers/experiments_controller_sepc.rb b/spec/controllers/experiments_controller_spec.rb similarity index 80% rename from spec/controllers/experiments_controller_sepc.rb rename to spec/controllers/experiments_controller_spec.rb index 20cd531a0..98815257b 100644 --- a/spec/controllers/experiments_controller_sepc.rb +++ b/spec/controllers/experiments_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ExperimentsController, type: :controller do login_user - describe '#update' do + describe 'PUT update' do let!(:user) { controller.current_user } let!(:team) { create :team, created_by: user, users: [user] } let!(:project) { create :project, team: team } @@ -13,6 +13,7 @@ describe ExperimentsController, type: :controller do create :user_project, :owner, user: user, project: project end let(:experiment) { create :experiment, project: project } + let(:action) { put :update, params: params } context 'when editing experiment' do let(:params) do @@ -27,7 +28,12 @@ describe ExperimentsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :edit_experiment))) - put :update, params: params + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end @@ -40,7 +46,7 @@ describe ExperimentsController, type: :controller do project: project end - let(:archived_params) do + let(:params) do { id: archived_experiment.id, experiment: { archived: false } @@ -52,7 +58,12 @@ describe ExperimentsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :restore_experiment))) - put :update, params: archived_params + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end end diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 52ef1a21a..9fe134e77 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -108,6 +108,7 @@ describe ProjectsController, type: :controller do { project: { name: 'test project A1', team_id: team.id, visibility: 'visible', archived: false } } end + let(:action) { post :create, params: params, format: :json } it 'returns success response, then unprocessable_entity on second run' do get :create, params: params, format: :json @@ -118,10 +119,17 @@ describe ProjectsController, type: :controller do expect(response.content_type).to eq 'application/json' end - it 'never calls create activity service' do - expect(Activities::CreateActivityService).to receive(:call) + it 'calls create activity for creating project' do + expect(Activities::CreateActivityService) + .to(receive(:call) + .with(hash_including(activity_type: :create_project))) - post :create, params: params, format: :json + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end end diff --git a/spec/controllers/protocols_controller_spec.rb b/spec/controllers/protocols_controller_spec.rb index 7e9d07d45..9e688fb76 100644 --- a/spec/controllers/protocols_controller_spec.rb +++ b/spec/controllers/protocols_controller_spec.rb @@ -10,6 +10,7 @@ describe ProtocolsController, type: :controller do let!(:user_team) { create :user_team, :admin, user: user, team: team } describe 'POST create' do + let(:action) { post :create, params: params, format: :json } let(:params) do { protocol: { @@ -24,11 +25,11 @@ describe ProtocolsController, type: :controller do .with(hash_including(activity_type: :create_protocol_in_repository))) - post :create, params: params, format: :json + action end it 'adds activity in DB' do - expect { post :create, params: params, format: :json } + expect { action } .to(change { Activity.count }) end end diff --git a/spec/controllers/repository_columns_controller_sepc.rb b/spec/controllers/repository_columns_controller_sepc.rb index 6d10df069..518e79c27 100644 --- a/spec/controllers/repository_columns_controller_sepc.rb +++ b/spec/controllers/repository_columns_controller_sepc.rb @@ -14,6 +14,7 @@ describe RepositoryColumnsController, type: :controller do end describe 'POST create' do + let(:action) { post :create, params: params, format: :json } let(:params) do { repository_id: repository.id, @@ -29,11 +30,17 @@ describe RepositoryColumnsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :create_column_inventory))) - post :create, params: params, format: :json + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end describe 'PUT update' do + let(:action) { put :update, params: params, format: :json } let(:params) do { id: repository_column.id, @@ -49,11 +56,17 @@ describe RepositoryColumnsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :edit_column_inventory))) - post :update, params: params, format: :json + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end describe 'DELETE destroy' do + let(:action) { delete :destroy, params: params, format: :json } let(:params) do { repository_id: repository.id, id: repository_column.id } end @@ -63,7 +76,12 @@ describe RepositoryColumnsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :delete_column_inventory))) - delete :destroy, params: params, format: :json + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end end diff --git a/spec/controllers/repository_rows_controller_spec.rb b/spec/controllers/repository_rows_controller_spec.rb index 82e45dc2b..e74936639 100644 --- a/spec/controllers/repository_rows_controller_spec.rb +++ b/spec/controllers/repository_rows_controller_spec.rb @@ -127,6 +127,7 @@ describe RepositoryRowsController, type: :controller do end describe 'POST create' do + let(:action) { post :create, params: params, format: :json } let(:params) do { repository_id: repository.id, repository_row_name: 'row_name' } end @@ -136,11 +137,17 @@ describe RepositoryRowsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :create_item_inventory))) - post :create, params: params, format: :json + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end describe 'PUT update' do + let(:action) { put :update, params: params, format: :json } let(:params) do { repository_id: repository.id, @@ -154,11 +161,17 @@ describe RepositoryRowsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :edit_item_inventory))) - put :update, params: params, format: :json + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end describe 'POST delete_records' do + let(:action) { post :delete_records, params: params, format: :json } let(:params) do { repository_id: repository.id, selected_rows: [repository_row.id] } end @@ -168,7 +181,12 @@ describe RepositoryRowsController, type: :controller do .to(receive(:call) .with(hash_including(activity_type: :delete_item_inventory))) - post :delete_records, params: params, format: :json + action + end + + it 'adds activity in DB' do + expect { action } + .to(change { Activity.count }) end end end diff --git a/spec/controllers/user_teams_controller_spec.rb b/spec/controllers/user_teams_controller_spec.rb index bc736ba9c..2574df546 100644 --- a/spec/controllers/user_teams_controller_spec.rb +++ b/spec/controllers/user_teams_controller_spec.rb @@ -12,10 +12,10 @@ describe Users::Settings::UserTeamsController, type: :controller do let!(:another_user_team) do create :user_team, :normal_user, user: another_user, team: team end - describe 'POST invite_users' do + describe 'DELETE destroy' do let(:params) do { - id: another_user.id + id: another_user_team.id } end let(:action) { delete :destroy, params: params, format: :json } @@ -44,7 +44,7 @@ describe Users::Settings::UserTeamsController, type: :controller do describe 'PUT update' do let(:params) do { - id: another_user.id, + id: another_user_team.id, user_team: { role: 'admin' } diff --git a/spec/factories/experiments.rb b/spec/factories/experiments.rb index 585fc4d53..8df878bf5 100644 --- a/spec/factories/experiments.rb +++ b/spec/factories/experiments.rb @@ -10,7 +10,7 @@ FactoryBot.define do created_by { user } last_modified_by { user } project { create :project, created_by: user } - trait :experiment_with_tasks do + trait :with_tasks do after(:create) do |e| create_list :my_module, 3, :with_tag, experiment: e end diff --git a/spec/models/experiment_spec.rb b/spec/models/experiment_spec.rb index 72aa40d1e..54c13ee3b 100644 --- a/spec/models/experiment_spec.rb +++ b/spec/models/experiment_spec.rb @@ -86,7 +86,7 @@ describe Experiment, type: :model do end describe '.update_canvas' do - let(:experiment) { create :experiment, :experiment_with_tasks } + let(:experiment) { create :experiment, :with_tasks } let(:user) { experiment.created_by } context 'when renaming tasks' do diff --git a/spec/models/repository_asset_value_spec.rb b/spec/models/repository_asset_value_spec.rb index 53902ed64..c7ed57c20 100644 --- a/spec/models/repository_asset_value_spec.rb +++ b/spec/models/repository_asset_value_spec.rb @@ -28,12 +28,12 @@ describe RepositoryAssetValue, type: :model do describe '#data' do let!(:repository) { create :repository } + let!(:repository_row) { create :repository_row, repository: repository } let!(:repository_column) do create :repository_column, - name: 'My column', - data_type: :RepositoryAssetValue + data_type: :RepositoryAssetValue, + repository: repository end - let!(:repository_row) { create :repository_row, name: 'My row' } it 'returns the asset' do asset = create :asset, file_file_name: 'my file' diff --git a/spec/models/repository_column_spec.rb b/spec/models/repository_column_spec.rb index ad11fe6cc..c58091b4d 100644 --- a/spec/models/repository_column_spec.rb +++ b/spec/models/repository_column_spec.rb @@ -31,10 +31,10 @@ describe RepositoryColumn, type: :model do should validate_length_of(:name).is_at_most(Constants::NAME_MAX_LENGTH) end it 'have uniq name scoped to repository' do - create :repository_column, name: 'Repo One' - column_two = build :repository_column, name: 'Repo One' + r = create :repository_column, name: 'Repo One' + ct = build :repository_column, name: 'Repo One', repository: r.repository - expect(column_two).to_not be_valid + expect(ct).to_not be_valid end end end diff --git a/spec/models/repository_list_value_spec.rb b/spec/models/repository_list_value_spec.rb index fe6ca3228..3084d6c56 100644 --- a/spec/models/repository_list_value_spec.rb +++ b/spec/models/repository_list_value_spec.rb @@ -21,10 +21,14 @@ RSpec.describe RepositoryListValue, type: :model do describe '#formatted' do let!(:repository) { create :repository } let!(:repository_column) do - create :repository_column, name: 'My column', - data_type: :RepositoryListValue + create :repository_column, + name: 'My column', + data_type: :RepositoryListValue, + repository: repository + end + let!(:repository_row) do + create :repository_row, name: 'My row', repository: repository end - let!(:repository_row) { create :repository_row, name: 'My row' } let!(:repository_list_value) do build :repository_list_value, repository_cell_attributes: { repository_column: repository_column, @@ -46,10 +50,14 @@ RSpec.describe RepositoryListValue, type: :model do describe '#data' do let!(:repository) { create :repository } let!(:repository_column) do - create :repository_column, name: 'My column', - data_type: :RepositoryListValue + create :repository_column, + name: 'My column', + data_type: :RepositoryListValue, + repository: repository + end + let!(:repository_row) do + create :repository_row, name: 'My row', repository: repository end - let!(:repository_row) { create :repository_row, name: 'My row' } let!(:repository_list_value) do build :repository_list_value, repository_cell_attributes: { repository_column: repository_column, diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 7c1063ee1..0c38f71f1 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -28,16 +28,17 @@ describe Repository, type: :model do it do should validate_length_of(:name).is_at_most(Constants::NAME_MAX_LENGTH) end + let(:team) { create :team } it 'should have uniq name scoped to team' do - create :repository, name: 'Repository One' - repo = build :repository, name: 'Repository One' + create :repository, name: 'Repository One', team: team + repo = build :repository, name: 'Repository One', team: team expect(repo).to_not be_valid end it 'should have uniq name scoped to team calse insensitive' do - create :repository, name: 'Repository One' - repo = build :repository, name: 'REPOSITORY ONE' + create :repository, name: 'Repository One', team: team + repo = build :repository, name: 'REPOSITORY ONE', team: team expect(repo).to_not be_valid end end diff --git a/spec/services/client_api/user_team_service_spec.rb b/spec/services/client_api/user_team_service_spec.rb index 7ffd02150..81ca724f0 100644 --- a/spec/services/client_api/user_team_service_spec.rb +++ b/spec/services/client_api/user_team_service_spec.rb @@ -4,7 +4,7 @@ describe ClientApi::UserTeamService do let(:team_one) { create :team } let(:user_one) { create :user, email: Faker::Internet.email } let(:user_two) { create :user, email: Faker::Internet.email } - let(:user_team) { create :user_team, user: user_one, team: team_one } + let(:user_team) { create :user_team, :admin, user: user_one, team: team_one } it 'should raise ClientApi::CustomUserTeamError if user is not assigned' do expect { @@ -42,7 +42,7 @@ describe ClientApi::UserTeamService do end it 'should destroy the user_team relation' do - create :user_team, team: team_one, user: user_one + create :user_team, :admin, team: team_one, user: user_one new_user_team = create :user_team, team: team_one, user: user_two ut_service = ClientApi::UserTeamService.new( team_id: team_one.id, @@ -55,7 +55,7 @@ describe ClientApi::UserTeamService do it 'should assign a new owner to the team' do user_team_one = create :user_team, team: team_one, user: user_one - create :user_team, team: team_one, user: user_two + create :user_team, :admin, team: team_one, user: user_two ut_service = ClientApi::UserTeamService.new( team_id: team_one.id, user_team_id: user_team_one.id, @@ -95,7 +95,7 @@ describe ClientApi::UserTeamService do it 'should raise ClientApi::CustomUserTeamError if is the last ' \ 'admin on the team' do - user_team = create :user_team, team: team_one, user: user_one + user_team = create :user_team, :admin, team: team_one, user: user_one ut_service = ClientApi::UserTeamService.new( user: user_one, team_id: team_one.id, diff --git a/spec/services/experiments/copy_experiment_as_template_service_sepc.rb b/spec/services/experiments/copy_experiment_as_template_service_sepc.rb index b17874250..8865e44a4 100644 --- a/spec/services/experiments/copy_experiment_as_template_service_sepc.rb +++ b/spec/services/experiments/copy_experiment_as_template_service_sepc.rb @@ -13,7 +13,7 @@ describe Experiments::CopyExperimentAsTemplateService do create :project, team: team, user_projects: [user_project] end let(:experiment) do - create :experiment_with_tasks, name: 'MyExp', project: project + create :experiment, :with_tasks, name: 'MyExp', project: project end let(:user) { create :user } let(:service_call) do diff --git a/spec/services/experiments/generate_workflow_image_service_spec.rb b/spec/services/experiments/generate_workflow_image_service_spec.rb index 62465d7dd..5129ff946 100644 --- a/spec/services/experiments/generate_workflow_image_service_spec.rb +++ b/spec/services/experiments/generate_workflow_image_service_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Experiments::GenerateWorkflowImageService do - let(:experiment) { create :experiment_with_tasks } + let(:experiment) { create :experiment, :with_tasks } let(:params) { { experiment_id: experiment.id } } context 'when succeed' do diff --git a/spec/services/experiments/move_to_project_service_spec.rb b/spec/services/experiments/move_to_project_service_spec.rb index 67d8e33a9..c78f25359 100644 --- a/spec/services/experiments/move_to_project_service_spec.rb +++ b/spec/services/experiments/move_to_project_service_spec.rb @@ -11,7 +11,7 @@ describe Experiments::MoveToProjectService do create :project, team: team, user_projects: [user_project2] end let(:experiment) do - create :experiment_with_tasks, name: 'MyExp', project: project + create :experiment, :with_tasks, name: 'MyExp', project: project end let(:user) { create :user } let(:user_project2) { create :user_project, :normal_user, user: user } diff --git a/spec/services/repository_datatable_service_spec.rb b/spec/services/repository_datatable_service_spec.rb index f0f162251..b717c5dae 100644 --- a/spec/services/repository_datatable_service_spec.rb +++ b/spec/services/repository_datatable_service_spec.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'rails_helper' + describe RepositoryDatatableService do let!(:team) { create :team } let!(:user) { create :user, email: 'user_one@asdf.com' } @@ -9,8 +11,10 @@ describe RepositoryDatatableService do team: team end let!(:repository_column) do - create :repository_column, name: 'My column', - data_type: :RepositoryListValue + create :repository_column, + name: 'My column', + data_type: :RepositoryListValue, + repository: repository end let!(:repository_state) do RepositoryTableStateService.new(user, repository).create_default_state