mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-17 22:42:22 +08:00
Add activities for exporting Projects, Inventory items
This commit is contained in:
parent
e7b57aa4f7
commit
b6a8556601
7 changed files with 125 additions and 16 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
36
spec/controllers/teams_controller_spec.rb
Normal file
36
spec/controllers/teams_controller_spec.rb
Normal 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
|
||||
|
|
@ -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
|
||||
9
spec/factories/repository_cells.rb
Normal file
9
spec/factories/repository_cells.rb
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :repository_cell do
|
||||
repository_row
|
||||
repository_column
|
||||
value 'RepositoryTextValue'
|
||||
end
|
||||
end
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue