From ff5fecef25e15c81220d7c763687e0166d4bee72 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Thu, 2 Feb 2023 15:01:17 +0100 Subject: [PATCH] fix(dossiers_transfers): can destroy dossiers_transfers --- app/controllers/users/transfers_controller.rb | 4 +-- .../users/transfers_controller_spec.rb | 25 +++++++++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/controllers/users/transfers_controller.rb b/app/controllers/users/transfers_controller.rb index e7c42deed..d6db9bebe 100644 --- a/app/controllers/users/transfers_controller.rb +++ b/app/controllers/users/transfers_controller.rb @@ -19,9 +19,7 @@ module Users end def destroy - transfer = DossierTransfer - .joins(:dossiers) - .find_by!(id: params[:id], dossiers: { user: current_user }) + transfer = DossierTransfer.find_by!(id: params[:id], email: current_user.email) transfer.destroy_and_nullify redirect_to dossiers_path diff --git a/spec/controllers/users/transfers_controller_spec.rb b/spec/controllers/users/transfers_controller_spec.rb index d5f80ae0f..f28181cbe 100644 --- a/spec/controllers/users/transfers_controller_spec.rb +++ b/spec/controllers/users/transfers_controller_spec.rb @@ -1,23 +1,32 @@ describe Users::TransfersController, type: :controller do - let(:user) { create(:user) } - let(:dossier) { create(:dossier, user: user) } - - before { sign_in(user) } + let(:sender_user) { create(:user) } + let(:recipient_user) { create(:user) } + let(:dossier) { create(:dossier, user: sender_user) } describe 'DELETE destroy' do - let(:dossier_transfert) { DossierTransfer.initiate(user.email, [dossier]) } + let(:dossier_transfert) { DossierTransfer.initiate(recipient_user.email, [dossier]) } + + subject { delete :destroy, params: { id: dossier_transfert.id } } before do - delete :destroy, params: { id: dossier_transfert.id } + sign_in(recipient_user) end - it { expect { dossier_transfert.reload }.to raise_error(ActiveRecord::RecordNotFound) } + it { expect { subject }.not_to raise_error } + + it "deletes dossier transfert" do + subject + expect { dossier_transfert.reload }.to raise_error(ActiveRecord::RecordNotFound) + end end describe "POST create" do subject { post :create, params: { dossier_transfer: { email: email, dossier: dossier.id } } } - before { subject } + before do + sign_in(sender_user) + subject + end context "with valid email" do let(:email) { "test@rspec.net" }