mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 06:35:56 +08:00
Clean up controllers for manage repository columns
This commit is contained in:
parent
49bfb603c8
commit
2727614603
|
@ -3,9 +3,9 @@
|
|||
module RepositoryColumns
|
||||
class AssetColumnsController < BaseColumnsController
|
||||
include InputSanitizeHelper
|
||||
before_action :load_column, only: %i(update destroy)
|
||||
before_action :load_column, only: :update
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions, only: %i(update destroy)
|
||||
before_action :check_manage_permissions, only: :update
|
||||
|
||||
def create
|
||||
service = RepositoryColumns::CreateColumnService
|
||||
|
@ -34,17 +34,6 @@ module RepositoryColumns
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
service = RepositoryColumns::DeleteColumnService
|
||||
.call(user: current_user, team: current_team, column: @repository_column)
|
||||
|
||||
if service.succeed?
|
||||
render json: {}, status: :ok
|
||||
else
|
||||
render json: service.errors, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def repository_column_params
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
module RepositoryColumns
|
||||
class ChecklistColumnsController < BaseColumnsController
|
||||
before_action :load_column, only: %i(update destroy items)
|
||||
before_action :load_column, only: %i(update items)
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions, only: %i(update destroy)
|
||||
before_action :check_manage_permissions, only: :update
|
||||
helper_method :delimiters
|
||||
|
||||
def create
|
||||
|
@ -34,17 +34,6 @@ module RepositoryColumns
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
service = RepositoryColumns::DeleteColumnService
|
||||
.call(user: current_user, team: current_team, column: @repository_column)
|
||||
|
||||
if service.succeed?
|
||||
render json: {}, status: :ok
|
||||
else
|
||||
render json: service.errors, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def items
|
||||
column_checklist_items = @repository_column.repository_checklist_items
|
||||
.where('data ILIKE ?',
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
module RepositoryColumns
|
||||
class DateTimeColumnsController < BaseColumnsController
|
||||
include InputSanitizeHelper
|
||||
before_action :load_column, only: %i(update destroy)
|
||||
before_action :load_column, only: :update
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions, only: %i(update destroy)
|
||||
before_action :check_manage_permissions, only: :update
|
||||
|
||||
def create
|
||||
service = RepositoryColumns::CreateColumnService
|
||||
|
@ -34,17 +34,6 @@ module RepositoryColumns
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
service = RepositoryColumns::DeleteColumnService
|
||||
.call(user: current_user, team: current_team, column: @repository_column)
|
||||
|
||||
if service.succeed?
|
||||
render json: {}, status: :ok
|
||||
else
|
||||
render json: service.errors, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def repository_column_params
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
module RepositoryColumns
|
||||
class ListColumnsController < BaseColumnsController
|
||||
before_action :load_column, only: %i(update destroy items)
|
||||
before_action :load_column, only: %i(update items)
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions, only: %i(update destroy)
|
||||
before_action :check_manage_permissions, only: :update
|
||||
helper_method :delimiters
|
||||
|
||||
def create
|
||||
|
@ -34,17 +34,6 @@ module RepositoryColumns
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
service = RepositoryColumns::DeleteColumnService
|
||||
.call(user: current_user, team: current_team, column: @repository_column)
|
||||
|
||||
if service.succeed?
|
||||
render json: {}, status: :ok
|
||||
else
|
||||
render json: service.errors, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def items
|
||||
column_list_items = @repository_column.repository_list_items
|
||||
.where('data ILIKE ?',
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
module RepositoryColumns
|
||||
class NumberColumnsController < BaseColumnsController
|
||||
include InputSanitizeHelper
|
||||
before_action :load_column, only: %i(update destroy)
|
||||
before_action :load_column, only: :update
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions, only: %i(update destroy)
|
||||
before_action :check_manage_permissions, only: :update
|
||||
|
||||
def create
|
||||
service = RepositoryColumns::CreateColumnService
|
||||
|
@ -34,17 +34,6 @@ module RepositoryColumns
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
service = RepositoryColumns::DeleteColumnService
|
||||
.call(user: current_user, team: current_team, column: @repository_column)
|
||||
|
||||
if service.succeed?
|
||||
render json: {}, status: :ok
|
||||
else
|
||||
render json: service.errors, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def repository_column_params
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
module RepositoryColumns
|
||||
class StatusColumnsController < BaseColumnsController
|
||||
include InputSanitizeHelper
|
||||
before_action :load_column, only: %i(update destroy items)
|
||||
before_action :load_column, only: %i(update items)
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions, only: %i(update destroy)
|
||||
before_action :check_manage_permissions, only: :update
|
||||
|
||||
def create
|
||||
service = RepositoryColumns::CreateColumnService
|
||||
|
@ -34,17 +34,6 @@ module RepositoryColumns
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
service = RepositoryColumns::DeleteColumnService
|
||||
.call(user: current_user, team: current_team, column: @repository_column)
|
||||
|
||||
if service.succeed?
|
||||
render json: {}, status: :ok
|
||||
else
|
||||
render json: service.errors, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def items
|
||||
column_status_items = @repository_column.repository_status_items
|
||||
.where('status ILIKE ?',
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
module RepositoryColumns
|
||||
class TextColumnsController < BaseColumnsController
|
||||
include InputSanitizeHelper
|
||||
before_action :load_column, only: %i(update destroy)
|
||||
before_action :load_column, only: :update
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions, only: %i(update destroy)
|
||||
before_action :check_manage_permissions, only: :update
|
||||
|
||||
def create
|
||||
service = RepositoryColumns::CreateColumnService
|
||||
|
@ -34,17 +34,6 @@ module RepositoryColumns
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
service = RepositoryColumns::DeleteColumnService
|
||||
.call(user: current_user, team: current_team, column: @repository_column)
|
||||
|
||||
if service.succeed?
|
||||
render json: {}, status: :ok
|
||||
else
|
||||
render json: service.errors, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def repository_column_params
|
||||
|
|
|
@ -9,7 +9,6 @@ class RepositoryColumnsController < ApplicationController
|
|||
except: ACTIONS
|
||||
before_action :load_vars_nested,
|
||||
only: ACTIONS
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_manage_permissions,
|
||||
except: ACTIONS
|
||||
before_action :load_asset_type_columns, only: :available_asset_type_columns
|
||||
|
@ -36,85 +35,10 @@ class RepositoryColumnsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@repository_column = RepositoryColumn.new(repository_column_params)
|
||||
@repository_column.repository = @repository
|
||||
@repository_column.created_by = current_user
|
||||
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
if @repository_column.save
|
||||
log_activity(:create_column_inventory)
|
||||
|
||||
if generate_repository_list_items(params[:list_items])
|
||||
render json: {
|
||||
id: @repository_column.id,
|
||||
name: escape_input(@repository_column.name),
|
||||
message: t('libraries.repository_columns.create.success_flash',
|
||||
name: @repository_column.name),
|
||||
edit_url:
|
||||
edit_repository_repository_column_path(@repository,
|
||||
@repository_column),
|
||||
update_url:
|
||||
repository_repository_column_path(@repository,
|
||||
@repository_column),
|
||||
destroy_html_url:
|
||||
repository_columns_destroy_html_path(@repository,
|
||||
@repository_column)
|
||||
},
|
||||
status: :ok
|
||||
else
|
||||
render json: {
|
||||
message: {
|
||||
repository_list_items:
|
||||
t('libraries.repository_columns.repository_list_items_limit',
|
||||
limit: Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN)
|
||||
}
|
||||
}, status: :unprocessable_entity
|
||||
end
|
||||
else
|
||||
render json: { message: @repository_column.errors.full_messages },
|
||||
status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
def edit_html
|
||||
render json: { html: render_to_string(partial: 'repository_columns/manage_column_modal_content.html.erb') }
|
||||
end
|
||||
|
||||
def update
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
@repository_column.update(repository_column_params)
|
||||
if @repository_column.save
|
||||
log_activity(:edit_column_inventory)
|
||||
|
||||
if update_repository_list_items(params[:list_items])
|
||||
render json: {
|
||||
id: @repository_column.id,
|
||||
name: escape_input(@repository_column.name),
|
||||
message: t('libraries.repository_columns.update.success_flash',
|
||||
name: escape_input(@repository_column.name))
|
||||
}, status: :ok
|
||||
else
|
||||
render json: {
|
||||
message: {
|
||||
repository_list_items:
|
||||
t('libraries.repository_columns.repository_list_items_limit',
|
||||
limit: Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN)
|
||||
}
|
||||
}, status: :unprocessable_entity
|
||||
end
|
||||
else
|
||||
render json: { message: @repository_column.errors.full_messages },
|
||||
status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def destroy_html
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
|
@ -189,18 +113,10 @@ class RepositoryColumnsController < ApplicationController
|
|||
@asset_columns = load_asset_columns(search_params[:q])
|
||||
end
|
||||
|
||||
def check_create_permissions
|
||||
render_403 unless can_create_repository_columns?(@repository)
|
||||
end
|
||||
|
||||
def check_manage_permissions
|
||||
render_403 unless can_manage_repository_column?(@repository_column)
|
||||
end
|
||||
|
||||
def repository_column_params
|
||||
params.require(:repository_column).permit(:name, :data_type)
|
||||
end
|
||||
|
||||
def search_params
|
||||
params.permit(:q, :repository_id)
|
||||
end
|
||||
|
@ -218,63 +134,6 @@ class RepositoryColumnsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def generate_repository_list_items(item_names)
|
||||
return true unless @repository_column.data_type == 'RepositoryListValue'
|
||||
column_items = @repository_column.repository_list_items.size
|
||||
success = true
|
||||
item_names.split(',').uniq.each do |name|
|
||||
if column_items >= Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN
|
||||
success = false
|
||||
next
|
||||
end
|
||||
RepositoryListItem.create(
|
||||
repository: @repository,
|
||||
repository_column: @repository_column,
|
||||
data: name,
|
||||
created_by: current_user,
|
||||
last_modified_by: current_user
|
||||
)
|
||||
column_items += 1
|
||||
end
|
||||
success
|
||||
end
|
||||
|
||||
def update_repository_list_items(item_names)
|
||||
return true unless @repository_column.data_type == 'RepositoryListValue'
|
||||
column_items = @repository_column.repository_list_items.size
|
||||
items_list = item_names.split(',').uniq
|
||||
existing = @repository_column.repository_list_items.pluck(:data)
|
||||
existing.each do |name|
|
||||
next if items_list.include? name
|
||||
list_item_id = @repository_column.repository_list_items
|
||||
.find_by_data(name)
|
||||
.destroy
|
||||
.id
|
||||
RepositoryCell.where(
|
||||
'value_type = ? AND value_id = ?',
|
||||
'RepositoryListValue',
|
||||
list_item_id
|
||||
).destroy_all
|
||||
end
|
||||
success = true
|
||||
items_list.each do |name|
|
||||
next if @repository_column.repository_list_items.find_by_data(name)
|
||||
if column_items >= Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN
|
||||
success = false
|
||||
next
|
||||
end
|
||||
RepositoryListItem.create(
|
||||
repository: @repository,
|
||||
repository_column: @repository_column,
|
||||
data: name,
|
||||
created_by: current_user,
|
||||
last_modified_by: current_user
|
||||
)
|
||||
column_items += 1
|
||||
end
|
||||
success
|
||||
end
|
||||
|
||||
def log_activity(type_of)
|
||||
Activities::CreateActivityService
|
||||
.call(activity_type: type_of,
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module RepositoryColumns
|
||||
class DeleteColumnService < RepositoryColumns::ColumnService
|
||||
def initialize(user:, team:, column:)
|
||||
super(user: user, team: team, column_name: nil, repository: column.repository)
|
||||
@column = column
|
||||
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
|
|
@ -36,7 +36,7 @@
|
|||
class="repository-column"
|
||||
id="<%= column.id %>"
|
||||
data-type="<%= column.data_type %>"
|
||||
data-edit-column-url="<%= edit_repository_repository_column_path(repository, column) %>"
|
||||
data-edit-column-url="<%= repository_columns_edit_html_path(repository, column) %>"
|
||||
data-destroy-column-url="<%= repository_columns_destroy_html_path(repository, column) %>"
|
||||
data-editable-row="<%= can_manage_repository_column?(column) %>"
|
||||
<% column.metadata.each do |k, v| %>
|
||||
|
|
|
@ -569,6 +569,9 @@ Rails.application.routes.draw do
|
|||
post 'copy_records',
|
||||
to: 'repository_rows#copy_records',
|
||||
defaults: { format: 'json' }
|
||||
get 'repository_columns/:id/edit_html',
|
||||
to: 'repository_columns#edit_html',
|
||||
as: 'columns_edit_html'
|
||||
get 'repository_columns/:id/destroy_html',
|
||||
to: 'repository_columns#destroy_html',
|
||||
as: 'columns_destroy_html'
|
||||
|
@ -585,29 +588,29 @@ Rails.application.routes.draw do
|
|||
as: 'available_columns',
|
||||
defaults: { format: 'json' }
|
||||
|
||||
resources :repository_columns, only: %i(create edit update destroy)
|
||||
resources :repository_columns, only: :destroy
|
||||
resources :repository_rows, only: %i(create edit update)
|
||||
member do
|
||||
post 'parse_sheet', defaults: { format: 'json' }
|
||||
post 'import_records'
|
||||
end
|
||||
namespace :repository_columns do
|
||||
resources :text_columns, only: %i(create update destroy)
|
||||
resources :number_columns, only: %i(create update destroy)
|
||||
resources :asset_columns, only: %i(create update destroy)
|
||||
resources :date_columns, only: %i(create update destroy)
|
||||
resources :date_time_columns, only: %i(create update destroy)
|
||||
resources :list_columns, only: %i(create update destroy) do
|
||||
resources :text_columns, only: %i(create update)
|
||||
resources :number_columns, only: %i(create update)
|
||||
resources :asset_columns, only: %i(create update)
|
||||
resources :date_columns, only: %i(create update)
|
||||
resources :date_time_columns, only: %i(create update)
|
||||
resources :list_columns, only: %i(create update) do
|
||||
member do
|
||||
get 'items'
|
||||
end
|
||||
end
|
||||
resources :checklist_columns, only: %i(create update destroy) do
|
||||
resources :checklist_columns, only: %i(create update) do
|
||||
member do
|
||||
get 'items'
|
||||
end
|
||||
end
|
||||
resources :status_columns, only: %i(create update destroy) do
|
||||
resources :status_columns, only: %i(create update) do
|
||||
member do
|
||||
get 'items'
|
||||
end
|
||||
|
|
|
@ -161,74 +161,4 @@ RSpec.describe RepositoryColumns::AssetColumnsController, type: :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE repository_status_column, #delete' do
|
||||
let(:action) { delete :destroy, params: params }
|
||||
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: repository_column.id
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
service = double('success_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(true)
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
context 'when column deleted' do
|
||||
it 'respons with status 200' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(200))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column is not found' do
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: -1
|
||||
}
|
||||
end
|
||||
|
||||
it 'respons with status 404' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(404))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user does not have permissions' do
|
||||
before do
|
||||
user_team.role = :guest
|
||||
user_team.save
|
||||
end
|
||||
|
||||
it 'respons with status 403' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(403))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column cannot be deleted fails' do
|
||||
before do
|
||||
service = double('failure_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(false)
|
||||
allow(service).to(receive(:errors)).and_return({})
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
it 'respons with status 422' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(422))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -161,74 +161,4 @@ RSpec.describe RepositoryColumns::ChecklistColumnsController, type: :controller
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE repository_checkbox_column, #delete' do
|
||||
let(:action) { delete :destroy, params: params }
|
||||
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: repository_column.id
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
service = double('success_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(true)
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
context 'when column deleted' do
|
||||
it 'respons with status 200' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(200))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column is not found' do
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: -1
|
||||
}
|
||||
end
|
||||
|
||||
it 'respons with status 404' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(404))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user does not have permissions' do
|
||||
before do
|
||||
user_team.role = :guest
|
||||
user_team.save
|
||||
end
|
||||
|
||||
it 'respons with status 403' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(403))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column cannot be deleted fails' do
|
||||
before do
|
||||
service = double('failure_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(false)
|
||||
allow(service).to(receive(:errors)).and_return({})
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
it 'respons with status 422' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(422))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -162,74 +162,4 @@ RSpec.describe RepositoryColumns::DateTimeColumnsController, type: :controller d
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE repository_date_time_column, #delete' do
|
||||
let(:action) { delete :destroy, params: params }
|
||||
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: repository_column.id
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
service = double('success_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(true)
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
context 'when column deleted' do
|
||||
it 'respons with status 200' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(200))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column is not found' do
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: -1
|
||||
}
|
||||
end
|
||||
|
||||
it 'respons with status 404' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(404))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user does not have permissions' do
|
||||
before do
|
||||
user_team.role = :guest
|
||||
user_team.save
|
||||
end
|
||||
|
||||
it 'respons with status 403' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(403))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column cannot be deleted fails' do
|
||||
before do
|
||||
service = double('failure_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(false)
|
||||
allow(service).to(receive(:errors)).and_return({})
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
it 'respons with status 422' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(422))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -161,74 +161,4 @@ RSpec.describe RepositoryColumns::ListColumnsController, type: :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE repository_list_column, #delete' do
|
||||
let(:action) { delete :destroy, params: params }
|
||||
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: repository_column.id
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
service = double('success_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(true)
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
context 'when column deleted' do
|
||||
it 'respons with status 200' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(200))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column is not found' do
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: -1
|
||||
}
|
||||
end
|
||||
|
||||
it 'respons with status 404' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(404))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user does not have permissions' do
|
||||
before do
|
||||
user_team.role = :guest
|
||||
user_team.save
|
||||
end
|
||||
|
||||
it 'respons with status 403' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(403))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column cannot be deleted fails' do
|
||||
before do
|
||||
service = double('failure_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(false)
|
||||
allow(service).to(receive(:errors)).and_return({})
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
it 'respons with status 422' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(422))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -162,76 +162,6 @@ RSpec.describe RepositoryColumns::StatusColumnsController, type: :controller do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'DELETE repository_status_column, #delete' do
|
||||
let(:action) { delete :destroy, params: params }
|
||||
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: repository_column.id
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
service = double('success_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(true)
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
context 'when column deleted' do
|
||||
it 'respons with status 200' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(200))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column is not found' do
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: -1
|
||||
}
|
||||
end
|
||||
|
||||
it 'respons with status 404' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(404))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user does not have permissions' do
|
||||
before do
|
||||
user_team.role = :guest
|
||||
user_team.save
|
||||
end
|
||||
|
||||
it 'respons with status 403' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(403))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column cannot be deleted fails' do
|
||||
before do
|
||||
service = double('failure_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(false)
|
||||
allow(service).to(receive(:errors)).and_return({})
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
it 'respons with status 422' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(422))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET repository_status_column, #items' do
|
||||
let(:action) { get :items, params: params }
|
||||
|
||||
|
|
|
@ -161,74 +161,4 @@ RSpec.describe RepositoryColumns::TextColumnsController, type: :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE repository_text_column, #delete' do
|
||||
let(:action) { delete :destroy, params: params }
|
||||
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: repository_column.id
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
service = double('success_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(true)
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
context 'when column deleted' do
|
||||
it 'respons with status 200' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(200))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column is not found' do
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
id: -1
|
||||
}
|
||||
end
|
||||
|
||||
it 'respons with status 404' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(404))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user does not have permissions' do
|
||||
before do
|
||||
user_team.role = :guest
|
||||
user_team.save
|
||||
end
|
||||
|
||||
it 'respons with status 403' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(403))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when column cannot be deleted fails' do
|
||||
before do
|
||||
service = double('failure_service')
|
||||
allow(service).to(receive(:succeed?)).and_return(false)
|
||||
allow(service).to(receive(:errors)).and_return({})
|
||||
|
||||
allow_any_instance_of(RepositoryColumns::DeleteColumnService).to(receive(:call)).and_return(service)
|
||||
end
|
||||
|
||||
it 'respons with status 422' do
|
||||
action
|
||||
|
||||
expect(response).to(have_http_status(422))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,58 +13,6 @@ describe RepositoryColumnsController, type: :controller do
|
|||
create :repository_column, created_by: user, repository: repository
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
{
|
||||
repository_id: repository.id,
|
||||
repository_column: {
|
||||
name: 'repository_column',
|
||||
data_type: 'RepositoryTextValue'
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it 'calls create activity for creating inventory column' do
|
||||
expect(Activities::CreateActivityService)
|
||||
.to(receive(:call)
|
||||
.with(hash_including(activity_type: :create_column_inventory)))
|
||||
|
||||
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,
|
||||
repository_id: repository.id,
|
||||
repository_column: {
|
||||
name: 'new_repository_column'
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it 'calls create activity for editing intentory column' do
|
||||
expect(Activities::CreateActivityService)
|
||||
.to(receive(:call)
|
||||
.with(hash_including(activity_type: :edit_column_inventory)))
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue