From c5035ca81e32445eaa1501a0358551fbe00dd723 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 15:55:03 +0200 Subject: [PATCH] When gestionnaire follow an initiated dossier, this paste his state at 'updated' --- .../backoffice/dossiers_controller.rb | 2 ++ app/models/dossier.rb | 6 +++++- .../backoffice/dossiers_controller_spec.rb | 21 ++++++++++++++++++- spec/models/dossier_spec.rb | 18 +++++++++++----- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 6918c4653..7c1187471 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -95,6 +95,8 @@ class Backoffice::DossiersController < ApplicationController def follow follow = current_gestionnaire.toggle_follow_dossier params[:dossier_id] + current_gestionnaire.dossiers.find(params[:dossier_id]).next_step! 'gestionnaire', 'follow' + flash.notice = (follow.class == Follow ? 'Dossier suivi' : 'Dossier relaché') redirect_to request.referer end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 623cb9515..e94ffa375 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -97,7 +97,7 @@ class Dossier < ActiveRecord::Base end def next_step! role, action - unless %w(initiate update comment valid submit receive refuse without_continuation close).include?(action) + unless %w(initiate follow update comment valid submit receive refuse without_continuation close).include?(action) fail 'action is not valid' end @@ -132,6 +132,10 @@ class Dossier < ActiveRecord::Base elsif initiated? replied! end + when 'follow' + if initiated? + updated! + end when 'valid' if updated? validated! diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 7769cc888..bcc763f42 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -4,14 +4,19 @@ describe Backoffice::DossiersController, type: :controller do before do @request.env['HTTP_REFERER'] = TPS::Application::URL end + let(:procedure) { create :procedure } - let(:dossier) { create(:dossier, :with_entreprise) } + let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure) } let(:dossier_archived) { create(:dossier, :with_entreprise, archived: true) } let(:dossier_id) { dossier.id } let(:bad_dossier_id) { Dossier.count + 10 } let(:gestionnaire) { create(:gestionnaire, administrateurs: [create(:administrateur)]) } + before do + create :assign_to, procedure: procedure, gestionnaire: gestionnaire + end + describe 'GET #show' do context 'gestionnaire is connected' do before do @@ -223,6 +228,20 @@ describe Backoffice::DossiersController, type: :controller do it { expect(subject.status).to eq 302 } + context 'when dossier is at state initiated' do + let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } + + before do + subject + dossier.reload + end + + it 'change state for updated' do + expect(dossier.state).to eq 'updated' + end + + end + describe 'flash alert' do context 'when dossier is not follow by gestionnaire' do before do diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 583a47410..21ac74bd0 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -219,6 +219,12 @@ describe Dossier do it { is_expected.to eq('replied') } end + context 'when is follow' do + let(:action) { 'follow' } + + it { is_expected.to eq 'updated' } + end + context 'when is validated the dossier' do let(:action) { 'valid' } @@ -244,10 +250,7 @@ describe Dossier do context 'when is updated dossier informations' do let(:action) { 'update' } - it { - - is_expected.to eq('updated') - } + it { is_expected.to eq('updated') } end end @@ -260,6 +263,12 @@ describe Dossier do it { is_expected.to eq('replied') } end + context 'when is follow' do + let(:action) { 'follow' } + + it { is_expected.to eq 'replied' } + end + context 'when is validated the dossier' do let(:action) { 'valid' } @@ -453,7 +462,6 @@ describe Dossier do end end - context 'when dossier is at state closed' do before do dossier.closed!