Merge branch 'develop' into france_connect

# Conflicts:
#	db/schema.rb
This commit is contained in:
Xavier J 2015-10-08 16:54:21 +02:00
commit 285d7c6fa0
24 changed files with 415 additions and 361 deletions

BIN
.gitignore.swp Normal file

Binary file not shown.

View file

@ -155,13 +155,13 @@ function onDocumentReady() { if (typeof L != 'undefined' && typeof L.drawLocal !
} }
});**/ });**/
}); });
map.spin(true); //map.spin(true);
$.ajax({ //$.ajax({
url: 'http://apicarto.coremaps.com/zoneville/api/beta/qp/mapservice', // url: 'http://apicarto.coremaps.com/zoneville/api/beta/qp/mapservice',
datatype: 'json', // datatype: 'json',
jsonCallback: 'getJson', // jsonCallback: 'getJson',
success: loadGeoJson // success: loadGeoJson
}); //});
window.geom_inter = {index: []}; window.geom_inter = {index: []};
function style(feature) { function style(feature) {

View file

@ -4,7 +4,7 @@ function get_position(){
var position; var position;
$.ajax({ $.ajax({
url: '/dossiers/'+dossier_id+'/carte/position', url: '/users/dossiers/'+dossier_id+'/carte/position',
dataType: 'json', dataType: 'json',
async: false async: false
}).done(function (data) { }).done(function (data) {

View file

@ -1,15 +1,16 @@
class CarteController < ApplicationController class Users::CarteController < ApplicationController
include DossierConcern include DossierConcern
def show def show
@dossier = current_dossier @dossier = current_dossier
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
redirect_to url_for(controller: :siret, action: :error_dossier) redirect_to url_for(controller: :dossiers, action: :index)
end end
def save_ref_api_carto def save_ref_api_carto
dossier = current_dossier dossier = current_dossier
if dossier.ref_dossier_carto.blank?
if dossier.draft?
dossier.update_attributes(ref_dossier_carto: params[:ref_dossier]) dossier.update_attributes(ref_dossier_carto: params[:ref_dossier])
redirect_to url_for(controller: :description, action: :show, dossier_id: params[:dossier_id]) redirect_to url_for(controller: :description, action: :show, dossier_id: params[:dossier_id])
else else

View file

@ -38,12 +38,14 @@ class Users::DescriptionController < ApplicationController
end end
end end
if params[:back_url] == 'recapitulatif' if !@dossier.draft?
commentaire = Commentaire.create commentaire = Commentaire.create
commentaire.email = 'Modification détails' commentaire.email = 'Modification détails'
commentaire.body = 'Les informations détaillées de la demande ont été modifiées. Merci de le prendre en compte.' commentaire.body = 'Les informations détaillées de la demande ont été modifiées. Merci de le prendre en compte.'
commentaire.dossier = @dossier commentaire.dossier = @dossier
commentaire.save commentaire.save
else
@dossier.proposed!
end end
flash.notice = 'Félicitation, votre demande a bien été enregistrée.' flash.notice = 'Félicitation, votre demande a bien été enregistrée.'

View file

@ -46,7 +46,12 @@ class Users::DossiersController < UsersController
@dossier = Dossier.find(params[:id]) @dossier = Dossier.find(params[:id])
if checked_autorisation_donnees? if checked_autorisation_donnees?
@dossier.update_attributes(update_params) @dossier.update_attributes(update_params)
if @dossier.procedure.use_api_carto
redirect_to url_for(controller: :carte, action: :show, dossier_id: @dossier.id)
else
redirect_to url_for(controller: :description, action: :show, dossier_id: @dossier.id) redirect_to url_for(controller: :description, action: :show, dossier_id: @dossier.id)
end
else else
@etablissement = @dossier.etablissement @etablissement = @dossier.etablissement
@entreprise = @dossier.entreprise.decorate @entreprise = @dossier.entreprise.decorate

View file

@ -7,14 +7,13 @@
.content .content
#map_qp{style: 'height:600px; width: 100%;'} #map_qp{style: 'height:600px; width: 100%;'}
= form_tag(url_for({controller: :carte, action: :save_ref_api_carto}), class: 'form-inline', method: 'POST') do = form_tag(url_for({controller: :carte, action: :save_ref_api_carto, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do
%br %br
%input{type: 'hidden', value: '', name: 'ref_dossier', id: 'ref_dossier'} %input{type: 'hidden', value: '', name: 'ref_dossier', id: 'ref_dossier'}
%input{type: 'hidden', value: request.parameters[:back_url], name: 'back_url', id: 'back_url'}
-if request.parameters[:back_url] == 'recapitulatif' -if @dossier.draft?
=render partial: '/layouts/modifications_terminees'
-else
=render partial: '/layouts/etape_suivante' =render partial: '/layouts/etape_suivante'
-else
=render partial: '/layouts/modifications_terminees'
=render partial: 'carte_sources_JS' =render partial: 'carte_sources_JS'

View file

@ -3,8 +3,6 @@
%br %br
= form_tag(url_for({controller: :description, action: :create, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST', multipart: true) do = form_tag(url_for({controller: :description, action: :create, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST', multipart: true) do
%input{type: 'hidden', value: request.parameters[:back_url], name: 'back_url', id: 'back_url'}
%div %div
.row .row
@ -80,10 +78,10 @@
%div{style: 'text-align:right'} %div{style: 'text-align:right'}
%h6 Tous les champs portant un * sont obligatoires. %h6 Tous les champs portant un * sont obligatoires.
-if request.parameters[:back_url] == 'recapitulatif' -if !@dossier.draft?
=render partial: '/layouts/modifications_terminees' =render partial: '/layouts/modifications_terminees'
-else -else
= submit_tag 'Terminer la procédure', id: 'suivant', class: %w(btn btn btn-success), style: 'float:right', data: { disable_with: 'Terminé la procédure', submit: true} = submit_tag 'Soumettre mon dossier', id: 'suivant', class: %w(btn btn btn-success), style: 'float:right', data: { disable_with: 'Soumettre votre dossier', submit: true}
%br %br
%br %br

View file

@ -26,6 +26,11 @@ Rails.application.routes.draw do
get '/demande' => 'demandes#show' get '/demande' => 'demandes#show'
post '/demande' => 'demandes#update' post '/demande' => 'demandes#update'
post '/commentaire' => 'commentaires#create' post '/commentaire' => 'commentaires#create'
get '/carte/position' => 'carte#get_position'
get '/carte' => 'carte#show'
post '/carte' => 'carte#save_ref_api_carto'
end end
resource :dossiers resource :dossiers
end end

View file

@ -0,0 +1,5 @@
class AddUseAPICartoToProcedure < ActiveRecord::Migration
def change
add_column :procedures, :use_api_carto, :boolean, :default => false
end
end

View file

@ -121,6 +121,7 @@ ActiveRecord::Schema.define(version: 20151008090835) do
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.boolean "test" t.boolean "test"
t.boolean "use_api_carto", default: false
end end
create_table "types_de_piece_justificative", force: :cascade do |t| create_table "types_de_piece_justificative", force: :cascade do |t|

View file

@ -1,108 +0,0 @@
require 'spec_helper'
RSpec.describe CarteController, type: :controller do
#NOT USED ACTUALY
# let(:bad_adresse) { 'babouba' }
#
# let(:dossier) { create(:dossier) }
# let!(:entreprise) { create(:entreprise, dossier: dossier) }
# let!(:etablissement) { create(:etablissement, dossier: dossier) }
# let(:dossier_id) { dossier.id }
# let(:bad_dossier_id) { Dossier.count + 10 }
# let(:ref_dossier) { 'IATRQPQY' }
# let(:adresse) { etablissement.adresse }
#
# describe 'GET #show' do
# it 'returns http success' do
# get :show, dossier_id: dossier_id
# expect(response).to have_http_status(:success)
# end
#
# it 'redirection vers start si mauvais dossier ID' do
# get :show, dossier_id: bad_dossier_id
# expect(response).to redirect_to(controller: :start, action: :error_dossier)
# end
# end
#
# describe 'POST #save_ref_api_carto' do
# context 'Aucune localisation n\'a jamais été enregistrée' do
# it do
# post :save_ref_api_carto, dossier_id: dossier_id, ref_dossier: ref_dossier, back_url: ''
# expect(response).to redirect_to("/dossiers/#{dossier_id}/description")
# end
# end
#
# context 'En train de modifier la localisation' do
# let(:dossier) { create(:dossier, ref_dossier: ref_dossier) }
# before do
# post :save_ref_api_carto, dossier_id: dossier_id, ref_dossier: ref_dossier
# end
#
# context 'Enregistrement d\'un commentaire informant la modification' do
# subject { dossier.commentaires.last }
#
# it 'champs email' do
# expect(subject.email).to eq('Modification localisation')
# end
#
# it 'champs body' do
# expect(subject.body).to eq('La localisation de la demande a été modifiée. 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
#
# describe '#get_position' do
# context 'Geocodeur renvoie des positions nil' do
# let(:etablissement) { create(:etablissement, adresse: bad_adresse) }
# let(:dossier) { create(:dossier, etablissement: etablissement) }
# before do
# stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{bad_adresse}")
# .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {})
# get :get_position, dossier_id: dossier.id
# end
#
# subject { dossier.reload }
#
# it 'on enregistre des coordonnées lat et lon à 0' do
# expect(subject.position_lat).to eq('0')
# expect(subject.position_lon).to eq('0')
# end
# end
#
# context 'retour d\'un fichier JSON avec 3 attributs' do
# before do
# stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}")
# .to_return(status: 200, body: '{"query": "50 avenue des champs \u00e9lys\u00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs \u00c9lys\u00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs \u00c9lys\u00e9es", "citycode": "75108", "context": "75, \u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {})
#
# get :get_position, dossier_id: dossier_id
# end
# subject { JSON.parse(response.body) }
#
# it 'format JSON valide' do
# expect(response.content_type).to eq('application/json')
# end
#
# it 'latitude' do
# expect(subject['lat']).to eq('48.870374')
# end
#
# it 'longitude' do
# expect(subject['lon']).to eq('2.306888')
# end
#
# it 'dossier_id' do
# expect(subject['dossier_id']).to eq(dossier.id.to_s)
# end
# end
# end
end

View file

@ -36,15 +36,28 @@ describe Users::DescriptionController, type: :controller do
context 'Tous les attributs sont bons' do context 'Tous les attributs sont bons' do
# TODO separer en deux tests : check donnees et check redirect # TODO separer en deux tests : check donnees et check redirect
it 'Premier enregistrement des données' do describe 'Premier enregistrement des données' do
before do
dossier.draft!
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 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
dossier.reload
end
it "redirection vers la page recapitulative" do
expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif")
end end
it 'etat du dossier est soumis' do
expect(dossier.state).to eq('proposed')
end
end
# TODO changer les valeurs des champs et check in bdd # TODO changer les valeurs des champs et check in bdd
context 'En train de modifier les données de description du projet' do context 'En train de manipuler un dossier non brouillon' do
before 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, back_url: 'recapitulatif' dossier.proposed!
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
dossier.reload
end end
context 'Enregistrement d\'un commentaire informant la modification' do context 'Enregistrement d\'un commentaire informant la modification' do
@ -66,6 +79,10 @@ describe Users::DescriptionController, type: :controller do
it 'Redirection vers la page récapitulatif' do it 'Redirection vers la page récapitulatif' do
expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif")
end end
it 'etat du dossier n\'est pas soumis' do
expect(dossier.state).not_to eq('draft')
end
end end
end end

View file

@ -0,0 +1,106 @@
require 'spec_helper'
RSpec.describe Users::CarteController, type: :controller do
let(:bad_adresse) { 'babouba' }
let(:dossier) { create(:dossier, :with_user, :with_procedure) }
let!(:entreprise) { create(:entreprise, dossier: dossier) }
let!(:etablissement) { create(:etablissement, dossier: dossier) }
let(:dossier_id) { dossier.id }
let(:bad_dossier_id) { Dossier.count + 1000 }
let(:ref_dossier_carto) { 'IATRQPQY' }
let(:adresse) { etablissement.adresse }
describe 'GET #show' do
it 'returns http success' do
get :show, dossier_id: dossier_id
expect(response).to have_http_status(:success)
end
it 'redirection vers la liste des dossiers du user si dossier ID n\'existe pas' do
get :show, dossier_id: bad_dossier_id
expect(response).to redirect_to(controller: :dossiers, action: :index)
end
end
describe 'POST #save_ref_api_carto' do
context 'Aucune localisation n\'a jamais été enregistrée' do
it do
post :save_ref_api_carto, dossier_id: dossier_id, ref_dossier_carto: ref_dossier_carto
expect(response).to redirect_to("/users/dossiers/#{dossier_id}/description")
end
end
context 'En train de modifier la localisation' do
let(:dossier) { create(:dossier, :with_procedure, :with_user, ref_dossier_carto: ref_dossier_carto, state: 'proposed') }
before do
post :save_ref_api_carto, dossier_id: dossier_id, ref_dossier_carto: ref_dossier_carto
end
context 'Enregistrement d\'un commentaire informant la modification' do
subject { dossier.commentaires.last }
it 'champs email' do
expect(subject.email).to eq('Modification localisation')
end
it 'champs body' do
expect(subject.body).to eq('La localisation de la demande a été modifiée. 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("/users/dossiers/#{dossier_id}/recapitulatif")
end
end
end
describe '#get_position' do
context 'Geocodeur renvoie des positions nil' do
let(:etablissement) { create(:etablissement, adresse: bad_adresse) }
let(:dossier) { create(:dossier, :with_procedure, :with_user, etablissement: etablissement) }
before do
stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{bad_adresse}")
.to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {})
get :get_position, dossier_id: dossier.id
end
subject { dossier.reload }
it 'on enregistre des coordonnées lat et lon à 0' do
expect(subject.position_lat).to eq('0')
expect(subject.position_lon).to eq('0')
end
end
context 'retour d\'un fichier JSON avec 3 attributs' do
before do
stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}")
.to_return(status: 200, body: '{"query": "50 avenue des champs \u00e9lys\u00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs \u00c9lys\u00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs \u00c9lys\u00e9es", "citycode": "75108", "context": "75, \u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {})
get :get_position, dossier_id: dossier_id
end
subject { JSON.parse(response.body) }
it 'format JSON valide' do
expect(response.content_type).to eq('application/json')
end
it 'latitude' do
expect(subject['lat']).to eq('48.870374')
end
it 'longitude' do
expect(subject['lon']).to eq('2.306888')
end
it 'dossier_id' do
expect(subject['dossier_id']).to eq(dossier.id.to_s)
end
end
end
end

View file

@ -16,8 +16,11 @@ describe Users::DossiersController, type: :controller do
it { is_expected.to have_http_status(:success) } it { is_expected.to have_http_status(:success) }
end end
end end
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure, user: user) }
let(:procedure) { create(:procedure) }
let(:use_api_carto) { false }
let(:procedure) { create(:procedure, use_api_carto: use_api_carto) }
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
let(:dossier_id) { dossier.id } let(:dossier_id) { dossier.id }
let(:siret_not_found) { 999_999_999_999 } let(:siret_not_found) { 999_999_999_999 }
@ -132,9 +135,23 @@ describe Users::DossiersController, type: :controller do
end end
context 'when Checkbox is checked' do context 'when Checkbox is checked' do
let(:autorisation_donnees) { '1' } let(:autorisation_donnees) { '1' }
context 'procedure not use api carto' do
it 'redirects to demande' do it 'redirects to demande' do
expect(response).to redirect_to(controller: :description, action: :show, dossier_id: dossier.id) expect(response).to redirect_to(controller: :description, action: :show, dossier_id: dossier.id)
end end
end
context 'procedure use api carto' do
let(:use_api_carto) { true }
before do
put :update, id: dossier_id, dossier: { autorisation_donnees: autorisation_donnees }
end
it 'redirects to carte' do
expect(response).to redirect_to(controller: :carte, action: :show, dossier_id: dossier.id)
end
end
it 'update dossier' do it 'update dossier' do
dossier.reload dossier.reload

View file

@ -1,76 +0,0 @@
require 'spec_helper'
feature 'Carte#Show Page' do
#NOT USED ACTUALY
# let(:dossier) { create(:dossier) }
# let(:dossier_id) { dossier.id }
#
# before do
# visit "/dossiers/#{dossier_id}/carte"
# end
#
# context 'sur la page de la carte d\'une demande' do
# scenario 'le formulaire envoie vers /dossiers/:dossier_id/carte en #POST' do
# expect(page).to have_selector("form[action='/dossiers/#{dossier_id}/carte'][method=post]")
# end
#
# scenario 'la page des sources CSS de l\'API carto est chargée' do
# expect(page).to have_selector('#sources_CSS_api_carto')
# end
#
# scenario 'la page des sources JS de l\'API carto est chargée' do
# expect(page).to have_selector('#sources_JS_api_carto')
# end
#
# scenario 'la carte est bien présente' do
# expect(page).to have_selector('#map_qp')
# end
#
# context 'présence des inputs hidden' do
# scenario 'stockage de la référence du dossie de l\'API carto' do
# expect(page).to have_selector('input[type=hidden][id=ref_dossier][name=ref_dossier]')
# end
#
# scenario 'stockage de l\'URL back si elle existe' do
# expect(page).to have_selector('input[type=hidden][id=back_url][name=back_url]')
# end
# end
#
# context 'si la page précédente n\'est pas recapitulatif' do
# scenario 'le bouton "Etape suivante" est présent' do
# expect(page).to have_selector('#etape_suivante')
# end
#
# scenario 'le bouton Etape suivante possède un onclick correct' do
# expect(page).to have_selector('input[type=submit][id=etape_suivante][onclick=\'submit_check_draw(event)\']')
# end
# end
#
# context 'si la page précédente est recapitularif' do
# before do
# visit "/dossiers/#{dossier_id}/carte?back_url=recapitulatif"
# end
#
# scenario 'le bouton "Etape suivante" n\'est pas présent' do
# expect(page).to_not have_selector('#etape_suivante')
# end
#
# scenario 'input hidden back_url a pour valeur le params GET' do
# expect(page).to have_selector('input[type=hidden][id=back_url][value=recapitulatif]')
# end
#
# scenario 'le bouton "Modification terminé" est présent' do
# expect(page).to have_selector('#modification_terminee')
# end
#
# scenario 'le bouton Etape suivante possède un onclick correct' do
# expect(page).to have_selector('input[type=submit][id=modification_terminee][onclick=\'submit_check_draw(event)\']')
# end
#
# scenario 'le lien de retour au récapitulatif est présent' do
# expect(page).to have_selector("a[href='/dossiers/#{dossier_id}/recapitulatif']")
# end
# end
# end
end

View file

@ -1,133 +0,0 @@
require 'spec_helper'
feature 'Description#Show Page' do
let(:user) { create(:user) }
let(:dossier) { create(:dossier, :with_procedure, user: user) }
let(:dossier_id) { dossier.id }
before do
visit users_dossier_description_path(dossier_id: dossier_id)
end
context 'tous les attributs sont présents sur la page' do
scenario 'Le formulaire envoie vers /users/dossiers/:dossier_id/description en #POST' do
expect(page).to have_selector("form[action='/users/dossiers/#{dossier_id}/description'][method=post]")
end
scenario 'Nom du projet' do
expect(page).to have_selector('input[id=nom_projet][name=nom_projet]')
end
scenario 'Description du projet' do
expect(page).to have_selector('textarea[id=description][name=description]')
end
scenario 'Montant du projet' do
expect(page).to have_selector('input[id=montant_projet][name=montant_projet]')
end
scenario 'Montant du projet est de type number' do
expect(page).to have_selector('input[type=number][id=montant_projet]')
end
scenario 'Montant des aides du projet' do
expect(page).to have_selector('input[id=montant_aide_demande][name=montant_aide_demande]')
end
scenario 'Montant des aides du projet est de type number' do
expect(page).to have_selector('input[type=number][id=montant_aide_demande]')
end
scenario 'Date prévisionnelle du projet' do
expect(page).to have_selector('input[id=date_previsionnelle][name=date_previsionnelle]')
end
scenario 'Date prévisionnelle du projet est de type text avec un data-provide=datepicker' do
expect(page).to have_selector('input[type=text][id=date_previsionnelle][data-provide=datepicker]')
end
scenario 'Charger votre CERFA (PDF)' do
expect(page).to have_selector('input[type=file][name=cerfa_pdf][id=cerfa_pdf]')
end
scenario 'Lien CERFA' do
expect(page).to have_selector('#lien_cerfa')
end
end
context 'si la page précédente n\'est pas recapitulatif' do
scenario 'le bouton "Terminer" est présent' do
expect(page).to have_selector('#suivant')
end
end
context 'si la page précédente est recapitularif' do
before do
visit "/users/dossiers/#{dossier_id}/description?back_url=recapitulatif"
end
scenario 'le bouton "Terminer" n\'est pas présent' do
expect(page).to_not have_selector('#suivant')
end
scenario 'input hidden back_url a pour valeur le params GET' do
expect(page).to have_selector('input[type=hidden][id=back_url][value=recapitulatif]')
end
scenario 'le bouton "Modification terminé" est présent' do
expect(page).to have_selector('#modification_terminee')
end
scenario 'le lien de retour au récapitulatif est présent' do
expect(page).to have_selector("a[href='/users/dossiers/#{dossier_id}/recapitulatif']")
end
end
context 'les valeurs sont réaffichées si elles sont présentes dans la BDD' do
let!(:dossier) do
create(:dossier, :with_procedure,
nom_projet: 'Projet de test',
description: 'Description de test',
montant_projet: 12_000,
montant_aide_demande: 3000,
date_previsionnelle: '20/01/2016',
user: user)
end
scenario 'Nom du projet' do
expect(page).to have_selector("input[id=nom_projet][value='#{dossier.nom_projet}']")
end
scenario 'Description du projet' do
expect(page).to have_content("#{dossier.description}")
end
scenario 'Montant du projet' do
expect(page).to have_selector("input[id=montant_projet][value='#{dossier.montant_projet}']")
end
scenario 'Montant des aides du projet' do
expect(page).to have_selector("input[id=montant_aide_demande][value='#{dossier.montant_aide_demande}']")
end
scenario 'Date prévisionnelle du projet' do
expect(page).to have_selector("input[id=date_previsionnelle][value='#{dossier.date_previsionnelle}']")
end
end
context 'Pièces justificatives' do
let(:all_type_pj_procedure_id) { dossier.procedure.type_de_piece_justificative_ids }
context 'la liste des pièces justificatives a envoyé est affichée' do
it 'RIB' do
expect(page).to have_selector("input[type=file][name=piece_justificative_#{all_type_pj_procedure_id[0]}][id=piece_justificative_#{all_type_pj_procedure_id[0]}]")
end
end
context 'la liste des pièces récupérées automatiquement est signaliée' do
it 'Attestation MSA' do
expect(page.find_by_id("piece_justificative_#{all_type_pj_procedure_id[1]}")).to have_content('Nous l\'avons récupéré pour vous.')
end
end
end
end

View file

@ -28,7 +28,7 @@ feature 'user is on description page' do
context 'he adds cerfa' do context 'he adds cerfa' do
before do before do
attach_file('cerfa_pdf', File.path('spec/support/files/dossierPDF.pdf')) attach_file('cerfa_pdf', File.path('spec/support/files/dossierPDF.pdf'))
click_on("Terminer la procédure") click_on("Soumettre mon dossier")
dossier.reload dossier.reload
end end
it 'fills dossier cerfa' do it 'fills dossier cerfa' do
@ -39,7 +39,7 @@ feature 'user is on description page' do
before do before do
file_input_id = 'piece_justificative_' + dossier.pieces_justificatives.first.type.to_s file_input_id = 'piece_justificative_' + dossier.pieces_justificatives.first.type.to_s
attach_file(file_input_id, File.path('spec/support/files/dossierPDF.pdf')) attach_file(file_input_id, File.path('spec/support/files/dossierPDF.pdf'))
click_on('Terminer la procédure') click_on('Soumettre mon dossier')
dossier.reload dossier.reload
end end
scenario 'fills the given piece_justificative' do scenario 'fills the given piece_justificative' do

View file

@ -52,7 +52,7 @@ feature 'user path for dossier creation' do
page.find_by_id('montant_projet').set 10_000 page.find_by_id('montant_projet').set 10_000
page.find_by_id('montant_aide_demande').set 1_000 page.find_by_id('montant_aide_demande').set 1_000
page.find_by_id('date_previsionnelle').set '09/09/2015' page.find_by_id('date_previsionnelle').set '09/09/2015'
page.click_on 'Terminer la procédure' page.click_on 'Soumettre mon dossier'
end end
scenario 'user is on recap page' do scenario 'user is on recap page' do
expect(page).to have_css('#recap_dossier') expect(page).to have_css('#recap_dossier')

View file

@ -0,0 +1,68 @@
require 'spec_helper'
describe 'users/carte/show.html.haml', type: :view do
let(:state) { 'draft' }
let(:dossier) { create(:dossier, :with_procedure, :with_user, state: state) }
let(:dossier_id) { dossier.id }
before do
assign(:dossier, dossier)
end
context 'sur la page de la carte d\'une demande' do
before do
render
end
it 'le formulaire envoie vers /users/dossiers/:dossier_id/carte en #POST' do
expect(rendered).to have_selector("form[action='/users/dossiers/#{dossier_id}/carte'][method=post]")
end
it 'la page des sources CSS de l\'API carto est chargée' do
expect(rendered).to have_selector('#sources_CSS_api_carto')
end
it 'la page des sources JS de l\'API carto est chargée' do
expect(rendered).to have_selector('#sources_JS_api_carto')
end
it 'la carte est bien présente' do
expect(rendered).to have_selector('#map_qp')
end
context 'présence des inputs hidden' do
it 'stockage de la référence du dossie de l\'API carto' do
expect(rendered).to have_selector('input[type=hidden][id=ref_dossier][name=ref_dossier]')
end
end
context 'si la page précédente n\'est pas recapitulatif' do
it 'le bouton "Etape suivante" est présent' do
expect(rendered).to have_selector('#etape_suivante')
end
it 'le bouton Etape suivante possède un onclick correct' do
expect(rendered).to have_selector('input[type=submit][id=etape_suivante][onclick=\'submit_check_draw(event)\']')
end
end
context 'si la page précédente est recapitularif' do
let(:state) { 'proposed' }
it 'le bouton "Etape suivante" n\'est pas présent' do
expect(rendered).to_not have_selector('#etape_suivante')
end
it 'le bouton "Modification terminé" est présent' do
expect(rendered).to have_selector('#modification_terminee')
end
it 'le bouton "Modification terminé" possède un onclick correct' do
expect(rendered).to have_selector('input[type=submit][id=modification_terminee][onclick=\'submit_check_draw(event)\']')
end
it 'le lien de retour au récapitulatif est présent' do
expect(rendered).to have_selector("a[href='/users/dossiers/#{dossier_id}/recapitulatif']")
end
end
end
end

View file

@ -0,0 +1,147 @@
require 'spec_helper'
describe 'users/description/show.html.haml', type: :view do
let(:user) { create(:user) }
let(:dossier) { create(:dossier, :with_procedure, user: user) }
let(:dossier_id) { dossier.id }
before do
assign(:dossier, dossier)
assign(:procedure, dossier.procedure)
end
context 'tous les attributs sont présents sur la page' do
before do
render
end
it 'Le formulaire envoie vers /users/dossiers/:dossier_id/description en #POST' do
expect(rendered).to have_selector("form[action='/users/dossiers/#{dossier_id}/description'][method=post]")
end
it 'Nom du projet' do
expect(rendered).to have_selector('input[id=nom_projet][name=nom_projet]')
end
it 'Description du projet' do
expect(rendered).to have_selector('textarea[id=description][name=description]')
end
it 'Montant du projet' do
expect(rendered).to have_selector('input[id=montant_projet][name=montant_projet]')
end
it 'Montant du projet est de type number' do
expect(rendered).to have_selector('input[type=number][id=montant_projet]')
end
it 'Montant des aides du projet' do
expect(rendered).to have_selector('input[id=montant_aide_demande][name=montant_aide_demande]')
end
it 'Montant des aides du projet est de type number' do
expect(rendered).to have_selector('input[type=number][id=montant_aide_demande]')
end
it 'Date prévisionnelle du projet' do
expect(rendered).to have_selector('input[id=date_previsionnelle][name=date_previsionnelle]')
end
it 'Date prévisionnelle du projet est de type text avec un data-provide=datepicker' do
expect(rendered).to have_selector('input[type=text][id=date_previsionnelle][data-provide=datepicker]')
end
it 'Charger votre CERFA (PDF)' do
expect(rendered).to have_selector('input[type=file][name=cerfa_pdf][id=cerfa_pdf]')
end
it 'Lien CERFA' do
expect(rendered).to have_selector('#lien_cerfa')
end
end
context 'si la page précédente n\'est pas recapitulatif' do
before do
render
end
it 'le bouton "Terminer" est présent' do
expect(rendered).to have_selector('#suivant')
end
end
context 'si la page précédente est recapitularif' do
before do
dossier.proposed!
dossier.reload
render
end
it 'le bouton "Terminer" n\'est pas présent' do
expect(rendered).to_not have_selector('#suivant')
end
it 'le bouton "Modification terminé" est présent' do
expect(rendered).to have_selector('#modification_terminee')
end
it 'le lien de retour au récapitulatif est présent' do
expect(rendered).to have_selector("a[href='/users/dossiers/#{dossier_id}/recapitulatif']")
end
end
context 'les valeurs sont réaffichées si elles sont présentes dans la BDD' do
let!(:dossier) do
create(:dossier, :with_procedure,
nom_projet: 'Projet de test',
description: 'Description de test',
montant_projet: 12_000,
montant_aide_demande: 3000,
date_previsionnelle: '20/01/2016',
user: user)
end
before do
render
end
it 'Nom du projet' do
expect(rendered).to have_selector("input[id=nom_projet][value='#{dossier.nom_projet}']")
end
it 'Description du projet' do
expect(rendered).to have_content("#{dossier.description}")
end
it 'Montant du projet' do
expect(rendered).to have_selector("input[id=montant_projet][value='#{dossier.montant_projet}']")
end
it 'Montant des aides du projet' do
expect(rendered).to have_selector("input[id=montant_aide_demande][value='#{dossier.montant_aide_demande}']")
end
it 'Date prévisionnelle du projet' do
expect(rendered).to have_selector("#date_previsionnelle", dossier.date_previsionnelle)
end
end
context 'Pièces justificatives' do
let(:all_type_pj_procedure_id) { dossier.procedure.type_de_piece_justificative_ids }
before do
render
end
context 'la liste des pièces justificatives a envoyé est affichée' do
it 'RIB' do
expect(rendered).to have_css("#piece_justificative_#{all_type_pj_procedure_id[0]}")
end
end
context 'la liste des pièces récupérées automatiquement est signaliée' do
it 'Attestation MSA' do
expect(rendered).to have_selector("#piece_justificative_#{all_type_pj_procedure_id[1]}","Nous l'avons récupéré pour vous.")
end
end
end
end