Refactor assignement-related methods
This commit is contained in:
parent
ac6ba40598
commit
3d10dbf0e4
3 changed files with 65 additions and 6 deletions
|
@ -51,11 +51,17 @@ class Admin::AccompagnateursController < AdminController
|
||||||
|
|
||||||
case to
|
case to
|
||||||
when ASSIGN
|
when ASSIGN
|
||||||
gestionnaire.assign_to_procedure(procedure)
|
if gestionnaire.assign_to_procedure(procedure)
|
||||||
flash.notice = "L'accompagnateur a bien été affecté"
|
flash.notice = "L'accompagnateur a bien été affecté"
|
||||||
|
else
|
||||||
|
flash.alert = "L'accompagnateur a déjà été affecté"
|
||||||
|
end
|
||||||
when NOT_ASSIGN
|
when NOT_ASSIGN
|
||||||
gestionnaire.remove_from_procedure(procedure)
|
if gestionnaire.remove_from_procedure(procedure)
|
||||||
flash.notice = "L'accompagnateur a bien été désaffecté"
|
flash.notice = "L'accompagnateur a bien été désaffecté"
|
||||||
|
else
|
||||||
|
flash.alert = "L'accompagnateur a déjà été désaffecté"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
redirect_to admin_procedure_accompagnateurs_path, procedure_id: params[:procedure_id]
|
redirect_to admin_procedure_accompagnateurs_path, procedure_id: params[:procedure_id]
|
||||||
|
|
|
@ -52,11 +52,16 @@ class Gestionnaire < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def assign_to_procedure(procedure)
|
def assign_to_procedure(procedure)
|
||||||
AssignTo.create(gestionnaire: self, procedure: procedure)
|
begin
|
||||||
|
procedures << procedure
|
||||||
|
true
|
||||||
|
rescue ActiveRecord::RecordNotUnique
|
||||||
|
false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_from_procedure(procedure)
|
def remove_from_procedure(procedure)
|
||||||
AssignTo.where(gestionnaire: self, procedure: procedure).delete_all
|
!!(procedure.in?(procedures) && procedures.destroy(procedure))
|
||||||
end
|
end
|
||||||
|
|
||||||
def last_week_overview
|
def last_week_overview
|
||||||
|
|
|
@ -64,6 +64,54 @@ describe Gestionnaire, type: :model do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#assign_to_procedure" do
|
||||||
|
subject { gestionnaire.assign_to_procedure(procedure_to_assign) }
|
||||||
|
|
||||||
|
context "with a procedure not already assigned" do
|
||||||
|
let(:procedure_to_assign) { procedure_3 }
|
||||||
|
|
||||||
|
it { is_expected.to be_truthy }
|
||||||
|
it { expect{ subject }.to change(gestionnaire.procedures, :count) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with an already assigned procedure" do
|
||||||
|
let(:procedure_to_assign) { procedure }
|
||||||
|
|
||||||
|
it { is_expected.to be_falsey }
|
||||||
|
it { expect{ subject }.not_to change(gestionnaire.procedures, :count) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#remove_from_procedure" do
|
||||||
|
subject { gestionnaire.remove_from_procedure(procedure_to_remove) }
|
||||||
|
|
||||||
|
context "with an assigned procedure" do
|
||||||
|
let(:procedure_to_remove) { procedure }
|
||||||
|
let!(:procedure_presentation) { procedure_assign.procedure_presentation }
|
||||||
|
|
||||||
|
it { is_expected.to be_truthy }
|
||||||
|
|
||||||
|
describe "consequences" do
|
||||||
|
before do
|
||||||
|
procedure_assign.build_procedure_presentation
|
||||||
|
procedure_assign.save
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
|
||||||
|
it "removes the assign_to and procedure_presentation" do
|
||||||
|
expect(AssignTo.where(id: procedure_assign).count).to eq(0)
|
||||||
|
expect(ProcedurePresentation.where(assign_to_id: procedure_assign.id).count).to eq(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with an already unassigned procedure" do
|
||||||
|
let(:procedure_to_remove) { procedure_3 }
|
||||||
|
|
||||||
|
it { is_expected.to be_falsey }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'unified login' do
|
context 'unified login' do
|
||||||
it 'syncs credentials to associated user' do
|
it 'syncs credentials to associated user' do
|
||||||
gestionnaire = create(:gestionnaire)
|
gestionnaire = create(:gestionnaire)
|
||||||
|
|
Loading…
Add table
Reference in a new issue