2015-08-10 11:05:06 +02:00
|
|
|
require 'spec_helper'
|
|
|
|
|
2015-08-11 15:39:16 +02:00
|
|
|
describe DescriptionController, type: :controller do
|
2015-08-13 15:55:19 +02:00
|
|
|
let(:dossier) { create(:dossier) }
|
2015-08-20 16:25:54 +02:00
|
|
|
let(:dossier_id) { dossier.id }
|
|
|
|
let(:bad_dossier_id) { Dossier.count + 10 }
|
2015-08-10 11:05:06 +02:00
|
|
|
|
2015-08-20 16:52:36 +02:00
|
|
|
describe 'GET #show' do
|
|
|
|
it 'returns http success' do
|
2015-08-18 10:43:36 +02:00
|
|
|
get :show, dossier_id: dossier_id
|
2015-08-10 11:05:06 +02:00
|
|
|
expect(response).to have_http_status(:success)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'redirection vers start si mauvais dossier ID' do
|
2015-08-18 10:43:36 +02:00
|
|
|
get :show, dossier_id: bad_dossier_id
|
|
|
|
expect(response).to redirect_to(controller: :start, action: :error_dossier)
|
2015-08-10 11:05:06 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-08-20 16:52:36 +02:00
|
|
|
describe 'POST #create' do
|
|
|
|
let(:timestamp) { Time.now }
|
|
|
|
let(:nom_projet) { 'Projet de test' }
|
|
|
|
let(:description) { 'Description de test Coucou, je suis un saut à la ligne Je suis un double saut la ligne.' }
|
|
|
|
let(:montant_projet) { 12_000 }
|
|
|
|
let(:montant_aide_demande) { 3000 }
|
|
|
|
let(:date_previsionnelle) { '20/01/2016' }
|
|
|
|
let(:mail_contact) { 'test@test.com' }
|
2015-08-11 15:39:16 +02:00
|
|
|
|
2015-08-20 16:52:36 +02:00
|
|
|
let(:name_piece_jointe) { 'dossierPDF.pdf' }
|
|
|
|
let(:name_piece_jointe_103) { 'piece_jointe_103.pdf' }
|
|
|
|
let(:name_piece_jointe_692) { 'piece_jointe_692.pdf' }
|
2015-08-11 15:39:16 +02:00
|
|
|
|
2015-08-20 16:52:36 +02:00
|
|
|
let(:cerfa_pdf) { Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe}", 'application/pdf') }
|
|
|
|
let(:piece_jointe_103) { Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe_103}", 'application/pdf') }
|
|
|
|
let(:piece_jointe_692) { Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe_692}", 'application/pdf') }
|
2015-08-11 15:39:16 +02:00
|
|
|
|
2015-08-10 11:05:06 +02:00
|
|
|
context 'Tous les attributs sont bons' do
|
2015-08-20 16:52:36 +02:00
|
|
|
# TODO separer en deux tests : check donnees et check redirect
|
2015-08-10 11:05:06 +02:00
|
|
|
it 'Premier enregistrement des données' do
|
2015-08-20 16:52:36 +02:00
|
|
|
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
|
2015-08-10 11:05:06 +02:00
|
|
|
expect(response).to redirect_to("/dossiers/#{dossier_id}/recapitulatif")
|
|
|
|
end
|
|
|
|
|
2015-08-20 16:52:36 +02:00
|
|
|
# TODO changer les valeurs des champs et check in bdd
|
2015-08-10 11:05:06 +02:00
|
|
|
context 'En train de modifier les données de description du projet' do
|
|
|
|
before do
|
2015-08-20 16:52:36 +02:00
|
|
|
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, back_url: 'recapitulatif'
|
2015-08-10 11:05:06 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
context 'Enregistrement d\'un commentaire informant la modification' do
|
2015-08-20 16:52:36 +02:00
|
|
|
subject { Commentaire.last }
|
2015-08-10 11:05:06 +02:00
|
|
|
|
|
|
|
it 'champs email' do
|
|
|
|
expect(subject.email).to eq('Modification détails')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'champs body' do
|
|
|
|
expect(subject.body).to eq('Les informations détaillées de la demande ont été modifiées. Merci de le prendre en compte.')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'champs dossier' do
|
|
|
|
expect(subject.dossier.id).to eq(dossier_id)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'Redirection vers la page récapitulatif' do
|
|
|
|
expect(response).to redirect_to("/dossiers/#{dossier_id}/recapitulatif")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'Attribut(s) manquant(s)' do
|
|
|
|
it 'nom_projet manquant' do
|
2015-08-20 16:52:36 +02:00
|
|
|
post :create, dossier_id: dossier_id, nom_projet: '', description: description, montant_projet: montant_projet, montant_aide_demande: montant_aide_demande, date_previsionnelle: date_previsionnelle, mail_contact: mail_contact
|
2015-08-10 11:05:06 +02:00
|
|
|
expect(response).to redirect_to("/dossiers/#{dossier_id}/description/error")
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'description manquante' do
|
2015-08-20 16:52:36 +02:00
|
|
|
post :create, dossier_id: dossier_id, nom_projet: nom_projet, description: '', montant_projet: montant_projet, montant_aide_demande: montant_aide_demande, date_previsionnelle: date_previsionnelle, mail_contact: mail_contact
|
2015-08-10 11:05:06 +02:00
|
|
|
expect(response).to redirect_to("/dossiers/#{dossier_id}/description/error")
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'montant_projet manquant' do
|
2015-08-20 16:52:36 +02:00
|
|
|
post :create, dossier_id: dossier_id, nom_projet: nom_projet, description: description, montant_projet: '', montant_aide_demande: montant_aide_demande, date_previsionnelle: date_previsionnelle, mail_contact: mail_contact
|
2015-08-10 11:05:06 +02:00
|
|
|
expect(response).to redirect_to("/dossiers/#{dossier_id}/description/error")
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'montant_aide_demande manquant' do
|
2015-08-20 16:52:36 +02:00
|
|
|
post :create, dossier_id: dossier_id, nom_projet: nom_projet, description: description, montant_projet: montant_projet, montant_aide_demande: '', date_previsionnelle: date_previsionnelle, mail_contact: mail_contact
|
2015-08-10 11:05:06 +02:00
|
|
|
expect(response).to redirect_to("/dossiers/#{dossier_id}/description/error")
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'date_previsionnelle manquante' do
|
2015-08-20 16:52:36 +02:00
|
|
|
post :create, dossier_id: dossier_id, nom_projet: nom_projet, description: description, montant_projet: montant_projet, montant_aide_demande: montant_aide_demande, date_previsionnelle: '', mail_contact: mail_contact
|
2015-08-10 11:05:06 +02:00
|
|
|
expect(response).to redirect_to("/dossiers/#{dossier_id}/description/error")
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'mail_contact manquant' do
|
2015-08-20 16:52:36 +02:00
|
|
|
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: ''
|
2015-08-21 11:40:02 +02:00
|
|
|
expect(response).to render_template('show')
|
|
|
|
expect(flash[:alert]).to be_present
|
2015-08-10 11:05:06 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'Mauvais format(s)' do
|
|
|
|
it 'mail_contact n\'est un format d\'email' do
|
2015-08-20 16:52:36 +02:00
|
|
|
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: 'test.com'
|
2015-08-21 11:37:13 +02:00
|
|
|
expect(response).to render_template('show')
|
|
|
|
expect(flash[:alert]).to be_present
|
2015-08-10 11:05:06 +02:00
|
|
|
end
|
|
|
|
end
|
2015-08-11 15:39:16 +02:00
|
|
|
|
|
|
|
context 'Sauvegarde du CERFA PDF' do
|
|
|
|
before do
|
2015-08-20 16:52:36 +02:00
|
|
|
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
|
2015-08-20 15:15:20 +02:00
|
|
|
dossier.reload
|
2015-08-11 15:39:16 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
context 'un CERFA PDF est envoyé' do
|
2015-08-20 16:52:36 +02:00
|
|
|
subject { dossier.cerfa }
|
2015-08-13 15:55:19 +02:00
|
|
|
it 'content' do
|
|
|
|
expect(subject['content']).to eq(name_piece_jointe)
|
2015-08-11 15:39:16 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
it 'dossier_id' do
|
|
|
|
expect(subject.dossier_id).to eq(dossier_id)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'les anciens CERFA PDF sont écrasées à chaque fois' do
|
|
|
|
it 'il n\'y a qu\'un CERFA PDF par dossier' do
|
2015-08-20 16:52:36 +02:00
|
|
|
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
|
2015-08-14 12:06:26 +02:00
|
|
|
cerfa = PieceJointe.where(type_piece_jointe_id: '0', dossier_id: dossier_id)
|
2015-08-11 15:39:16 +02:00
|
|
|
expect(cerfa.many?).to eq(false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'pas de CERFA PDF' do
|
2015-08-20 16:52:36 +02:00
|
|
|
# TODO à écrire
|
2015-08-11 15:39:16 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'Sauvegarde des pièces jointes' do
|
|
|
|
before do
|
2015-08-20 16:52:36 +02:00
|
|
|
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
|
2015-08-20 15:15:20 +02:00
|
|
|
dossier.reload
|
2015-08-11 15:39:16 +02:00
|
|
|
end
|
|
|
|
|
2015-08-20 15:15:20 +02:00
|
|
|
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 }
|
2015-08-11 15:39:16 +02:00
|
|
|
end
|
|
|
|
end
|
2015-08-10 11:05:06 +02:00
|
|
|
end
|
|
|
|
end
|