Merge branch 'develop' of github.com:sgmap/tps into develop
Conflicts: db/schema.rb
This commit is contained in:
commit
f75f0e26d6
80 changed files with 694 additions and 650 deletions
|
@ -24,5 +24,4 @@
|
|||
//= require concavehull.min
|
||||
//= require graham_scan.min
|
||||
//= require leaflet.freedraw
|
||||
//= require smart_listing
|
||||
//= require franceconnect_kit
|
||||
//= require smart_listing
|
61
app/assets/javascripts/carte/cadastre.js
Normal file
61
app/assets/javascripts/carte/cadastre.js
Normal file
|
@ -0,0 +1,61 @@
|
|||
function cadastre_active() {
|
||||
return $("#map.cadastre").length > 0
|
||||
}
|
||||
|
||||
function get_cadastre(coordinates) {
|
||||
if (!cadastre_active())
|
||||
return;
|
||||
|
||||
var cadastre;
|
||||
|
||||
$.ajax({
|
||||
method: 'post',
|
||||
url: '/users/dossiers/' + dossier_id + '/carte/cadastre',
|
||||
data: {coordinates: JSON.stringify(coordinates)},
|
||||
dataType: 'json',
|
||||
async: false
|
||||
}).done(function (data) {
|
||||
cadastre = data
|
||||
});
|
||||
|
||||
return cadastre['cadastres'];
|
||||
}
|
||||
|
||||
function display_cadastre(cadastre_list) {
|
||||
if (!cadastre_active())
|
||||
return;
|
||||
|
||||
cadastre_array = cadastre_list;
|
||||
|
||||
$("#cadastre.list ul").html('');
|
||||
|
||||
new_cadastreLayer();
|
||||
|
||||
if (cadastre_array.length > 0) {
|
||||
cadastre_array.forEach(function (cadastre) {
|
||||
$("#cadastre.list ul").append('<li> Parcelle n°' + cadastre.numero + ' - Feuille ' + cadastre.code_arr + ' ' + cadastre.section + ' ' + cadastre.feuille+ '</li>');
|
||||
|
||||
cadastreItems.addData(cadastre.geometry);
|
||||
});
|
||||
|
||||
cadastreItems.setStyle({
|
||||
fillColor: '#8a6d3b',
|
||||
weight: 2,
|
||||
opacity: 0.3,
|
||||
color: 'white',
|
||||
dashArray: '3',
|
||||
fillOpacity: 0.7
|
||||
})
|
||||
}
|
||||
else
|
||||
$("#cadastre.list ul").html('<li>AUCUN</li>');
|
||||
}
|
||||
|
||||
function new_cadastreLayer() {
|
||||
if (typeof cadastreItems != 'undefined')
|
||||
map.removeLayer(cadastreItems);
|
||||
|
||||
cadastreItems = new L.GeoJSON();
|
||||
|
||||
cadastreItems.addTo(map);
|
||||
}
|
|
@ -8,22 +8,27 @@ function initCarto() {
|
|||
|
||||
position = get_position() || default_position();
|
||||
|
||||
if (position.lon == "0" && position.lat == "0")
|
||||
position = default_position();
|
||||
|
||||
if (typeof position.zoom == 'undefined')
|
||||
position.zoom = 13;
|
||||
|
||||
map = L.map("map", {
|
||||
center: new L.LatLng(position.lat, position.lon),
|
||||
zoom: position.zoom,
|
||||
layers: [OSM]
|
||||
});
|
||||
|
||||
if (qp_active())
|
||||
display_qp(JSON.parse($("#quartier_prioritaires").val()));
|
||||
|
||||
if (cadastre_active())
|
||||
display_cadastre(JSON.parse($("#cadastres").val()));
|
||||
|
||||
freeDraw = new L.FreeDraw();
|
||||
freeDraw.options.setSmoothFactor(4);
|
||||
freeDraw.options.simplifyPolygon = false;
|
||||
|
||||
map.addLayer(freeDraw);
|
||||
|
||||
if ($("#json_latlngs").val() != '' && $("#json_latlngs").val() != '[]') {
|
||||
map.setZoom(18);
|
||||
|
||||
$.each($.parseJSON($("#json_latlngs").val()), function (i, val) {
|
||||
freeDraw.createPolygon(val);
|
||||
});
|
||||
|
@ -34,21 +39,26 @@ function initCarto() {
|
|||
map.setView(new L.LatLng(position.lat, position.lon), 5);
|
||||
|
||||
add_event_freeDraw();
|
||||
|
||||
if (qp_active())
|
||||
display_qp(JSON.parse($("#quartier_prioritaires").val()));
|
||||
}
|
||||
|
||||
function default_position (){
|
||||
return {lon: LON, lat: LAT, zoom: 13}
|
||||
}
|
||||
|
||||
function get_external_data (latLngs){
|
||||
|
||||
if (qp_active())
|
||||
display_qp(get_qp(latLngs));
|
||||
|
||||
if (cadastre_active())
|
||||
display_cadastre(get_cadastre(latLngs));
|
||||
}
|
||||
|
||||
function add_event_freeDraw() {
|
||||
freeDraw.on('markers', function (e) {
|
||||
$("#json_latlngs").val(JSON.stringify(e.latLngs));
|
||||
|
||||
if (qp_active())
|
||||
display_qp(get_qp(e.latLngs));
|
||||
get_external_data(e.latLngs);
|
||||
});
|
||||
|
||||
$("#new").on('click', function (e) {
|
||||
|
@ -73,63 +83,12 @@ function get_position() {
|
|||
async: false
|
||||
}).done(function (data) {
|
||||
position = data
|
||||
position.zoom = default_position().zoom
|
||||
});
|
||||
|
||||
return position;
|
||||
}
|
||||
|
||||
function qp_active() {
|
||||
return $("#map.qp").length > 0
|
||||
}
|
||||
|
||||
function get_qp(coordinates) {
|
||||
if (!qp_active())
|
||||
return;
|
||||
|
||||
var qp;
|
||||
|
||||
$.ajax({
|
||||
method: 'post',
|
||||
url: '/users/dossiers/' + dossier_id + '/carte/qp',
|
||||
data: {coordinates: JSON.stringify(coordinates)},
|
||||
dataType: 'json',
|
||||
async: false
|
||||
}).done(function (data) {
|
||||
qp = data
|
||||
});
|
||||
|
||||
return qp['quartier_prioritaires'];
|
||||
}
|
||||
|
||||
function display_qp(qp_list) {
|
||||
if (!qp_active())
|
||||
return;
|
||||
|
||||
qp_array = jsObject_to_array(qp_list);
|
||||
|
||||
$("#qp_list ul").html('');
|
||||
|
||||
new_qpLayer();
|
||||
|
||||
if (qp_array.length > 0) {
|
||||
qp_array.forEach(function (qp) {
|
||||
$("#qp_list ul").append('<li>' + qp.commune + ' : ' + qp.nom + '</li>');
|
||||
|
||||
qpItems.addData(qp.geometry);
|
||||
});
|
||||
}
|
||||
else
|
||||
$("#qp_list ul").html('<li>AUCUN</li>');
|
||||
}
|
||||
|
||||
function new_qpLayer() {
|
||||
if (typeof qpItems != 'undefined')
|
||||
map.removeLayer(qpItems);
|
||||
|
||||
qpItems = new L.GeoJSON();
|
||||
qpItems.addTo(map);
|
||||
}
|
||||
|
||||
function jsObject_to_array(qp_list) {
|
||||
return Object.keys(qp_list).map(function (v) {
|
||||
return qp_list[v];
|
60
app/assets/javascripts/carte/qp.js
Normal file
60
app/assets/javascripts/carte/qp.js
Normal file
|
@ -0,0 +1,60 @@
|
|||
function qp_active() {
|
||||
return $("#map.qp").length > 0
|
||||
}
|
||||
|
||||
function get_qp(coordinates) {
|
||||
if (!qp_active())
|
||||
return;
|
||||
|
||||
var qp;
|
||||
|
||||
$.ajax({
|
||||
method: 'post',
|
||||
url: '/users/dossiers/' + dossier_id + '/carte/qp',
|
||||
data: {coordinates: JSON.stringify(coordinates)},
|
||||
dataType: 'json',
|
||||
async: false
|
||||
}).done(function (data) {
|
||||
qp = data
|
||||
});
|
||||
|
||||
return qp['quartier_prioritaires'];
|
||||
}
|
||||
|
||||
function display_qp(qp_list) {
|
||||
if (!qp_active())
|
||||
return;
|
||||
|
||||
qp_array = jsObject_to_array(qp_list);
|
||||
|
||||
$("#qp.list ul").html('');
|
||||
|
||||
new_qpLayer();
|
||||
|
||||
if (qp_array.length > 0) {
|
||||
qp_array.forEach(function (qp) {
|
||||
$("#qp.list ul").append('<li>' + qp.commune + ' : ' + qp.nom + '</li>');
|
||||
|
||||
qpItems.addData(qp.geometry);
|
||||
});
|
||||
|
||||
qpItems.setStyle({
|
||||
fillColor: '#31708f',
|
||||
weight: 2,
|
||||
opacity: 0.3,
|
||||
color: 'white',
|
||||
dashArray: '3',
|
||||
fillOpacity: 0.7
|
||||
})
|
||||
}
|
||||
else
|
||||
$("#qp.list ul").html('<li>AUCUN</li>');
|
||||
}
|
||||
|
||||
function new_qpLayer() {
|
||||
if (typeof qpItems != 'undefined')
|
||||
map.removeLayer(qpItems);
|
||||
|
||||
qpItems = new L.GeoJSON();
|
||||
qpItems.addTo(map);
|
||||
}
|
|
@ -2,132 +2,6 @@ $(document).on('page:load', franceconnect_kit);
|
|||
$(document).ready(franceconnect_kit);
|
||||
|
||||
function franceconnect_kit() {
|
||||
init_franceconnect_kit();
|
||||
//franceConnectKit.init();
|
||||
}
|
||||
|
||||
var fconnect = {
|
||||
tracesUrl: '/traces',
|
||||
aboutUrl: ''
|
||||
};
|
||||
|
||||
function init_franceconnect_kit() {
|
||||
initCurrentHostnameSource();
|
||||
includeFCCss();
|
||||
var fconnectProfile = document.getElementById('fconnect-profile');
|
||||
if (fconnectProfile) {
|
||||
var fcLogoutUrl = fconnectProfile.getAttribute('data-fc-logout-url');
|
||||
var access = createFCAccessElement(fcLogoutUrl);
|
||||
fconnectProfile.parentNode.appendChild(access);
|
||||
fconnectProfile.onclick = toogleElement.bind(access);
|
||||
}
|
||||
}
|
||||
|
||||
function initCurrentHostnameSource() {
|
||||
var currentScript = 'https://fcp.integ01.dev-franceconnect.fr/js/franceconnect.js';
|
||||
var parseUrl = currentScript.split('/');
|
||||
fconnect.currentHost = parseUrl[2];
|
||||
}
|
||||
|
||||
function includeFCCss() {
|
||||
var linkCss = document.createElement('link');
|
||||
linkCss.rel = 'stylesheet';
|
||||
linkCss.href = '//' + fconnect.currentHost + '/stylesheets/franceconnect.css';
|
||||
linkCss.type = 'text/css';
|
||||
linkCss.media = 'screen';
|
||||
|
||||
document.getElementsByTagName('head')[0].appendChild(linkCss);
|
||||
}
|
||||
|
||||
function toogleElement(event) {
|
||||
event.preventDefault();
|
||||
if (this.style.display === "block") {
|
||||
this.style.display = "none";
|
||||
} else {
|
||||
this.style.display = "block";
|
||||
}
|
||||
}
|
||||
|
||||
function closeFCPopin(event) {
|
||||
event.preventDefault();
|
||||
fconnect.popin.className = 'fade-out';
|
||||
setTimeout(function() {
|
||||
document.body.removeChild(fconnect.popin);
|
||||
}, 200);
|
||||
}
|
||||
|
||||
function openFCPopin() {
|
||||
fconnect.popin = document.createElement('div');
|
||||
fconnect.popin.id = 'fc-background';
|
||||
|
||||
var iframe = createFCIframe();
|
||||
|
||||
document.body.appendChild(fconnect.popin);
|
||||
|
||||
fconnect.popin.appendChild(iframe);
|
||||
|
||||
setTimeout(function() {
|
||||
fconnect.popin.className = 'fade-in';
|
||||
}, 200);
|
||||
}
|
||||
|
||||
function createFCIframe() {
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.setAttribute('id', 'fconnect-iframe');
|
||||
iframe.frameBorder = 0;
|
||||
iframe.name = 'fconnect-iframe';
|
||||
return iframe;
|
||||
}
|
||||
|
||||
function createFCAccessElement(logoutUrl) {
|
||||
var access = document.createElement('div');
|
||||
access.id = 'fconnect-access';
|
||||
access.innerHTML = '<h5>Vous êtes identifié grâce à FranceConnect</h5>';
|
||||
access.appendChild(createAboutLink());
|
||||
access.appendChild(document.createElement('hr'));
|
||||
access.appendChild(createHistoryLink());
|
||||
access.appendChild(createLogoutElement(logoutUrl));
|
||||
return access;
|
||||
}
|
||||
|
||||
function createHistoryLink() {
|
||||
|
||||
var historyLink = document.createElement('a');
|
||||
historyLink.target = 'fconnect-iframe';
|
||||
historyLink.href = '//' + fconnect.currentHost + fconnect.tracesUrl;
|
||||
historyLink.onclick = openFCPopin;
|
||||
historyLink.innerHTML = 'Historique des connexions/échanges de données';
|
||||
|
||||
return historyLink;
|
||||
}
|
||||
|
||||
function createAboutLink() {
|
||||
var aboutLink = document.createElement('a');
|
||||
aboutLink.href = fconnect.aboutUrl ? '//' + fconnect.currentHost + fconnect.aboutUrl : '#';
|
||||
if (fconnect.aboutUrl) {
|
||||
aboutLink.target = 'fconnect-iframe';
|
||||
aboutLink.onclick = openFCPopin;
|
||||
}
|
||||
aboutLink.innerHTML = 'Qu\'est-ce-que FranceConnect ?';
|
||||
|
||||
return aboutLink;
|
||||
}
|
||||
|
||||
function createLogoutElement(logoutUrl) {
|
||||
var elm = document.createElement('div');
|
||||
elm.className = 'logout';
|
||||
elm.innerHTML = '<a class="btn btn-default" href="' + logoutUrl + '">Se déconnecter</a>'
|
||||
return elm;
|
||||
}
|
||||
|
||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
|
||||
|
||||
// Listen to message from child window
|
||||
eventer(messageEvent,function(e) {
|
||||
var key = e.message ? "message" : "data";
|
||||
var data = e[key];
|
||||
if(data === 'close_popup'){
|
||||
closeFCPopin(e);
|
||||
}
|
||||
},false);
|
||||
|
|
|
@ -15,10 +15,24 @@ table {
|
|||
height: 600px;
|
||||
}
|
||||
|
||||
#map.qp {
|
||||
#map.qp, #map.cadastre {
|
||||
@extend .col-md-9;
|
||||
@extend .col-lg-9;
|
||||
}
|
||||
|
||||
.list {
|
||||
@extend .col-md-3;
|
||||
@extend .col-lg-3;
|
||||
margin-bottom: 20px;
|
||||
|
||||
h3 {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
ul li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#infos_dossier {
|
||||
|
@ -28,18 +42,7 @@ table {
|
|||
}
|
||||
}
|
||||
|
||||
#qp_list {
|
||||
@extend .col-md-3;
|
||||
@extend .col-lg-3;
|
||||
|
||||
h3 {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
ul li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
#map section.overlay {
|
||||
position: absolute;
|
||||
|
|
|
@ -11,7 +11,6 @@ class Admin::ProceduresController < AdminController
|
|||
partial: "admin/procedures/list",
|
||||
array: true
|
||||
|
||||
@page = 'active'
|
||||
active_class
|
||||
end
|
||||
|
||||
|
@ -21,7 +20,6 @@ class Admin::ProceduresController < AdminController
|
|||
partial: "admin/procedures/list",
|
||||
array: true
|
||||
|
||||
@page = 'archived'
|
||||
archived_class
|
||||
|
||||
render 'index'
|
||||
|
@ -78,11 +76,11 @@ class Admin::ProceduresController < AdminController
|
|||
end
|
||||
|
||||
def active_class
|
||||
@active_class = 'active' if @page == 'active'
|
||||
@active_class = 'active'
|
||||
end
|
||||
|
||||
def archived_class
|
||||
@archived_class = 'active' if @page == 'archived'
|
||||
@archived_class = 'active'
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
class FranceConnect::EntrepriseController < ApplicationController
|
||||
def login
|
||||
client = FranceConnectEntrepriseClient.new
|
||||
|
||||
session[:state] = SecureRandom.hex(16)
|
||||
session[:nonce] = SecureRandom.hex(16)
|
||||
|
||||
authorization_uri = client.authorization_uri(
|
||||
scope: [:profile, :email],
|
||||
state: session[:state],
|
||||
nonce: session[:nonce]
|
||||
)
|
||||
redirect_to authorization_uri
|
||||
end
|
||||
|
||||
def callback
|
||||
return redirect_to new_user_session_path unless params.has_key?(:code)
|
||||
|
||||
user_infos = FranceConnectService.retrieve_user_informations_entreprise(params[:code])
|
||||
|
||||
unless user_infos.nil?
|
||||
@user = User.find_for_france_connect(user_infos.email, user_infos.siret)
|
||||
|
||||
sign_in @user
|
||||
|
||||
@user.loged_in_with_france_connect = 'entreprise'
|
||||
@user.save
|
||||
|
||||
redirect_to stored_location_for(current_user) || signed_in_root_path(current_user)
|
||||
end
|
||||
rescue Rack::OAuth2::Client::Error => e
|
||||
Rails.logger.error e.message
|
||||
flash.alert = t('errors.messages.france_connect.connexion')
|
||||
redirect_to(new_user_session_path)
|
||||
end
|
||||
end
|
|
@ -33,20 +33,21 @@ class FranceConnect::ParticulierController < ApplicationController
|
|||
end
|
||||
|
||||
def check_email
|
||||
return create if User.find_by_email(params[:user][:email]).nil?
|
||||
user = User.find_by_email(params[:user][:email])
|
||||
|
||||
return create if user.nil?
|
||||
return redirect_to root_path if france_connect_particulier_id_blank?
|
||||
|
||||
unless params[:user][:password].nil?
|
||||
user = User.find_by_email(params[:user][:email])
|
||||
valid_password = user.valid_password?(params[:user][:password])
|
||||
|
||||
if valid_password
|
||||
if user.valid_password?(params[:user][:password])
|
||||
user.update_attributes create_user_params
|
||||
return connect_france_connect_particulier user
|
||||
else
|
||||
flash.now.alert = 'Mot de passe invalide'
|
||||
end
|
||||
end
|
||||
|
||||
@user = (User.new create_user_params).decorate
|
||||
end
|
||||
|
||||
|
|
|
@ -18,14 +18,27 @@ class Users::CarteController < UsersController
|
|||
dossier = current_user_dossier
|
||||
|
||||
dossier.quartier_prioritaires.map(&:destroy)
|
||||
dossier.cadastres.map(&:destroy)
|
||||
|
||||
unless params[:json_latlngs].blank?
|
||||
qp_list = generate_qp JSON.parse(params[:json_latlngs])
|
||||
if dossier.procedure.module_api_carto.quartiers_prioritaires?
|
||||
qp_list = generate_qp JSON.parse(params[:json_latlngs])
|
||||
|
||||
qp_list.each do |key, qp|
|
||||
qp.merge!({dossier_id: dossier.id})
|
||||
qp[:geometry] = qp[:geometry].to_json
|
||||
QuartierPrioritaire.new(qp).save
|
||||
qp_list.each do |key, qp|
|
||||
qp.merge!({dossier_id: dossier.id})
|
||||
qp[:geometry] = qp[:geometry].to_json
|
||||
QuartierPrioritaire.create(qp)
|
||||
end
|
||||
end
|
||||
|
||||
if dossier.procedure.module_api_carto.cadastre?
|
||||
cadastre_list = generate_cadastre JSON.parse(params[:json_latlngs])
|
||||
|
||||
cadastre_list.each do |cadastre|
|
||||
cadastre.merge!({dossier_id: dossier.id})
|
||||
cadastre[:geometry] = cadastre[:geometry].to_json
|
||||
Cadastre.create(cadastre)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -60,6 +73,12 @@ class Users::CarteController < UsersController
|
|||
render json: {quartier_prioritaires: qp}
|
||||
end
|
||||
|
||||
def get_cadastre
|
||||
cadastres = generate_cadastre JSON.parse(params[:coordinates])
|
||||
|
||||
render json: {cadastres: cadastres}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def generate_qp coordinates
|
||||
|
@ -72,4 +91,15 @@ class Users::CarteController < UsersController
|
|||
|
||||
qp
|
||||
end
|
||||
|
||||
def generate_cadastre coordinates
|
||||
cadastre = []
|
||||
|
||||
coordinates.each_with_index do |coordinate, index|
|
||||
coordinate = coordinates[index].map { |latlng| [latlng['lng'], latlng['lat']] }
|
||||
cadastre << CARTO::SGMAP::Cadastre::Adapter.new(coordinate).to_params
|
||||
end
|
||||
|
||||
cadastre.flatten
|
||||
end
|
||||
end
|
||||
|
|
|
@ -37,43 +37,21 @@ class Users::DossiersController < UsersController
|
|||
end
|
||||
|
||||
def create
|
||||
etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(siret).to_params)
|
||||
entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(siren).to_params)
|
||||
rna_information = SIADE::RNAAdapter.new(siret).to_params
|
||||
exercices = SIADE::ExercicesAdapter.new(siret).to_params
|
||||
mandataires_sociaux = SIADE::MandatairesSociauxAdapter.new(siren).to_params
|
||||
entreprise_adapter = SIADE::EntrepriseAdapter.new(siren)
|
||||
|
||||
unless exercices.nil?
|
||||
exercices.each_value do |exercice|
|
||||
exercice = Exercice.new(exercice)
|
||||
exercice.etablissement = etablissement
|
||||
exercice.save
|
||||
end
|
||||
end
|
||||
mandataire_social = false
|
||||
dossier = Dossier.create(user: current_user,
|
||||
state: 'draft',
|
||||
procedure_id: create_params[:procedure_id],
|
||||
mandataire_social: mandataire_social?(entreprise_adapter.mandataires_sociaux))
|
||||
|
||||
mandataires_sociaux.each do |k, mandataire|
|
||||
break mandataire_social = true if !current_user.france_connect_particulier_id.nil? &&
|
||||
mandataire[:nom] == current_user.family_name &&
|
||||
mandataire[:prenom] == current_user.given_name &&
|
||||
mandataire[:date_naissance_timestamp] == current_user.birthdate.to_time.to_i
|
||||
entreprise = dossier.create_entreprise(entreprise_adapter.to_params)
|
||||
|
||||
end
|
||||
entreprise.create_rna_information(SIADE::RNAAdapter.new(siret).to_params)
|
||||
|
||||
dossier = Dossier.create(user: current_user, state: 'draft', procedure_id: create_params[:procedure_id], mandataire_social: mandataire_social)
|
||||
etablissement = dossier.create_etablissement(SIADE::EtablissementAdapter.new(siret).to_params
|
||||
.merge({entreprise_id: entreprise.id}))
|
||||
|
||||
entreprise.dossier = dossier
|
||||
entreprise.save
|
||||
|
||||
unless rna_information.nil?
|
||||
rna_information = RNAInformation.new(rna_information)
|
||||
rna_information.entreprise = entreprise
|
||||
rna_information.save
|
||||
end
|
||||
|
||||
etablissement.dossier = dossier
|
||||
etablissement.entreprise = entreprise
|
||||
etablissement.save
|
||||
etablissement.exercices.create(SIADE::ExercicesAdapter.new(siret).to_params)
|
||||
|
||||
redirect_to url_for(controller: :dossiers, action: :show, id: dossier.id)
|
||||
|
||||
|
@ -177,4 +155,15 @@ class Users::DossiersController < UsersController
|
|||
|
||||
redirect_to url_for users_dossiers_path
|
||||
end
|
||||
|
||||
def mandataire_social? mandataires_list
|
||||
mandataires_list.each do |mandataire|
|
||||
return true if !current_user.france_connect_particulier_id.nil? &&
|
||||
mandataire[:nom].upcase == current_user.family_name.upcase &&
|
||||
mandataire[:prenom].upcase == current_user.given_name.upcase &&
|
||||
mandataire[:date_naissance_timestamp] == current_user.birthdate.to_time.to_i
|
||||
end
|
||||
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
7
app/models/cadastre.rb
Normal file
7
app/models/cadastre.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
class Cadastre < ActiveRecord::Base
|
||||
belongs_to :dossier
|
||||
|
||||
def geometry
|
||||
JSON.parse(read_attribute(:geometry))
|
||||
end
|
||||
end
|
|
@ -10,12 +10,15 @@ class Dossier < ActiveRecord::Base
|
|||
has_one :etablissement, dependent: :destroy
|
||||
has_one :entreprise, dependent: :destroy
|
||||
has_one :cerfa, dependent: :destroy
|
||||
|
||||
has_many :pieces_justificatives, dependent: :destroy
|
||||
has_many :champs, dependent: :destroy
|
||||
has_many :quartier_prioritaires, dependent: :destroy
|
||||
has_many :cadastres, dependent: :destroy
|
||||
has_many :commentaires, dependent: :destroy
|
||||
|
||||
belongs_to :procedure
|
||||
belongs_to :user
|
||||
has_many :commentaires, dependent: :destroy
|
||||
|
||||
delegate :siren, to: :entreprise
|
||||
delegate :siret, to: :etablissement, allow_nil: true
|
||||
|
|
|
@ -5,6 +5,6 @@ class Etablissement < ActiveRecord::Base
|
|||
has_many :exercices
|
||||
|
||||
def geo_adresse
|
||||
numero_voie.to_s << ' ' << type_voie.to_s << ' ' << nom_voie.to_s << ' ' << complement_adresse.to_s << ' ' << code_postal.to_s << ' ' << localite.to_s
|
||||
[numero_voie, type_voie, nom_voie, complement_adresse, code_postal, localite].join(' ')
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
class Exercice < ActiveRecord::Base
|
||||
belongs_to :etablissement
|
||||
|
||||
validates :ca, presence: true, allow_blank: false, allow_nil: false
|
||||
|
||||
end
|
||||
|
|
|
@ -4,4 +4,13 @@ class ModuleAPICarto < ActiveRecord::Base
|
|||
validates :use_api_carto, presence: true, allow_blank: true, allow_nil: false
|
||||
validates :quartiers_prioritaires, presence: true, allow_blank: true, allow_nil: false
|
||||
validates :cadastre, presence: true, allow_blank: true, allow_nil: false
|
||||
|
||||
def classes
|
||||
modules = ''
|
||||
|
||||
modules += 'qp ' if quartiers_prioritaires?
|
||||
modules += 'cadastre ' if cadastre?
|
||||
|
||||
modules
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
class PieceJustificative < ActiveRecord::Base
|
||||
belongs_to :dossier
|
||||
belongs_to :type_de_piece_justificative
|
||||
|
||||
delegate :api_entreprise, :libelle, to: :type_de_piece_justificative
|
||||
|
||||
alias_attribute :type, :type_de_piece_justificative_id
|
||||
|
||||
mount_uploader :content, PieceJustificativeUploader
|
||||
|
||||
def empty?
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
class Procedure < ActiveRecord::Base
|
||||
has_many :types_de_piece_justificative
|
||||
has_many :types_de_champ
|
||||
has_many :dossiers
|
||||
has_one :module_api_carto
|
||||
has_many :types_de_piece_justificative, dependent: :destroy
|
||||
has_many :types_de_champ, dependent: :destroy
|
||||
has_many :dossiers, dependent: :destroy
|
||||
|
||||
has_one :module_api_carto, dependent: :destroy
|
||||
|
||||
belongs_to :administrateur
|
||||
|
||||
accepts_nested_attributes_for :types_de_champ,:reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true
|
||||
accepts_nested_attributes_for :types_de_piece_justificative, :reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true
|
||||
accepts_nested_attributes_for :module_api_carto
|
||||
belongs_to :administrateur
|
||||
|
||||
mount_uploader :logo, ProcedureLogoUploader
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
class RNAInformation < ActiveRecord::Base
|
||||
belongs_to :entreprise
|
||||
|
||||
validates :association_id, presence: true, allow_blank: false, allow_nil: false
|
||||
end
|
||||
|
|
|
@ -6,7 +6,8 @@ class TypeDeChamp < ActiveRecord::Base
|
|||
}
|
||||
|
||||
belongs_to :procedure
|
||||
has_many :champ
|
||||
|
||||
has_many :champ, dependent: :destroy
|
||||
|
||||
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
||||
validates :type_champ, presence: true, allow_blank: false, allow_nil: false
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
class TypeDePieceJustificative < ActiveRecord::Base
|
||||
has_many :pieces_justificatives
|
||||
has_many :pieces_justificatives, dependent: :destroy
|
||||
|
||||
belongs_to :procedure
|
||||
|
||||
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
||||
|
|
|
@ -7,7 +7,7 @@ class User < ActiveRecord::Base
|
|||
devise :database_authenticatable, :registerable,
|
||||
:recoverable, :rememberable, :trackable, :validatable
|
||||
|
||||
has_many :dossiers
|
||||
has_many :dossiers, dependent: :destroy
|
||||
|
||||
def self.find_for_france_connect_particulier user_info
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class GeojsonService
|
||||
def self.to_json_polygon coordinates
|
||||
def self.to_json_polygon_for_qp coordinates
|
||||
polygon = {
|
||||
geo: {
|
||||
type: "Polygon",
|
||||
|
@ -9,4 +9,21 @@ class GeojsonService
|
|||
|
||||
polygon.to_json
|
||||
end
|
||||
|
||||
def self.to_json_polygon_for_cadastre coordinates
|
||||
|
||||
polygon = {
|
||||
geom: {
|
||||
type: "Feature",
|
||||
geometry: {
|
||||
type: "Polygon",
|
||||
coordinates: [
|
||||
coordinates
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
polygon.to_json
|
||||
end
|
||||
end
|
|
@ -26,10 +26,12 @@
|
|||
- if @facade.dossier.procedure.module_api_carto.use_api_carto
|
||||
.col-lg-6.col-md-6
|
||||
|
||||
#map.mini{class: @facade.dossier.class_qp_active}
|
||||
#map.mini{class: @facade.dossier.procedure.module_api_carto.classes}
|
||||
|
||||
%input{id: 'json_latlngs', type:'hidden', value: "#{@facade.dossier.json_latlngs}"}
|
||||
%input{id: 'quartier_prioritaires', type:'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"}
|
||||
%input{id: 'cadastres', type:'hidden', value: "#{@facade.dossier.cadastres.to_json}"}
|
||||
|
||||
%script{type: 'text/javascript'}
|
||||
= "var dossier_id =#{@facade.dossier.id}"
|
||||
initCarto();
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
%br
|
||||
%p
|
||||
%h4.center Nous vous avons trouvé un compte qui utilise déjà cette adresse email.
|
||||
%h4.center Nous avons trouvé un compte qui utilise déjà cette adresse email.
|
||||
%p.center
|
||||
Afin d'associer ce compte à votre identifiant France Connect, merci de saisir votre mot de passe TPS.
|
||||
%br
|
||||
|
@ -15,7 +15,7 @@
|
|||
#france_connect_particulier_email
|
||||
= form_for @user, url: {controller: 'france_connect/particulier', action: :check_email}, method: :post do |f|
|
||||
.form-group.form-group-lg
|
||||
= f.text_field :email, class: "form-control", placeholder: "Entrez votre email", readonly: 'readonly'
|
||||
= f.text_field :email, class: "form-control", readonly: 'readonly'
|
||||
%br
|
||||
= f.password_field :password, class: "form-control", placeholder: "Entrez votre mot de passe"
|
||||
= f.hidden_field :email
|
||||
|
|
|
@ -49,3 +49,4 @@
|
|||
%div{:style => 'margin-left:10%; margin-right:10%;'}
|
||||
= yield
|
||||
|
||||
%script{src: 'http://fcp.integ01.dev-franceconnect.fr/js/franceconnect.js'}
|
||||
|
|
|
@ -12,18 +12,24 @@
|
|||
%br
|
||||
%br
|
||||
#carte_page.row
|
||||
#map{class: @dossier.procedure.module_api_carto.classes }
|
||||
|
||||
- if @dossier.procedure.module_api_carto.quartiers_prioritaires
|
||||
#map.qp
|
||||
#qp_list
|
||||
%h3 Quartiers prioritaites
|
||||
#qp.list
|
||||
%h3.text-info Quartiers prioritaites
|
||||
%ul
|
||||
-else
|
||||
#map
|
||||
|
||||
- if @dossier.procedure.module_api_carto.cadastre
|
||||
#cadastre.list
|
||||
%h3.text-warning Cadastres
|
||||
%ul
|
||||
|
||||
|
||||
= form_tag(url_for({controller: :carte, action: :save, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do
|
||||
%br
|
||||
%input{type: 'hidden', value: "#{@dossier.json_latlngs}", name: 'json_latlngs', id: 'json_latlngs'}
|
||||
%input{id: 'quartier_prioritaires', type:'hidden', value: "#{@dossier.quartier_prioritaires.to_json}"}
|
||||
%input{id: 'cadastres', type:'hidden', value: "#{@dossier.cadastres.to_json}"}
|
||||
|
||||
-if @dossier.draft?
|
||||
=render partial: '/layouts/etape_suivante'
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
%a.text-info{href: 'https://fcp.integ01.dev-franceconnect.fr/a-propos', target: '_blank'}
|
||||
Qu’est-ce que FranceConnect ?
|
||||
|
||||
|
||||
%hr
|
||||
= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
|
||||
%h4
|
||||
|
@ -43,6 +42,10 @@
|
|||
%a{href: '/administrateurs/sign_in'}
|
||||
= 'Administrateur'
|
||||
|
||||
|
||||
%br
|
||||
\-
|
||||
%br
|
||||
%a{href: 'https://github.com/sgmap/tps/releases', target: '_blank'}
|
||||
= 'Nouveautés'
|
||||
|
||||
|
||||
|
|
|
@ -16,9 +16,6 @@ Rails.application.routes.draw do
|
|||
root 'root#index'
|
||||
|
||||
namespace :france_connect do
|
||||
# get 'entreprise' => 'entreprise#login'
|
||||
# get 'entreprise/callback' => 'entreprise#callback'
|
||||
|
||||
get 'particulier' => 'particulier#login'
|
||||
get 'particulier/callback' => 'particulier#callback'
|
||||
|
||||
|
@ -41,6 +38,8 @@ Rails.application.routes.draw do
|
|||
|
||||
get '/carte/position' => 'carte#get_position'
|
||||
post '/carte/qp' => 'carte#get_qp'
|
||||
post '/carte/cadastre' => 'carte#get_cadastre'
|
||||
|
||||
get '/carte' => 'carte#show'
|
||||
post '/carte' => 'carte#save'
|
||||
|
||||
|
|
18
db/migrate/20160115135025_create_cadastre_table.rb
Normal file
18
db/migrate/20160115135025_create_cadastre_table.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
class CreateCadastreTable < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :cadastres do |t|
|
||||
t.string :surface_intersection
|
||||
t.float :surface_parcelle
|
||||
t.string :numero
|
||||
t.integer :feuille
|
||||
t.string :section
|
||||
t.string :code_dep
|
||||
t.string :nom_com
|
||||
t.string :code_com
|
||||
t.string :code_arr
|
||||
t.text :geometry
|
||||
end
|
||||
|
||||
add_reference :cadastres, :dossier, references: :dossiers
|
||||
end
|
||||
end
|
18
db/schema.rb
18
db/schema.rb
|
@ -11,7 +11,9 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20160120141602) do
|
||||
|
||||
ActiveRecord::Schema.define(version: 20160115135025) do
|
||||
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -35,6 +37,20 @@ ActiveRecord::Schema.define(version: 20160120141602) do
|
|||
add_index "administrateurs", ["email"], name: "index_administrateurs_on_email", unique: true, using: :btree
|
||||
add_index "administrateurs", ["reset_password_token"], name: "index_administrateurs_on_reset_password_token", unique: true, using: :btree
|
||||
|
||||
create_table "cadastres", force: :cascade do |t|
|
||||
t.string "surface_intersection"
|
||||
t.float "surface_parcelle"
|
||||
t.string "numero"
|
||||
t.integer "feuille"
|
||||
t.string "section"
|
||||
t.string "code_dep"
|
||||
t.string "nom_com"
|
||||
t.string "code_com"
|
||||
t.string "code_arr"
|
||||
t.text "geometry"
|
||||
t.integer "dossier_id"
|
||||
end
|
||||
|
||||
create_table "cerfas", force: :cascade do |t|
|
||||
t.string "content"
|
||||
t.integer "dossier_id"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class CARTO::SGMAP::Cadastre::Adapter
|
||||
def initialize(coordinates)
|
||||
@coordinates = GeojsonService.to_json_polygon(coordinates)
|
||||
@coordinates = GeojsonService.to_json_polygon_for_cadastre(coordinates)
|
||||
end
|
||||
|
||||
def data_source
|
||||
|
@ -8,15 +8,25 @@ class CARTO::SGMAP::Cadastre::Adapter
|
|||
end
|
||||
|
||||
def to_params
|
||||
params = []
|
||||
|
||||
data_source[:features].each do |feature|
|
||||
tmp = feature[:properties]
|
||||
data_source[:features].inject([]) do |acc, feature|
|
||||
tmp = filter_properties feature[:properties]
|
||||
tmp[:geometry] = feature[:geometry]
|
||||
|
||||
params << tmp
|
||||
acc << tmp
|
||||
end
|
||||
end
|
||||
|
||||
params
|
||||
def filter_properties properties
|
||||
{
|
||||
surface_intersection: properties[:surface_intersection],
|
||||
surface_parcelle: properties[:surface_parcelle],
|
||||
numero: properties[:numero],
|
||||
feuille: properties[:feuille],
|
||||
section: properties[:section],
|
||||
code_dep: properties[:code_dep],
|
||||
nom_com: properties[:nom_com],
|
||||
code_com: properties[:code_com],
|
||||
code_arr: properties[:code_arr]
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class CARTO::SGMAP::QuartiersPrioritaires::Adapter
|
||||
def initialize(coordinates)
|
||||
@coordinates = GeojsonService.to_json_polygon(coordinates)
|
||||
@coordinates = GeojsonService.to_json_polygon_for_qp(coordinates)
|
||||
end
|
||||
|
||||
def data_source
|
||||
|
|
|
@ -34,4 +34,10 @@ class SIADE::EntrepriseAdapter
|
|||
:nom,
|
||||
:prenom]
|
||||
end
|
||||
|
||||
def mandataires_sociaux
|
||||
data_source[:entreprise][:mandataires_sociaux]
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,16 +10,7 @@ class SIADE::ExercicesAdapter
|
|||
end
|
||||
|
||||
def to_params
|
||||
params = {}
|
||||
|
||||
data_source[:exercices].each_with_index do |values, i|
|
||||
params[i] = {}
|
||||
|
||||
values.each do |index, value|
|
||||
params[i][index] = value if attr_to_fetch.include?(index)
|
||||
end
|
||||
end
|
||||
params
|
||||
data_source[:exercices]
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
class SIADE::MandatairesSociauxAdapter
|
||||
def initialize(siren)
|
||||
@siren = siren
|
||||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::API.entreprise(@siren), symbolize_names: true)
|
||||
rescue
|
||||
@data_source = nil
|
||||
end
|
||||
|
||||
def to_params
|
||||
params = {}
|
||||
|
||||
data_source[:entreprise][:mandataires_sociaux].each_with_index do |mandataire, i|
|
||||
params[i] = {}
|
||||
|
||||
mandataire.each do |k, v|
|
||||
params[i][k] = v if attr_to_fetch.include?(k)
|
||||
end
|
||||
end
|
||||
|
||||
params
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
|
||||
def attr_to_fetch
|
||||
[:nom,
|
||||
:prenom,
|
||||
:fonction,
|
||||
:date_naissance,
|
||||
:date_naissance_timestamp]
|
||||
end
|
||||
end
|
|
@ -1,6 +1,6 @@
|
|||
class SIADE::RNAAdapter
|
||||
def initialize(siren)
|
||||
@siret = siren
|
||||
def initialize(siret)
|
||||
@siret = siret
|
||||
end
|
||||
|
||||
def data_source
|
||||
|
|
|
@ -18,7 +18,7 @@ describe Admin::PiecesJustificativesController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
let!(:dossier) { create(:dossier, procedure: procedure, state: :initiated) }
|
||||
it { is_expected.to redirect_to admin_procedure_path id: procedure_id }
|
||||
end
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ describe Admin::ProceduresController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
let!(:dossier) { create(:dossier, procedure: procedure, state: :initiated) }
|
||||
it { is_expected.to redirect_to admin_procedure_path id: procedure_id }
|
||||
end
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
let!(:dossier) { create(:dossier, procedure: procedure, state: :initiated) }
|
||||
it { is_expected.to redirect_to admin_procedure_path id: procedure_id }
|
||||
end
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Backoffice::CommentairesController, type: :controller do
|
||||
let(:dossier) { create(:dossier, :with_user) }
|
||||
let(:dossier) { create(:dossier) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:email_commentaire) { 'test@test.com' }
|
||||
let(:texte_commentaire) { 'Commentaire de test' }
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe Backoffice::DossiersController, type: :controller do
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_user) }
|
||||
let(:dossier_archived) { create(:dossier, :with_entreprise, :with_user, archived: true) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise) }
|
||||
let(:dossier_archived) { create(:dossier, :with_entreprise, archived: true) }
|
||||
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:bad_dossier_id) { Dossier.count + 10 }
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Users::CommentairesController, type: :controller do
|
||||
let(:dossier) { create(:dossier, :with_user) }
|
||||
let(:dossier) { create(:dossier) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:email_commentaire) { 'test@test.com' }
|
||||
let(:texte_commentaire) { 'Commentaire de test' }
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
# require 'spec_helper'
|
||||
#
|
||||
# describe FranceConnect::EntrepriseController, type: :controller do
|
||||
#
|
||||
# describe '.login' do
|
||||
# it 'redirect to france connect serveur' do
|
||||
# get :login
|
||||
# expect(response.status).to eq(302)
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# describe '.callback' do
|
||||
# context 'when param code is missing' do
|
||||
# it 'redirect to login page' do
|
||||
# get :callback
|
||||
# expect(response).to redirect_to(new_user_session_path)
|
||||
# end
|
||||
# end
|
||||
# context 'when params code is present' do
|
||||
# let(:code) { 'plop' }
|
||||
# let(:email) { 'patator@cake.com' }
|
||||
# let(:siret) { '41123069100049' }
|
||||
# let(:user_info) { Hashie::Mash.new(email: email, siret: siret) }
|
||||
# context 'when code is correct' do
|
||||
# let(:email) { 'patator@cake.com' }
|
||||
# let(:current_user) { User.find_by_email(email) }
|
||||
#
|
||||
# before do
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise).and_return(user_info)
|
||||
# get :callback, code: code
|
||||
# end
|
||||
#
|
||||
# it 'current user have attribut loged_in_with_france_connect at enterprise' do
|
||||
# expect(current_user.loged_in_with_france_connect).to eq 'entreprise'
|
||||
# end
|
||||
# let(:stored_location) { '/plip/plop' }
|
||||
# it 'redirect to stored location' do
|
||||
# subject.store_location_for(:user, stored_location)
|
||||
# get :callback, code: code
|
||||
# expect(response).to redirect_to(stored_location)
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# context 'when code is not correct' do
|
||||
# before do
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') }
|
||||
# get :callback, code: code
|
||||
# end
|
||||
#
|
||||
# it 'redirect to login page' do
|
||||
# expect(response).to redirect_to(new_user_session_path)
|
||||
# end
|
||||
#
|
||||
# it 'display error message' do
|
||||
# expect(flash[:alert]).to be_present
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
#
|
|
@ -81,28 +81,20 @@ describe FranceConnect::ParticulierController, type: :controller do
|
|||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
let(:email) { 'plop@gmail.com' }
|
||||
|
||||
subject { post :create, user: user_info }
|
||||
|
||||
context 'when email is filled' do
|
||||
it { expect { subject }.to change { User.count }.by(1) }
|
||||
let(:email) { 'plop@gmail.com' }
|
||||
|
||||
it 'redirects user root page' do
|
||||
subject
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
it { expect { subject }.to change { User.count }.by(1) }
|
||||
it { expect(subject).to redirect_to(root_path) }
|
||||
end
|
||||
|
||||
context 'when email is incorrect' do
|
||||
let(:email) { '' }
|
||||
|
||||
it { expect { subject }.to change { User.count }.by(0) }
|
||||
|
||||
it 'redirect to check email FC page' do
|
||||
subject
|
||||
expect(response).to redirect_to(france_connect_particulier_new_path(user: user_info))
|
||||
end
|
||||
it { expect(subject).to redirect_to(france_connect_particulier_new_path(user: user_info)) }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -3,10 +3,11 @@ require 'spec_helper'
|
|||
RSpec.describe Users::CarteController, type: :controller do
|
||||
let(:bad_adresse) { 'babouba' }
|
||||
|
||||
let(:procedure) { create(:procedure, :with_api_carto) }
|
||||
let(:dossier) { create(:dossier, :with_user, procedure: procedure) }
|
||||
let(:module_api_carto) { create(:module_api_carto, :with_api_carto) }
|
||||
let(:procedure) { create(:procedure, module_api_carto: module_api_carto) }
|
||||
let(:dossier) { create(:dossier, procedure: procedure) }
|
||||
|
||||
let(:dossier_with_no_carto) { create(:dossier, :with_user, :with_procedure) }
|
||||
let(:dossier_with_no_carto) { create(:dossier, :with_procedure) }
|
||||
let!(:entreprise) { create(:entreprise, dossier: dossier) }
|
||||
let!(:etablissement) { create(:etablissement, dossier: dossier) }
|
||||
let(:bad_dossier_id) { Dossier.count + 1000 }
|
||||
|
@ -59,7 +60,7 @@ RSpec.describe Users::CarteController, type: :controller do
|
|||
end
|
||||
|
||||
context 'En train de modifier la localisation' do
|
||||
let(:dossier) { create(:dossier, :with_procedure, :with_user, state: 'initiated') }
|
||||
let(:dossier) { create(:dossier, :with_procedure, state: 'initiated') }
|
||||
before do
|
||||
post :save, dossier_id: dossier.id, json_latlngs: ''
|
||||
end
|
||||
|
@ -86,6 +87,8 @@ RSpec.describe Users::CarteController, type: :controller do
|
|||
end
|
||||
|
||||
describe 'Save quartier prioritaire' do
|
||||
let(:module_api_carto) { create(:module_api_carto, :with_quartiers_prioritaires) }
|
||||
|
||||
before do
|
||||
allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter).
|
||||
to receive(:to_params).
|
||||
|
@ -96,7 +99,7 @@ RSpec.describe Users::CarteController, type: :controller do
|
|||
|
||||
context 'when json_latlngs params is empty' do
|
||||
context 'when dossier have quartier prioritaire in database' do
|
||||
let!(:dossier) { create(:dossier, :with_user, :with_procedure, :with_two_quartier_prioritaires) }
|
||||
let!(:dossier) { create(:dossier, :with_procedure, :with_two_quartier_prioritaires) }
|
||||
|
||||
before do
|
||||
dossier.reload
|
||||
|
@ -117,10 +120,6 @@ RSpec.describe Users::CarteController, type: :controller do
|
|||
context 'when json_latlngs params is informed' do
|
||||
let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' }
|
||||
|
||||
before do
|
||||
dossier.reload
|
||||
end
|
||||
|
||||
it { expect(dossier.quartier_prioritaires.size).to eq(1) }
|
||||
|
||||
describe 'Quartier Prioritaire' do
|
||||
|
@ -133,12 +132,65 @@ RSpec.describe Users::CarteController, type: :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Save cadastre' do
|
||||
let(:module_api_carto) { create(:module_api_carto, :with_cadastre) }
|
||||
|
||||
before do
|
||||
allow_any_instance_of(CARTO::SGMAP::Cadastre::Adapter).
|
||||
to receive(:to_params).
|
||||
and_return([{:surface_intersection=>"0.0006", :surface_parcelle=>11252.692583090324, :numero=>"0013", :feuille=>1, :section=>"CD", :code_dep=>"30", :nom_com=>"Le Grau-du-Roi", :code_com=>"133", :code_arr=>"000", :geometry=>{:type=>"MultiPolygon", :coordinates=>[[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}}])
|
||||
|
||||
post :save, dossier_id: dossier.id, json_latlngs: json_latlngs
|
||||
end
|
||||
|
||||
context 'when json_latlngs params is empty' do
|
||||
context 'when dossier have cadastres in database' do
|
||||
let!(:dossier) { create(:dossier, :with_procedure, :with_two_cadastres) }
|
||||
|
||||
before do
|
||||
dossier.reload
|
||||
end
|
||||
|
||||
context 'when value is empty' do
|
||||
let(:json_latlngs) { '' }
|
||||
it { expect(dossier.cadastres.size).to eq(0) }
|
||||
end
|
||||
|
||||
context 'when value is empty array' do
|
||||
let(:json_latlngs) { '[]' }
|
||||
it { expect(dossier.cadastres.size).to eq(0) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when json_latlngs params is informed' do
|
||||
let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' }
|
||||
|
||||
it { expect(dossier.cadastres.size).to eq(1) }
|
||||
|
||||
describe 'Cadastre' do
|
||||
subject { Cadastre.last }
|
||||
|
||||
it { expect(subject.surface_intersection).to eq('0.0006') }
|
||||
it { expect(subject.surface_parcelle).to eq(11252.6925830903) }
|
||||
it { expect(subject.numero).to eq('0013') }
|
||||
it { expect(subject.feuille).to eq(1) }
|
||||
it { expect(subject.section).to eq('CD') }
|
||||
it { expect(subject.code_dep).to eq('30') }
|
||||
it { expect(subject.nom_com).to eq('Le Grau-du-Roi') }
|
||||
it { expect(subject.code_com).to eq('133') }
|
||||
it { expect(subject.code_arr).to eq('000') }
|
||||
it { expect(subject.geometry).to eq({"type"=>"MultiPolygon", "coordinates"=>[[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#get_position' do
|
||||
context 'Geocodeur renvoie des positions nil' do
|
||||
let(:etablissement) { create(:etablissement, adresse: bad_adresse, numero_voie: 'dzj', type_voie: 'fzjfk', nom_voie: 'hdidjkz', complement_adresse: 'fjef', code_postal: 'fjeiefk', localite: 'zjfkfz') }
|
||||
let(:dossier) { create(:dossier, :with_procedure, :with_user, etablissement: etablissement) }
|
||||
let(:dossier) { create(:dossier, :with_procedure, etablissement: etablissement) }
|
||||
before do
|
||||
stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/)
|
||||
.to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {})
|
||||
|
|
|
@ -12,6 +12,9 @@ describe Users::DossiersController, type: :controller do
|
|||
let(:rna_status) { 404 }
|
||||
let(:rna_body) { '' }
|
||||
|
||||
let(:exercices_status) { 200 }
|
||||
let(:exercices_body) { File.read('spec/support/files/exercices.json') }
|
||||
|
||||
let(:siren) { dossier.siren }
|
||||
let(:siret) { dossier.siret }
|
||||
let(:bad_siret) { 1 }
|
||||
|
@ -78,7 +81,7 @@ describe Users::DossiersController, type: :controller do
|
|||
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
||||
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/exercices/#{siret}?token=#{SIADETOKEN}")
|
||||
.to_return(status: 200, body: File.read('spec/support/files/exercices.json'))
|
||||
.to_return(status: exercices_status, body: exercices_body)
|
||||
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/associations/#{siret}?token=#{SIADETOKEN}")
|
||||
.to_return(status: rna_status, body: rna_body)
|
||||
|
@ -131,6 +134,13 @@ describe Users::DossiersController, type: :controller do
|
|||
expect(Exercice.last.etablissement).to eq(Dossier.last.etablissement)
|
||||
end
|
||||
|
||||
context 'when siret have no exercices' do
|
||||
let(:exercices_status) { 404 }
|
||||
let(:exercices_body) { '' }
|
||||
|
||||
it { expect { subject }.not_to change { Exercice.count } }
|
||||
end
|
||||
|
||||
it 'links procedure to dossier' do
|
||||
subject
|
||||
expect(Dossier.last.procedure).to eq(Procedure.last)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Users::RecapitulatifController, type: :controller do
|
||||
let(:dossier) { create(:dossier, :with_user, :with_procedure) }
|
||||
let(:dossier) { create(:dossier, :with_procedure) }
|
||||
let(:bad_dossier_id) { Dossier.count + 100000 }
|
||||
|
||||
before do
|
||||
|
|
|
@ -17,7 +17,7 @@ describe Users::RegistrationsController, type: :controller do
|
|||
context 'when user is correct' do
|
||||
it { expect(described_class).to be < Devise::RegistrationsController }
|
||||
|
||||
it 'welcome email is send' do
|
||||
it 'sends welcome email' do
|
||||
expect(WelcomeMailer).to receive(:welcome_email).and_return(WelcomeMailer)
|
||||
expect(WelcomeMailer).to receive(:deliver_now!)
|
||||
|
||||
|
@ -28,7 +28,7 @@ describe Users::RegistrationsController, type: :controller do
|
|||
context 'when user is not correct' do
|
||||
let(:user) { {email: '', password: password, password_confirmation: password} }
|
||||
|
||||
it 'welcome email is not send' do
|
||||
it 'not sends welcome email' do
|
||||
expect(WelcomeMailer).not_to receive(:welcome_email)
|
||||
|
||||
subject
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe DossierDecorator do
|
||||
let(:dossier) { create(:dossier, :with_user, updated_at: Time.new(2015, 12, 24, 14, 10)) }
|
||||
let(:dossier) { create(:dossier, updated_at: Time.new(2015, 12, 24, 14, 10)) }
|
||||
subject { dossier.decorate }
|
||||
|
||||
describe 'last_update' do
|
||||
|
|
|
@ -3,13 +3,13 @@ require 'spec_helper'
|
|||
describe AdminProceduresShowFacades do
|
||||
let!(:procedure) { create(:procedure) }
|
||||
|
||||
let!(:dossier_0) { create(:dossier, :with_user, procedure: procedure, state: 'draft') }
|
||||
let!(:dossier_1) { create(:dossier, :with_user, procedure: procedure, state: 'initiated') }
|
||||
let!(:dossier_2) { create(:dossier, :with_user, procedure: procedure, state: 'validated') }
|
||||
let!(:dossier_3) { create(:dossier, :with_user, procedure: procedure, state: 'validated') }
|
||||
let!(:dossier_4) { create(:dossier, :with_user, procedure: procedure, archived: true, state: 'validated') }
|
||||
let!(:dossier_5) { create(:dossier, :with_user, procedure: procedure, archived: true, state: 'validated') }
|
||||
let!(:dossier_6) { create(:dossier, :with_user, procedure: procedure, archived: true, state: 'initiated') }
|
||||
let!(:dossier_0) { create(:dossier, procedure: procedure, state: 'draft') }
|
||||
let!(:dossier_1) { create(:dossier, procedure: procedure, state: 'initiated') }
|
||||
let!(:dossier_2) { create(:dossier, procedure: procedure, state: 'validated') }
|
||||
let!(:dossier_3) { create(:dossier, procedure: procedure, state: 'validated') }
|
||||
let!(:dossier_4) { create(:dossier, procedure: procedure, archived: true, state: 'validated') }
|
||||
let!(:dossier_5) { create(:dossier, procedure: procedure, archived: true, state: 'validated') }
|
||||
let!(:dossier_6) { create(:dossier, procedure: procedure, archived: true, state: 'initiated') }
|
||||
|
||||
subject { AdminProceduresShowFacades.new procedure }
|
||||
|
||||
|
|
7
spec/factories/cadastre.rb
Normal file
7
spec/factories/cadastre.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
FactoryGirl.define do
|
||||
factory :cadastre do
|
||||
numero '001'
|
||||
feuille 1
|
||||
section 'OM'
|
||||
end
|
||||
end
|
|
@ -2,6 +2,7 @@ FactoryGirl.define do
|
|||
factory :dossier do
|
||||
nom_projet "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger"
|
||||
state 'draft'
|
||||
association :user, factory:[:user]
|
||||
|
||||
trait :with_entreprise do
|
||||
after(:build) do |dossier, _evaluator|
|
||||
|
@ -19,12 +20,6 @@ FactoryGirl.define do
|
|||
end
|
||||
end
|
||||
|
||||
trait :with_user do
|
||||
after(:build) do |dossier, _evaluator|
|
||||
dossier.user = create(:user)
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_two_quartier_prioritaires do
|
||||
after(:build) do |dossier, _evaluator|
|
||||
|
||||
|
@ -35,5 +30,16 @@ FactoryGirl.define do
|
|||
dossier.quartier_prioritaires << qp2
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_two_cadastres do
|
||||
after(:build) do |dossier, _evaluator|
|
||||
|
||||
qp1 = create(:cadastre)
|
||||
qp2 = create(:cadastre)
|
||||
|
||||
dossier.cadastres << qp1
|
||||
dossier.cadastres << qp2
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -17,7 +17,7 @@ feature 'procedure locked' do
|
|||
end
|
||||
context 'when procedure have at least a file' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :initiated)
|
||||
create(:dossier, procedure: procedure, state: :initiated)
|
||||
visit admin_procedure_path(procedure)
|
||||
end
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'add commentaire on backoffice' do
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure, :with_user) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let!(:commentaire) { create(:commentaire, dossier: dossier, email: 'toto@toto.com') }
|
||||
let(:email_commentaire) { 'test@test.com' }
|
||||
|
|
|
@ -2,7 +2,7 @@ require 'spec_helper'
|
|||
|
||||
feature 'when gestionnaire come to /backoffice and is not authenticated' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure) }
|
||||
let!(:dossier) { create(:dossier, procedure: procedure) }
|
||||
before do
|
||||
visit backoffice_path
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ feature 'on backoffice page' do
|
|||
let(:gestionnaire) { create(:gestionnaire, administrateur: administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
|
||||
let!(:dossier) { create(:dossier, :with_user, :with_entreprise, procedure: procedure, state: 'initiated') }
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') }
|
||||
before do
|
||||
visit backoffice_path
|
||||
end
|
||||
|
|
|
@ -37,8 +37,8 @@ feature 'search file on gestionnaire backoffice' do
|
|||
|
||||
context 'when terms input does return result' do
|
||||
let!(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, :with_user, procedure: procedure, state: 'initiated') }
|
||||
let!(:dossier_2) { create(:dossier, :with_user, procedure: procedure, state: 'initiated', nom_projet: 'Projet de test') }
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') }
|
||||
let!(:dossier_2) { create(:dossier, procedure: procedure, state: 'initiated', nom_projet: 'Projet de test') }
|
||||
|
||||
let(:terms) { dossier.nom_projet }
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'user is on description page' do
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure, :with_user) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure) }
|
||||
before do
|
||||
visit users_dossier_description_path dossier
|
||||
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
# require 'spec_helper'
|
||||
#
|
||||
# feature 'France Connect Connexion' do
|
||||
# context 'when user is on login page' do
|
||||
#
|
||||
# before do
|
||||
# visit new_user_session_path
|
||||
# end
|
||||
#
|
||||
# scenario 'link to France Connect is present' do
|
||||
# expect(page).to have_css('a#btn_fce')
|
||||
# end
|
||||
#
|
||||
# context 'and click on france connect link' do
|
||||
# let(:code) { 'plop' }
|
||||
#
|
||||
# context 'when authentification is ok' do
|
||||
# before do
|
||||
# allow_any_instance_of(FranceConnectEntrepriseClient).to receive(:authorization_uri).and_return(france_connect_entreprise_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise).and_return(Hashie::Mash.new(email: 'patator@cake.com'))
|
||||
# page.find_by_id('btn_fce').click
|
||||
# end
|
||||
#
|
||||
# scenario 'he is redirected to france connect' do
|
||||
# expect(page).to have_content('Mes dossiers')
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# context 'when authentification is not ok' do
|
||||
# before do
|
||||
# allow_any_instance_of(FranceConnectEntrepriseClient).to receive(:authorization_uri).and_return(france_connect_entreprise_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') }
|
||||
# page.find_by_id('btn_fce').click
|
||||
# end
|
||||
#
|
||||
# scenario 'he is redirected to login page' do
|
||||
# expect(page).to have_css('a#btn_fce')
|
||||
# end
|
||||
#
|
||||
# scenario 'error message is displayed' do
|
||||
# expect(page).to have_content(I18n.t('errors.messages.france_connect.connexion'))
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
#
|
||||
#
|
||||
# feature 'redirection' do
|
||||
# before do
|
||||
# visit initial_path
|
||||
# end
|
||||
# context 'when he use france connect' do
|
||||
# let(:code) { 'my_code' }
|
||||
# let(:email) { 'plop@plop.com' }
|
||||
# let(:siret) { '00000000000000' }
|
||||
# let(:user_infos) { Hashie::Mash.new(email: email, siret: siret) }
|
||||
# before do
|
||||
# allow_any_instance_of(FranceConnectEntrepriseClient).to receive(:authorization_uri).and_return(france_connect_entreprise_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise).and_return(user_infos)
|
||||
# page.find_by_id('btn_fce').click
|
||||
# end
|
||||
# context 'when starting page is dossiers list' do
|
||||
# let(:initial_path) { users_dossiers_path }
|
||||
# scenario 'he is redirected to dossier list' do
|
||||
# expect(page).to have_css('#users_index')
|
||||
# end
|
||||
# end
|
||||
# context 'when starting page is procedure' do
|
||||
# let(:procedure) { create(:procedure) }
|
||||
# let(:initial_path) { new_users_dossiers_path(procedure_id: procedure.id ) }
|
||||
# scenario 'he is redirected to siret page' do
|
||||
# expect(page).to have_css('#users_siret_index')
|
||||
# end
|
||||
#
|
||||
# scenario 'the siret is already written in form' do
|
||||
# expect(page.find_by_id('dossier_siret').value).to have_content(siret)
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
|
@ -12,7 +12,13 @@ feature 'France Connect Particulier Connexion' do
|
|||
let(:know_france_connect_particulier_id) { 'blabla' }
|
||||
let(:unknow_france_connect_particulier_id) { 'titi' }
|
||||
|
||||
let(:user_info) { Hashie::Mash.new(france_connect_particulier_id: france_connect_particulier_id, given_name: given_name, family_name: family_name, birthdate: birthdate, birthplace: birthplace, gender: gender, email: email) }
|
||||
let(:user_info) { Hashie::Mash.new(france_connect_particulier_id: france_connect_particulier_id,
|
||||
given_name: given_name,
|
||||
family_name: family_name,
|
||||
birthdate: birthdate,
|
||||
birthplace: birthplace,
|
||||
gender: gender,
|
||||
email: email) }
|
||||
|
||||
context 'when user is on login page' do
|
||||
|
||||
|
@ -28,7 +34,13 @@ feature 'France Connect Particulier Connexion' do
|
|||
let(:code) { 'plop' }
|
||||
|
||||
context 'when authentification is ok' do
|
||||
let!(:user) { create(:user, france_connect_particulier_id: know_france_connect_particulier_id, given_name: given_name, family_name: family_name, birthdate: birthdate, birthplace: birthplace, gender: gender) }
|
||||
let!(:user) { create(:user,
|
||||
france_connect_particulier_id: know_france_connect_particulier_id,
|
||||
given_name: given_name,
|
||||
family_name: family_name,
|
||||
birthdate: birthdate,
|
||||
birthplace: birthplace,
|
||||
gender: gender) }
|
||||
|
||||
before do
|
||||
allow_any_instance_of(FranceConnectParticulierClient).to receive(:authorization_uri).and_return(france_connect_particulier_callback_path(code: code))
|
||||
|
|
|
@ -5,7 +5,7 @@ feature 'user access to the list of his dossier' do
|
|||
let(:user) { create(:user) }
|
||||
let!(:last_updated_dossier) { create(:dossier, :with_procedure, user: user, state: 'replied')}
|
||||
let!(:dossier1) { create(:dossier, :with_procedure, user: user, nom_projet: 'mon permier dossier', state: 'replied') }
|
||||
let!(:dossier2) { create(:dossier, :with_user, nom_projet: 'mon deuxième dossier') }
|
||||
let!(:dossier2) { create(:dossier, nom_projet: 'mon deuxième dossier') }
|
||||
|
||||
before do
|
||||
last_updated_dossier.update_attributes(nom_projet: 'salut la compagnie')
|
||||
|
|
|
@ -18,6 +18,22 @@ describe CARTO::SGMAP::Cadastre::Adapter do
|
|||
it { expect(subject).to be_a_instance_of(Array) }
|
||||
it { expect(subject.size).to eq 16 }
|
||||
|
||||
describe 'Attribut filter' do
|
||||
let(:adapter) { described_class.new(coordinates) }
|
||||
subject { adapter.filter_properties adapter.data_source }
|
||||
|
||||
it { expect(subject.size).to eq 9 }
|
||||
it { expect(subject.keys).to eq [:surface_intersection,
|
||||
:surface_parcelle,
|
||||
:numero,
|
||||
:feuille,
|
||||
:section,
|
||||
:code_dep,
|
||||
:nom_com,
|
||||
:code_com,
|
||||
:code_arr] }
|
||||
end
|
||||
|
||||
describe 'Attributes' do
|
||||
subject { super().first }
|
||||
|
||||
|
@ -31,7 +47,7 @@ describe CARTO::SGMAP::Cadastre::Adapter do
|
|||
it { expect(subject[:code_com]).to eq('046') }
|
||||
it { expect(subject[:code_arr]).to eq('000') }
|
||||
|
||||
it { expect(subject[:geometry]).to eq({type: "MultiPolygon", coordinates: [[[[2.4362443, 48.8092078], [2.436384, 48.8092043], [2.4363802, 48.8091414]]]] })}
|
||||
it { expect(subject[:geometry]).to eq({type: "MultiPolygon", coordinates: [[[[2.4362443, 48.8092078], [2.436384, 48.8092043], [2.4363802, 48.8091414]]]]}) }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ describe SIADE::EntrepriseAdapter do
|
|||
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/418166096?token=#{SIADETOKEN}")
|
||||
.to_return(body: File.read('spec/support/files/entreprise.json', status: 200))
|
||||
.to_return(body: File.read('spec/support/files/entreprise.json', status: 200))
|
||||
end
|
||||
|
||||
it '#to_params class est une Hash ?' do
|
||||
|
@ -61,4 +61,35 @@ describe SIADE::EntrepriseAdapter do
|
|||
expect(subject[:prenom]).to eq('test_prenom')
|
||||
end
|
||||
end
|
||||
|
||||
context 'Mandataire sociaux' do
|
||||
subject { described_class.new('418166096').mandataires_sociaux }
|
||||
|
||||
it '#to_params class est une Hash ?' do
|
||||
expect(subject).to be_an_instance_of(Array)
|
||||
end
|
||||
|
||||
it { expect(subject.size).to eq(8) }
|
||||
|
||||
describe 'Attributs' do
|
||||
it 'Un mandataire social possède bien un nom' do
|
||||
expect(subject[0][:nom]).to eq('HISQUIN')
|
||||
end
|
||||
it 'Un mandataire social possède bien un prenom' do
|
||||
expect(subject[0][:prenom]).to eq('FRANCOIS')
|
||||
end
|
||||
|
||||
it 'Un mandataire social possède bien une fonction' do
|
||||
expect(subject[0][:fonction]).to eq('PRESIDENT DU DIRECTOIRE')
|
||||
end
|
||||
|
||||
it 'Un mandataire social possède bien une date de naissance' do
|
||||
expect(subject[0][:date_naissance]).to eq('1965-01-27')
|
||||
end
|
||||
|
||||
it 'Un mandataire social possède bien une date de naissance au format timestamp' do
|
||||
expect(subject[0][:date_naissance_timestamp]).to eq(-155523600)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,7 +10,7 @@ describe SIADE::ExercicesAdapter do
|
|||
end
|
||||
|
||||
it '#to_params class est une Hash ?' do
|
||||
expect(subject).to be_an_instance_of(Hash)
|
||||
expect(subject).to be_an_instance_of(Array)
|
||||
end
|
||||
|
||||
it 'have 3 exercices' do
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::MandatairesSociauxAdapter do
|
||||
subject { described_class.new('418166096').to_params }
|
||||
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/418166096?token=#{SIADETOKEN}")
|
||||
.to_return(body: File.read('spec/support/files/entreprise.json', status: 200))
|
||||
end
|
||||
|
||||
it '#to_params class est une Hash ?' do
|
||||
expect(subject).to be_an_instance_of(Hash)
|
||||
end
|
||||
|
||||
describe 'Mandataires Sociaux' do
|
||||
|
||||
it { expect(subject.size).to eq(8) }
|
||||
|
||||
describe 'Attributs' do
|
||||
|
||||
it 'Un mandataire social possède bien un nom' do
|
||||
expect(subject[0][:nom]).to eq('HISQUIN')
|
||||
end
|
||||
it 'Un mandataire social possède bien un prenom' do
|
||||
expect(subject[0][:prenom]).to eq('FRANCOIS')
|
||||
end
|
||||
|
||||
it 'Un mandataire social possède bien une fonction' do
|
||||
expect(subject[0][:fonction]).to eq('PRESIDENT DU DIRECTOIRE')
|
||||
end
|
||||
|
||||
it 'Un mandataire social possède bien une date de naissance' do
|
||||
expect(subject[0][:date_naissance]).to eq('1965-01-27')
|
||||
end
|
||||
|
||||
it 'Un mandataire social possède bien une date de naissance au format timestamp' do
|
||||
expect(subject[0][:date_naissance_timestamp]).to eq(-155523600)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
16
spec/models/cadastre_spec.rb
Normal file
16
spec/models/cadastre_spec.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Cadastre do
|
||||
it { is_expected.to have_db_column(:surface_intersection) }
|
||||
it { is_expected.to have_db_column(:surface_parcelle) }
|
||||
it { is_expected.to have_db_column(:numero) }
|
||||
it { is_expected.to have_db_column(:feuille) }
|
||||
it { is_expected.to have_db_column(:section) }
|
||||
it { is_expected.to have_db_column(:code_dep) }
|
||||
it { is_expected.to have_db_column(:nom_com) }
|
||||
it { is_expected.to have_db_column(:code_com) }
|
||||
it { is_expected.to have_db_column(:code_arr) }
|
||||
it { is_expected.to have_db_column(:geometry) }
|
||||
|
||||
it { is_expected.to belong_to(:dossier) }
|
||||
end
|
|
@ -19,6 +19,7 @@ describe Dossier do
|
|||
it { is_expected.to have_many(:champs) }
|
||||
it { is_expected.to have_many(:commentaires) }
|
||||
it { is_expected.to have_many(:quartier_prioritaires) }
|
||||
it { is_expected.to have_many(:cadastres) }
|
||||
it { is_expected.to have_one(:cerfa) }
|
||||
it { is_expected.to have_one(:etablissement) }
|
||||
it { is_expected.to have_one(:entreprise) }
|
||||
|
@ -130,7 +131,7 @@ describe Dossier do
|
|||
end
|
||||
|
||||
describe '#next_step' do
|
||||
let(:dossier) { create(:dossier, :with_user) }
|
||||
let(:dossier) { create(:dossier) }
|
||||
let(:role) { 'user' }
|
||||
let(:action) { 'initiate' }
|
||||
|
||||
|
@ -389,18 +390,18 @@ describe Dossier do
|
|||
let(:procedure_admin) { create(:procedure, administrateur: admin) }
|
||||
let(:procedure_admin_2) { create(:procedure, administrateur: admin_2) }
|
||||
|
||||
let!(:dossier1) { create(:dossier, :with_user, procedure: procedure_admin, state: 'draft') }
|
||||
let!(:dossier2) { create(:dossier, :with_user, procedure: procedure_admin, state: 'initiated') } #a_traiter
|
||||
let!(:dossier3) { create(:dossier, :with_user, procedure: procedure_admin, state: 'initiated') } #a_traiter
|
||||
let!(:dossier4) { create(:dossier, :with_user, procedure: procedure_admin, state: 'replied') } #en_attente
|
||||
let!(:dossier5) { create(:dossier, :with_user, procedure: procedure_admin, state: 'updated') } #a_traiter
|
||||
let!(:dossier6) { create(:dossier, :with_user, procedure: procedure_admin_2, state: 'validated') } #en_attente
|
||||
let!(:dossier7) { create(:dossier, :with_user, procedure: procedure_admin_2, state: 'submitted') } #a_traiter
|
||||
let!(:dossier8) { create(:dossier, :with_user, procedure: procedure_admin_2, state: 'closed') } #termine
|
||||
let!(:dossier9) { create(:dossier, :with_user, procedure: procedure_admin, state: 'closed') } #termine
|
||||
let!(:dossier10) { create(:dossier, :with_user, procedure: procedure_admin, state: 'initiated', archived: true) } #a_traiter #archived
|
||||
let!(:dossier11) { create(:dossier, :with_user, procedure: procedure_admin, state: 'replied', archived: true) } #en_attente #archived
|
||||
let!(:dossier12) { create(:dossier, :with_user, procedure: procedure_admin, state: 'closed', archived: true) } #termine #archived
|
||||
let!(:dossier1) { create(:dossier, procedure: procedure_admin, state: 'draft') }
|
||||
let!(:dossier2) { create(:dossier, procedure: procedure_admin, state: 'initiated') } #a_traiter
|
||||
let!(:dossier3) { create(:dossier, procedure: procedure_admin, state: 'initiated') } #a_traiter
|
||||
let!(:dossier4) { create(:dossier, procedure: procedure_admin, state: 'replied') } #en_attente
|
||||
let!(:dossier5) { create(:dossier, procedure: procedure_admin, state: 'updated') } #a_traiter
|
||||
let!(:dossier6) { create(:dossier, procedure: procedure_admin_2, state: 'validated') } #en_attente
|
||||
let!(:dossier7) { create(:dossier, procedure: procedure_admin_2, state: 'submitted') } #a_traiter
|
||||
let!(:dossier8) { create(:dossier, procedure: procedure_admin_2, state: 'closed') } #termine
|
||||
let!(:dossier9) { create(:dossier, procedure: procedure_admin, state: 'closed') } #termine
|
||||
let!(:dossier10) { create(:dossier, procedure: procedure_admin, state: 'initiated', archived: true) } #a_traiter #archived
|
||||
let!(:dossier11) { create(:dossier, procedure: procedure_admin, state: 'replied', archived: true) } #en_attente #archived
|
||||
let!(:dossier12) { create(:dossier, procedure: procedure_admin, state: 'closed', archived: true) } #termine #archived
|
||||
|
||||
describe '#waiting_for_gestionnaire' do
|
||||
subject { gestionnaire.dossiers.waiting_for_gestionnaire }
|
||||
|
|
|
@ -21,4 +21,13 @@ describe Etablissement do
|
|||
it { is_expected.to belong_to(:entreprise) }
|
||||
it { is_expected.to have_many(:exercices) }
|
||||
end
|
||||
|
||||
describe '#geo_adresse' do
|
||||
|
||||
let(:etablissement) { create(:etablissement) }
|
||||
|
||||
subject { etablissement.geo_adresse }
|
||||
|
||||
it { is_expected.to eq '6 RUE RAOUL NORDLING IMMEUBLE BORA 92270 BOIS COLOMBES' }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,4 +10,44 @@ describe ModuleAPICarto do
|
|||
it { is_expected.to have_db_column(:quartiers_prioritaires) }
|
||||
it { is_expected.to have_db_column(:cadastre) }
|
||||
end
|
||||
|
||||
describe '#classes' do
|
||||
let(:module_api_carto) { create(:module_api_carto, quartiers_prioritaires: qp, cadastre: cadastre) }
|
||||
|
||||
context 'when module api carto qp is true' do
|
||||
let(:qp) { true }
|
||||
let(:cadastre) { false }
|
||||
|
||||
subject { module_api_carto.classes }
|
||||
|
||||
it { is_expected.to eq 'qp ' }
|
||||
end
|
||||
|
||||
context 'when module api carto cadastre is true' do
|
||||
let(:qp) { false }
|
||||
let(:cadastre) { true }
|
||||
|
||||
subject { module_api_carto.classes }
|
||||
|
||||
it { is_expected.to eq 'cadastre ' }
|
||||
end
|
||||
|
||||
context 'when module api carto qp is true and cadastre is true' do
|
||||
let(:qp) { true }
|
||||
let(:cadastre) { true }
|
||||
|
||||
subject { module_api_carto.classes }
|
||||
|
||||
it { is_expected.to eq 'qp cadastre ' }
|
||||
end
|
||||
|
||||
context 'when module api carto qp is false and cadastre is false' do
|
||||
let(:qp) { false }
|
||||
let(:cadastre) { false }
|
||||
|
||||
subject { module_api_carto.classes }
|
||||
|
||||
it { is_expected.to eq '' }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -87,7 +87,7 @@ describe Procedure do
|
|||
|
||||
context 'when procedure have dossier with state draft' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :draft)
|
||||
create(:dossier, procedure: procedure, state: :draft)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
|
@ -95,7 +95,7 @@ describe Procedure do
|
|||
|
||||
context 'when procedure have dossier with state initiated' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :initiated)
|
||||
create(:dossier, procedure: procedure, state: :initiated)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
|
|
|
@ -1,8 +1,23 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe GeojsonService do
|
||||
describe '.toGeoJsonPolygon' do
|
||||
subject { JSON.parse(described_class.to_json_polygon coordinates) }
|
||||
let(:good_coordinates) {
|
||||
[
|
||||
[5.93536376953125,
|
||||
48.91888968903368],
|
||||
[5.93536376953125,
|
||||
49.26780455063753],
|
||||
[7.094421386718749,
|
||||
49.26780455063753],
|
||||
[7.094421386718749,
|
||||
48.91888968903368],
|
||||
[5.93536376953125,
|
||||
48.91888968903368]
|
||||
]
|
||||
}
|
||||
|
||||
describe '.toGeoJsonPolygonForQp' do
|
||||
subject { JSON.parse(described_class.to_json_polygon_for_qp coordinates) }
|
||||
|
||||
describe 'coordinates are empty' do
|
||||
let(:coordinates) { '' }
|
||||
|
@ -12,23 +27,30 @@ describe GeojsonService do
|
|||
end
|
||||
|
||||
describe 'coordinates are informed' do
|
||||
let(:coordinates) {
|
||||
[
|
||||
[5.93536376953125,
|
||||
48.91888968903368],
|
||||
[5.93536376953125,
|
||||
49.26780455063753],
|
||||
[7.094421386718749,
|
||||
49.26780455063753],
|
||||
[7.094421386718749,
|
||||
48.91888968903368],
|
||||
[5.93536376953125,
|
||||
48.91888968903368]
|
||||
]
|
||||
}
|
||||
let(:coordinates) { good_coordinates }
|
||||
|
||||
it { expect(subject['geo']['type']).to eq('Polygon') }
|
||||
it { expect(subject['geo']['coordinates']).to eq([coordinates]) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '.toGeoJsonPolygonForCadastre' do
|
||||
subject { JSON.parse(described_class.to_json_polygon_for_cadastre coordinates) }
|
||||
|
||||
describe 'coordinates are empty' do
|
||||
let(:coordinates) { '' }
|
||||
|
||||
it { expect(subject['geom']['type']).to eq('Feature') }
|
||||
it { expect(subject['geom']['geometry']['type']).to eq('Polygon') }
|
||||
it { expect(subject['geom']['geometry']['coordinates']).to eq([coordinates]) }
|
||||
end
|
||||
|
||||
describe 'coordinates are informed' do
|
||||
let(:coordinates) { good_coordinates }
|
||||
|
||||
it { expect(subject['geom']['type']).to eq('Feature') }
|
||||
it { expect(subject['geom']['geometry']['type']).to eq('Polygon') }
|
||||
it { expect(subject['geom']['geometry']['coordinates']).to eq([coordinates]) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.shared_examples 'not owner of dossier' do |controller, redirect|
|
||||
let(:dossier_2) { create(:dossier, :with_user) }
|
||||
let(:dossier_2) { create(:dossier) }
|
||||
|
||||
before do
|
||||
get controller, dossier_id: dossier_2.id
|
||||
|
|
|
@ -5,9 +5,9 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do
|
|||
let(:gestionnaire) { create(:gestionnaire, administrateur: administrateur) }
|
||||
|
||||
let!(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:decorate_dossier_initiated) { create(:dossier, :with_user, procedure: procedure, nom_projet: 'projet initiated', state: 'initiated').decorate }
|
||||
let!(:decorate_dossier_replied) { create(:dossier, :with_user, procedure: procedure, nom_projet: 'projet replied', state: 'replied').decorate }
|
||||
let!(:decorate_dossier_closed) { create(:dossier, :with_user, procedure: procedure, nom_projet: 'projet closed', state: 'closed').decorate }
|
||||
let!(:decorate_dossier_initiated) { create(:dossier, procedure: procedure, nom_projet: 'projet initiated', state: 'initiated').decorate }
|
||||
let!(:decorate_dossier_replied) { create(:dossier, procedure: procedure, nom_projet: 'projet replied', state: 'replied').decorate }
|
||||
let!(:decorate_dossier_closed) { create(:dossier, procedure: procedure, nom_projet: 'projet closed', state: 'closed').decorate }
|
||||
|
||||
describe 'on tab a_traiter' do
|
||||
before do
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'backoffice/dossiers/show.html.haml', type: :view do
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, :with_procedure, :with_user, state: state) }
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, :with_procedure, state: state) }
|
||||
let(:state) { 'draft' }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:gestionnaire) { create(:gestionnaire) }
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'dossiers/_infos_dossier.html.haml', type: :view do
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_user, procedure: create(:procedure, :with_api_carto, :with_type_de_champ)) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, procedure: create(:procedure, :with_api_carto, :with_type_de_champ)) }
|
||||
|
||||
before do
|
||||
assign(:facade, DossierFacades.new(dossier.id, dossier.user.email))
|
||||
|
|
|
@ -2,7 +2,7 @@ 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) { create(:dossier, :with_procedure, state: state) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
|
||||
before do
|
||||
|
|
|
@ -5,6 +5,7 @@ describe 'users/dossiers/index.html.haml', type: :view do
|
|||
|
||||
let!(:dossier) { create(:dossier, :with_procedure, user: user, state: 'initiated', nom_projet: 'projet de test').decorate }
|
||||
let!(:dossier_2) { create(:dossier, :with_procedure, user: user, state: 'replied', nom_projet: 'projet répondu').decorate }
|
||||
let!(:dossier_3) { create(:dossier, :with_procedure, user: user, state: 'replied', nom_projet: 'projet répondu 2').decorate }
|
||||
let!(:dossier_termine) { create(:dossier, :with_procedure, user: user, state: 'closed').decorate }
|
||||
|
||||
describe 'params liste is a_traiter' do
|
||||
|
@ -18,6 +19,10 @@ describe 'users/dossiers/index.html.haml', type: :view do
|
|||
partial: "users/dossiers/list",
|
||||
array: true))
|
||||
assign(:liste, 'a_traiter')
|
||||
assign(:dossiers_a_traiter_total, '1')
|
||||
assign(:dossiers_en_attente_total, '2')
|
||||
assign(:dossiers_termine_total, '1')
|
||||
|
||||
render
|
||||
end
|
||||
|
||||
|
@ -36,6 +41,12 @@ describe 'users/dossiers/index.html.haml', type: :view do
|
|||
it { is_expected.not_to have_content(dossier.nom_projet) }
|
||||
it { is_expected.not_to have_content(dossier_termine.nom_projet) }
|
||||
end
|
||||
|
||||
describe 'badges on tabs' do
|
||||
it { is_expected.to have_content('À traiter 1') }
|
||||
it { is_expected.to have_content('En attente 2') }
|
||||
it { is_expected.to have_content('Terminé 1') }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'params liste is en_attente' do
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'users/recapitulatif/_commentaires_flux.html.haml', type: :view do
|
||||
let(:dossier) { create(:dossier, :with_procedure, :with_user) }
|
||||
let(:dossier) { create(:dossier, :with_procedure) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:email_commentaire) { 'mon_mail_de_commentaire@test.com' }
|
||||
let!(:commentaire) { create(:commentaire, dossier: dossier, email: email_commentaire, body: 'ma super description') }
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'users/recapitulatif/show.html.haml', type: :view do
|
||||
let(:dossier) { create(:dossier, :with_user, :with_entreprise, state: state, procedure: create(:procedure, :with_api_carto)) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, state: state, procedure: create(:procedure, :with_api_carto)) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:state) { 'draft' }
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue