diff --git a/app/controllers/description_controller.rb b/app/controllers/description_controller.rb index 8d40e9e69..b77f58b32 100644 --- a/app/controllers/description_controller.rb +++ b/app/controllers/description_controller.rb @@ -19,26 +19,17 @@ class DescriptionController < ApplicationController def create @dossier = Dossier.find(params[:dossier_id]) @dossier.update_attributes(create_params) - - if params[:cerfa_pdf] != nil - PieceJointe.destroy_all(dossier_id: @dossier.id, type_piece_jointe_id: 0) - @piece_jointe = PieceJointe.new - @piece_jointe.content = params[:cerfa_pdf] - @piece_jointe.type_piece_jointe_id = 0 - @piece_jointe.dossier = @dossier - @piece_jointe.save + if !params[:cerfa_pdf].nil? + cerfa = @dossier.cerfa + cerfa.content = params[:cerfa_pdf] + cerfa.save end - @dossier.types_piece_jointe.each do |pj| - if params["piece_jointe_#{pj.id}"] != nil - PieceJointe.destroy_all(dossier_id: @dossier.id, type_piece_jointe_id: pj.id) - - @piece_jointe = PieceJointe.new - @piece_jointe.content = params["piece_jointe_#{pj.id}"] - @piece_jointe.type_piece_jointe_id = pj.id - @piece_jointe.dossier = @dossier - @piece_jointe.save + @dossier.pieces_jointes.each do |piece_jointe| + if params["piece_jointe_#{piece_jointe.type}"] != nil + piece_jointe.content = params["piece_jointe_#{piece_jointe.id}"] + piece_jointe.save end end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 793ad4403..be69c2c69 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -12,8 +12,8 @@ class Dossier < ActiveRecord::Base before_create :build_default_cerfa - def get_pj piece_jointe_id - pieces_jointes.where(type_piece_jointe_id: piece_jointe_id).last + def retrieve_piece_jointe_by_type type + pieces_jointes.where(type_piece_jointe_id: type).last end def build_default_pieces_jointes diff --git a/spec/controllers/description_controller_spec.rb b/spec/controllers/description_controller_spec.rb index dd40795a8..ec08574c3 100644 --- a/spec/controllers/description_controller_spec.rb +++ b/spec/controllers/description_controller_spec.rb @@ -111,11 +111,20 @@ describe DescriptionController, type: :controller do context 'Sauvegarde du CERFA PDF' do before do - post :create, :dossier_id => dossier_id, :nom_projet => nom_projet, :description => description, :montant_projet => montant_projet, :montant_aide_demande => montant_aide_demande, :date_previsionnelle => date_previsionnelle, :mail_contact => mail_contact, :cerfa_pdf => cerfa_pdf + dossier.build_default_pieces_jointes + post :create, :dossier_id => dossier_id, + :nom_projet => nom_projet, + :description => description, + :montant_projet => montant_projet, + :montant_aide_demande => montant_aide_demande, + :date_previsionnelle => date_previsionnelle, + :mail_contact => mail_contact, + :cerfa_pdf => cerfa_pdf + dossier.reload end context 'un CERFA PDF est envoyé' do - subject{PieceJointe.last} + subject{ dossier.cerfa } it 'content' do expect(subject['content']).to eq(name_piece_jointe) end @@ -123,10 +132,6 @@ describe DescriptionController, type: :controller do it 'dossier_id' do expect(subject.dossier_id).to eq(dossier_id) end - - it 'type_piece_jointe_id' do - expect(subject.type_piece_jointe_id).to eq(0) - end end context 'les anciens CERFA PDF sont écrasées à chaque fois' do @@ -144,28 +149,26 @@ describe DescriptionController, type: :controller do context 'Sauvegarde des pièces jointes' do before do - post :create, :dossier_id => dossier_id, :nom_projet => nom_projet, :description => description, :montant_projet => montant_projet, :montant_aide_demande => montant_aide_demande, :date_previsionnelle => date_previsionnelle, :mail_contact => mail_contact, :piece_jointe_692 => piece_jointe_692, :piece_jointe_103 => piece_jointe_103 + dossier.build_default_pieces_jointes + post :create, :dossier_id => dossier_id, + :nom_projet => nom_projet, + :description => description, + :montant_projet => montant_projet, + :montant_aide_demande => montant_aide_demande, + :date_previsionnelle => date_previsionnelle, + :mail_contact => mail_contact, + :piece_jointe_692 => piece_jointe_692, + :piece_jointe_103 => piece_jointe_103 + dossier.reload end - context 'sauvegarde de 2 pieces jointes' do - subject { dossier.pieces_jointes.pluck(:type_piece_jointe_id) } - it 'les deux pièces sont présentes en base' do - expect(subject).to include(103) - expect(subject).to include(692) - end - - # TODO: refactor - context 'les pièces sont ecrasées à chaque fois' do - it 'il n\'y a qu\'une pièce jointe par type par dossier' do - post :create, :dossier_id => dossier_id, :nom_projet => nom_projet, :description => description, :montant_projet => montant_projet, :montant_aide_demande => montant_aide_demande, :date_previsionnelle => date_previsionnelle, :mail_contact => mail_contact, :piece_jointe_692 => piece_jointe_692, :piece_jointe_103 => piece_jointe_103 - - piece_jointe_1 = PieceJointe.where(type_piece_jointe_id: '103', dossier_id: dossier_id) - piece_jointe_2 = PieceJointe.where(type_piece_jointe_id: '692', dossier_id: dossier_id) - - expect(piece_jointe_1.many?).to eq(false) - expect(piece_jointe_2.many?).to eq(false) - end - end + context 'for piece 692' do + subject { dossier.retrieve_piece_jointe_by_type 692 } + it { expect(subject.content).not_to be_nil } + end + context 'for piece 103' do + subject { dossier.retrieve_piece_jointe_by_type 103 } + it { expect(subject.content).not_to be_nil } end end end diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 5d0601985..83c5eb4e9 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -58,6 +58,18 @@ describe Dossier do end end + describe '#retrieve_piece_jointe_by_type' do + let(:type) { 93 } + subject { dossier.retrieve_piece_jointe_by_type type } + before do + dossier.build_default_pieces_jointes + end + + it 'returns piece jointe with given type' do + expect(subject.type).to eq(93) + end + end + describe '#build_default_pieces_jointes' do context 'when dossier is linked to a formualire' do let(:dossier) { create(:dossier) }