EQT instructeur, je peux supprimer un dossier terminé
This commit is contained in:
parent
f7f832bed8
commit
00b5ad7a10
18 changed files with 255 additions and 97 deletions
|
@ -715,4 +715,69 @@ describe Instructeurs::DossiersController, type: :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#delete_dossier" do
|
||||
subject do
|
||||
patch :delete_dossier, params: {
|
||||
procedure_id: procedure.id,
|
||||
dossier_id: dossier.id
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
dossier.passer_en_instruction(instructeur)
|
||||
end
|
||||
|
||||
context 'just before delete the dossier, the operation must be equal to 2' do
|
||||
before do
|
||||
dossier.accepter!(instructeur, 'le dossier est correct')
|
||||
end
|
||||
|
||||
it 'has 2 operations logs before deletion' do
|
||||
expect(DossierOperationLog.where(dossier_id: dossier.id).count).to eq(2)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the instructeur want to delete a dossier with a decision' do
|
||||
before do
|
||||
dossier.accepter!(instructeur, "le dossier est correct")
|
||||
allow(DossierMailer).to receive(:notify_instructeur_deletion_to_user).and_return(double(deliver_later: nil))
|
||||
subject
|
||||
end
|
||||
|
||||
it 'deletes previous logs and add a suppression log' do
|
||||
expect(DossierOperationLog.where(dossier_id: dossier.id).count).to eq(1)
|
||||
expect(DossierOperationLog.where(dossier_id: dossier.id).first.operation).to eq('supprime_par_instructeur')
|
||||
end
|
||||
|
||||
it 'send an email to the user' do
|
||||
expect(DossierMailer).to have_received(:notify_instructeur_deletion_to_user).with(DeletedDossier.find(dossier.id), dossier.user.email)
|
||||
end
|
||||
|
||||
it 'add a record into deleted_dossiers table' do
|
||||
expect(DeletedDossier.where(dossier_id: dossier.id).count).to eq(1)
|
||||
expect(DeletedDossier.where(dossier_id: dossier.id).first.revision_id).to eq(dossier.revision_id)
|
||||
expect(DeletedDossier.where(dossier_id: dossier.id).first.user_id).to eq(dossier.user_id)
|
||||
expect(DeletedDossier.where(dossier_id: dossier.id).first.groupe_instructeur_id).to eq(dossier.groupe_instructeur_id)
|
||||
end
|
||||
|
||||
it 'delete the dossier' do
|
||||
expect { dossier.reload }.to raise_error ActiveRecord::RecordNotFound
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the instructeur want to delete a dossier without a decision' do
|
||||
before do
|
||||
subject
|
||||
end
|
||||
|
||||
it 'does not delete the dossier' do
|
||||
expect { dossier.reload }.not_to raise_error ActiveRecord::RecordNotFound
|
||||
end
|
||||
|
||||
it 'does not add a record into deleted_dossiers table' do
|
||||
expect(DeletedDossier.where(dossier_id: dossier.id).count).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -743,16 +743,15 @@ describe Users::DossiersController, type: :controller do
|
|||
context 'when the user does not have any dossiers' do
|
||||
before { get(:index) }
|
||||
|
||||
it { expect(assigns(:current_tab)).to eq('mes-dossiers') }
|
||||
it { expect(assigns(:statut)).to eq('mes-dossiers') }
|
||||
end
|
||||
|
||||
context 'when the user only have its own dossiers' do
|
||||
let!(:own_dossier) { create(:dossier, user: user) }
|
||||
|
||||
before { get(:index) }
|
||||
|
||||
it { expect(assigns(:current_tab)).to eq('mes-dossiers') }
|
||||
it { expect(assigns(:dossiers)).to match([own_dossier]) }
|
||||
it { expect(assigns(:statut)).to eq('mes-dossiers') }
|
||||
it { expect(assigns(:user_dossiers)).to match([own_dossier]) }
|
||||
end
|
||||
|
||||
context 'when the user only have some dossiers invites' do
|
||||
|
@ -760,30 +759,30 @@ describe Users::DossiersController, type: :controller do
|
|||
|
||||
before { get(:index) }
|
||||
|
||||
it { expect(assigns(:current_tab)).to eq('dossiers-invites') }
|
||||
it { expect(assigns(:dossiers)).to match([invite.dossier]) }
|
||||
it { expect(assigns(:statut)).to eq('mes-dossiers') }
|
||||
it { expect(assigns(:dossiers_invites)).to match([invite.dossier]) }
|
||||
end
|
||||
|
||||
context 'when the user has both' do
|
||||
let!(:own_dossier) { create(:dossier, user: user) }
|
||||
let!(:invite) { create(:invite, dossier: create(:dossier), user: user) }
|
||||
|
||||
context 'and there is no current_tab param' do
|
||||
context 'and there is no statut param' do
|
||||
before { get(:index) }
|
||||
|
||||
it { expect(assigns(:current_tab)).to eq('mes-dossiers') }
|
||||
it { expect(assigns(:statut)).to eq('mes-dossiers') }
|
||||
end
|
||||
|
||||
context 'and there is "dossiers-invites" param' do
|
||||
before { get(:index, params: { current_tab: 'dossiers-invites' }) }
|
||||
before { get(:index, params: { statut: 'dossiers-invites' }) }
|
||||
|
||||
it { expect(assigns(:current_tab)).to eq('dossiers-invites') }
|
||||
it { expect(assigns(:statut)).to eq('dossiers-invites') }
|
||||
end
|
||||
|
||||
context 'and there is "mes-dossiers" param' do
|
||||
before { get(:index, params: { current_tab: 'mes-dossiers' }) }
|
||||
before { get(:index, params: { statut: 'mes-dossiers' }) }
|
||||
|
||||
it { expect(assigns(:current_tab)).to eq('mes-dossiers') }
|
||||
it { expect(assigns(:statut)).to eq('mes-dossiers') }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -49,6 +49,10 @@ class DossierMailerPreview < ActionMailer::Preview
|
|||
DossierMailer.notify_deletion_to_user(deleted_dossier, usager_email)
|
||||
end
|
||||
|
||||
def notify_instructeur_deletion_to_user
|
||||
DossierMailer.notify_instructeur_deletion_to_user(deleted_dossier, usager_email)
|
||||
end
|
||||
|
||||
def notify_deletion_to_administration
|
||||
DossierMailer.notify_deletion_to_administration(deleted_dossier, administration_email)
|
||||
end
|
||||
|
|
|
@ -70,7 +70,7 @@ describe 'instructeurs/dossiers/state_button.html.haml', type: :view do
|
|||
|
||||
it 'renders a dropdown' do
|
||||
expect(rendered).to have_dropdown_title(dossier_display_state(dossier))
|
||||
expect(rendered).to have_dropdown_items(count: 1)
|
||||
expect(rendered).to have_dropdown_items(count: 2)
|
||||
expect(rendered).to have_dropdown_item('Repasser en instruction', href: repasser_en_instruction_instructeur_dossier_path(dossier.procedure, dossier))
|
||||
end
|
||||
|
||||
|
|
|
@ -4,15 +4,15 @@ describe 'users/dossiers/index.html.haml', type: :view do
|
|||
let(:dossier_en_construction) { create(:dossier, state: Dossier.states.fetch(:en_construction), user: user) }
|
||||
let(:user_dossiers) { [dossier_brouillon, dossier_en_construction] }
|
||||
let(:dossiers_invites) { [] }
|
||||
let(:current_tab) { 'mes-dossiers' }
|
||||
let(:statut) { 'mes-dossiers' }
|
||||
|
||||
before do
|
||||
allow(view).to receive(:new_demarche_url).and_return('#')
|
||||
allow(controller).to receive(:current_user) { user }
|
||||
assign(:user_dossiers, Kaminari.paginate_array(user_dossiers).page(1))
|
||||
assign(:dossiers_invites, Kaminari.paginate_array(dossiers_invites).page(1))
|
||||
assign(:dossiers, Kaminari.paginate_array(user_dossiers).page(1))
|
||||
assign(:current_tab, current_tab)
|
||||
assign(:dossiers_supprimes, Kaminari.paginate_array(user_dossiers).page(1))
|
||||
assign(:statut, statut)
|
||||
render
|
||||
end
|
||||
|
||||
|
@ -48,11 +48,11 @@ describe 'users/dossiers/index.html.haml', type: :view do
|
|||
let(:dossiers_invites) { [] }
|
||||
|
||||
it 'affiche un titre adapté' do
|
||||
expect(rendered).to have_selector('h1', text: 'Mes dossiers')
|
||||
expect(rendered).to have_selector('h1', text: 'Dossiers')
|
||||
end
|
||||
|
||||
it 'n’affiche pas la barre d’onglets' do
|
||||
expect(rendered).not_to have_selector('ul.tabs')
|
||||
it 'n’affiche la barre d’onglets' do
|
||||
expect(rendered).to have_selector('ul.tabs')
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -65,7 +65,7 @@ describe 'users/dossiers/index.html.haml', type: :view do
|
|||
|
||||
it 'affiche la barre d’onglets' do
|
||||
expect(rendered).to have_selector('ul.tabs')
|
||||
expect(rendered).to have_selector('ul.tabs li', count: 2)
|
||||
expect(rendered).to have_selector('ul.tabs li', count: 3)
|
||||
expect(rendered).to have_selector('ul.tabs li.active', count: 1)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue