Fix test and status validations

This commit is contained in:
aignatov-bio 2020-09-01 14:49:58 +02:00
parent ce84c1546b
commit e1229f5606
3 changed files with 15 additions and 14 deletions

View file

@ -267,6 +267,7 @@ class MyModulesController < ApplicationController
if @my_module.update(my_module_status_id: update_status_params[:status_id])
log_activity(:change_status_on_task_flow, @my_module, my_module_status_old: old_status_id,
my_module_status_new: @my_module.my_module_status.id)
render json: { content: render_to_string(
partial: 'my_modules/status_flow/task_flow_button.html.erb',
locals: { my_module: @my_module }

View file

@ -7,8 +7,9 @@ class MyModule < ApplicationRecord
enum state: Extends::TASKS_STATES
before_create :create_blank_protocol
before_create :assign_default_status_flow
before_validation :set_completed_on, if: :state_changed?
before_validation :assign_default_status_flow
before_save :exec_status_consequences, if: :my_module_status_id_changed?
auto_strip_attributes :name, :description, nullify: false
@ -22,7 +23,7 @@ class MyModule < ApplicationRecord
validate :coordinates_uniqueness_check, if: :active?
validates :completed_on, presence: true, if: proc { |mm| mm.completed? }
validate :check_status_order, if: :my_module_status_id_changed?
validate :check_status, if: :my_module_status_id_changed?
validate :check_status_conditions, if: :my_module_status_id_changed?
validate :check_status_implications, unless: :my_module_status_id_changed?
@ -539,13 +540,11 @@ class MyModule < ApplicationRecord
end
end
def check_status_order
def check_status
return unless my_module_status_id_was
original_status = my_module_status_flow.my_module_statuses.find_by(id: my_module_status_id_was)
unless my_module_status &&
(original_status.next_status == my_module_status || original_status.previous_status == my_module_status)
original_status = MyModuleStatus.find_by(id: my_module_status_id_was)
unless my_module_status && [original_status.next_status, original_status.previous_status].include?(my_module_status)
errors.add(:my_module_status_id,
I18n.t('activerecord.errors.models.my_module.attributes.my_module_status_id.not_correct_order'))
end

View file

@ -153,23 +153,24 @@ describe MyModulesController, type: :controller do
end
end
context 'when status not found' do
context 'when status not exist' do
let(:status_id) { -1 }
it 'renders 404' do
it 'renders 422' do
my_module.my_module_status_flow
action
expect(response).to have_http_status 404
expect(response).to have_http_status 422
end
end
context 'when my_module does not have assign flow yet' do
let(:status_id) { -1 }
context 'when status not correct' do
let(:status_id) { my_module.my_module_status.next_status.next_status.id }
it 'renders 404' do
it 'renders 422' do
action
expect(response).to have_http_status 404
expect(response).to have_http_status 422
end
end