mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-22 11:46:05 +08:00
Add DeleteStatusColumnService service
This commit is contained in:
parent
5930bdd794
commit
de2ee66dd4
2 changed files with 72 additions and 1 deletions
|
@ -7,6 +7,16 @@ module RepositoryColumns
|
||||||
@column = column
|
@column = column
|
||||||
end
|
end
|
||||||
|
|
||||||
def call; end
|
def call
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
log_activity(:delete_column_inventory)
|
||||||
|
@column.destroy!
|
||||||
|
rescue ActiveRecord::RecordNotDestroyed
|
||||||
|
errors[:repository_column] = 'record cannot be destroyed'
|
||||||
|
raise ActiveRecord::Rollback
|
||||||
|
end
|
||||||
|
|
||||||
|
self
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
describe RepositoryColumns::DeleteStatusColumnService do
|
||||||
|
let(:user) { create :user }
|
||||||
|
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||||
|
let(:team) { create :team }
|
||||||
|
let(:repository) { create :repository, team: team }
|
||||||
|
let(:repository_column) { create :repository_column, :status_type }
|
||||||
|
|
||||||
|
context 'when deletes status column' do
|
||||||
|
let(:service_call) do
|
||||||
|
RepositoryColumns::DeleteStatusColumnService.call(user: user, team: team, column: repository_column)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'removes RepositoryColumn record' do
|
||||||
|
repository_column
|
||||||
|
|
||||||
|
expect { service_call }.to change { RepositoryColumn.count }.by(-1)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'adds Activity record' do
|
||||||
|
expect { service_call }.to(change { Activity.count }.by(1))
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when RepositoryColumn has RepositoryStatusItems' do
|
||||||
|
before do
|
||||||
|
3.times do
|
||||||
|
create(:repository_status_item, repository: repository, repository_column: repository_column)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'removes RepositoryStatusItem records as well' do
|
||||||
|
expect { service_call }.to(change { RepositoryStatusItem.count }.by(-3))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when column cannot be deleted' do
|
||||||
|
let(:service_call) do
|
||||||
|
RepositoryColumns::DeleteStatusColumnService.call(user: user, team: team, column: repository_column)
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
allow_any_instance_of(RepositoryColumn).to receive(:destroy!).and_raise(ActiveRecord::RecordNotDestroyed)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns errors' do
|
||||||
|
expect(service_call.errors).to have_key(:repository_column)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns succeed false' do
|
||||||
|
expect(service_call.succeed?).to be_falsey
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not add Activity record' do
|
||||||
|
expect { service_call }.not_to(change { Activity.count })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue