refactor description controller

This commit is contained in:
Tanguy PATTE 2015-08-20 15:15:20 +02:00
parent 1e385655a1
commit a265f2e48a
4 changed files with 51 additions and 45 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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) }