Add activities for exporting Projects, Inventory items

This commit is contained in:
Urban Rotnik 2019-03-12 08:49:56 +01:00
parent e7b57aa4f7
commit b6a8556601
7 changed files with 125 additions and 16 deletions

View file

@ -272,6 +272,15 @@ class RepositoriesController < ApplicationController
def export_repository
if params[:row_ids] && params[:header_ids]
RepositoryZipExport.generate_zip(params, @repository, current_user)
Activities::CreateActivityService
.call(activity_type: :export_inventory_items,
owner: current_user,
subject: current_team,
team: current_team,
message_items: {
repository: @repository.id
})
else
flash[:alert] = t('zip_export.export_error')
end

View file

@ -233,6 +233,16 @@ class TeamsController < ApplicationController
generate_export_projects_zip
Activities::CreateActivityService
.call(activity_type: :export_projects,
owner: current_user,
subject: @team,
team: @team,
message_items: {
team: @team.id,
projects: @exp_projects.map(&:name).join(', ')
})
render json: {
flash: t('projects.export_projects.success_flash')
}, status: :ok

View file

@ -8,6 +8,7 @@ describe RepositoriesController, type: :controller do
let!(:user) { controller.current_user }
let!(:team) { create :team, created_by: user }
let!(:user_team) { create :user_team, :admin, user: user, team: team }
let(:action) { post :create, params: params, format: :json }
describe 'POST create' do
let(:params) { { repository: { name: 'My Repository' } } }
@ -17,20 +18,31 @@ describe RepositoriesController, type: :controller do
.to(receive(:call)
.with(hash_including(activity_type: :create_inventory)))
post :create, 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(:repository) { create :repository, team: team }
let(:params) { { id: repository.id, team_id: team.id } }
let(:action) { delete :destroy, params: params }
it 'calls create activity for unarchiving experiment' do
expect(Activities::CreateActivityService)
.to(receive(:call)
.with(hash_including(activity_type: :delete_inventory)))
delete :destroy, params: params
action
end
it 'adds activity in DB' do
expect { action }
.to(change { Activity.count })
end
end
@ -39,13 +51,53 @@ describe RepositoriesController, type: :controller do
let(:params) do
{ id: repository.id, team_id: team.id, repository: { name: 'new_name' } }
end
let(:action) { put :update, params: params, format: :json }
it 'calls create activity for unarchiving experiment' do
expect(Activities::CreateActivityService)
.to(receive(:call)
.with(hash_including(activity_type: :rename_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 export_repository' do
let(:repository) { create :repository, team: team }
let(:repository_row) { create :repository_row, repository: repository }
let(:repository_column) do
create :repository_column, repository: repository
end
let(:repository_cell) do
create :repository_cell,
repository_row: repository_row,
repository_column: repository_column
end
let(:params) do
{
id: repository.id,
header_ids: [repository_column.id],
row_ids: [repository_row.id]
}
end
let(:action) { post :export_repository, params: params, format: :json }
it 'calls create activity for unarchiving experiment' do
expect(Activities::CreateActivityService)
.to(receive(:call)
.with(hash_including(activity_type: :export_inventory_items)))
action
end
it 'adds activity in DB' do
expect { action }
.to(change { Activity.count })
end
end
end

View file

@ -0,0 +1,36 @@
# frozen_string_literal: true
require 'rails_helper'
describe TeamsController, type: :controller do
login_user
let(:user) { subject.current_user }
let(:team) { create :team, created_by: user }
let!(:user_team) { create :user_team, :admin, user: user, team: team }
describe 'POST export_projects' do
let!(:first_project) { create :project, team: team }
let!(:second_project) { create :project, team: team }
let(:params) do
{
id: team.id,
project_ids: [first_project.id, second_project.id]
}
end
let(:action) { post :export_projects, params: params, format: :json }
it 'calls create activity for inviting user' do
expect(Activities::CreateActivityService)
.to(receive(:call)
.with(hash_including(activity_type: :export_projects)))
action
end
it 'adds activity in DB' do
expect { action }
.to(change { Activity.count })
end
end
end

View file

@ -1,9 +0,0 @@
FactoryBot.define do
factory :repository_cell do
repository_row { RepositoryRow.first || create(:repository_row) }
repository_column do
RepositoryColumn.first || create(:repository_column)
end
value 'RepositoryTextValue'
end
end

View file

@ -0,0 +1,9 @@
# frozen_string_literal: true
FactoryBot.define do
factory :repository_cell do
repository_row
repository_column
value 'RepositoryTextValue'
end
end

View file

@ -1,8 +1,10 @@
# frozen_string_literal: true
FactoryBot.define do
factory :repository_row do
name 'Custom row'
created_by { User.first || association(:user) }
repository { Repository.first || create(:repository) }
last_modified_by { User.first || association(:user) }
sequence(:name) { |n| "My row-#{n}" }
created_by { create :user }
repository
last_modified_by { created_by }
end
end