Merge branch 'develop' into staging

This commit is contained in:
gregoirenovel 2017-04-05 14:43:46 +02:00
commit 9915e3d372
293 changed files with 951 additions and 926 deletions

11
.editorconfig Normal file
View file

@ -0,0 +1,11 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
[*.{haml,html,js,scss,rake,rb,yml}]
charset = utf-8
indent_size = 2
indent_style = space
trim_trailing_whitespace = true

View file

@ -16,7 +16,7 @@ gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks', '~> 2.5'
gem 'turbolinks', '~> 5.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

View file

@ -95,7 +95,7 @@ GEM
bootstrap-wysihtml5-rails (0.3.3.8)
railties (>= 3.0)
browser (2.3.0)
builder (3.2.2)
builder (3.2.3)
byebug (9.0.6)
capybara (2.11.0)
addressable
@ -120,8 +120,8 @@ GEM
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.11.1)
concurrent-ruby (1.0.2)
coffee-script-source (1.12.2)
concurrent-ruby (1.0.5)
connection_pool (2.2.1)
crack (0.4.3)
safe_yaml (~> 1.0.0)
@ -331,7 +331,7 @@ GEM
domain_name (~> 0.5)
http_parser.rb (0.6.0)
httpclient (2.8.3)
i18n (0.7.0)
i18n (0.8.1)
inflecto (0.0.2)
ipaddress (0.8.3)
jquery-rails (4.2.1)
@ -452,9 +452,9 @@ GEM
actionpack (~> 5.x)
actionview (~> 5.x)
activesupport (~> 5.x)
rails-dom-testing (2.0.1)
rails-dom-testing (2.0.2)
activesupport (>= 4.2.0, < 6.0)
nokogiri (~> 1.6.0)
nokogiri (~> 1.6)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
railties (5.0.0.1)
@ -585,13 +585,14 @@ GEM
libv8 (~> 3.16.14.0)
ref
thor (0.19.4)
thread_safe (0.3.5)
thread_safe (0.3.6)
tilt (2.0.5)
timecop (0.8.1)
trollop (2.1.2)
turbolinks (2.5.3)
coffee-rails
tzinfo (1.2.2)
turbolinks (5.0.1)
turbolinks-source (~> 5)
turbolinks-source (5.0.0)
tzinfo (1.2.3)
thread_safe (~> 0.1)
uglifier (3.0.4)
execjs (>= 0.3.0, < 3)
@ -707,7 +708,7 @@ DEPENDENCIES
sqlite3
therubyracer
timecop
turbolinks (~> 2.5)
turbolinks (~> 5.0)
uglifier (>= 1.3.0)
unicode_utils
unicorn

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,5 +1,4 @@
$(document).on('page:load', init_action_btn_rules);
$(document).ready(init_action_btn_rules);
$(document).on('turbolinks:load', init_action_btn_rules);
function init_action_btn_rules() {
$('.btn-send').click(function () {

View file

@ -1,5 +1,4 @@
$(document).on('page:load', init_admin);
$(document).ready(init_admin);
$(document).on('turbolinks:load', init_admin);
function init_admin(){
destroy_action();

View file

@ -1,5 +1,4 @@
$(document).on('page:load', init_path_modal);
$(document).ready(init_path_modal);
$(document).on('turbolinks:load', init_path_modal);
function init_path_modal() {
path_modal_action();

View file

@ -33,8 +33,7 @@
//= require typeahead.bundle
//= require select2
$(document).on('page:load', application_init);
$(document).ready(application_init);
$(document).on('turbolinks:load', application_init);
function application_init(){
@ -55,4 +54,3 @@ function scroll_to() {
return false;
});
}

View file

@ -1,5 +1,4 @@
$(document).on('page:load', buttons_archived);
$(document).ready(buttons_archived);
$(document).on('turbolinks:load', buttons_archived);
function buttons_archived(){
$("button#archive").on('click', function(){

View file

@ -1,5 +1,4 @@
$(document).ready(wysihtml5_active);
$(document).on('page:load', wysihtml5_active);
$(document).on('turbolinks:load', wysihtml5_active);
function wysihtml5_active (){
$('.wysihtml5').each(function(i, elem) {

View file

@ -1,5 +1,4 @@
$(document).on('page:load', buttons_anchor);
$(document).ready(buttons_anchor);
$(document).on('turbolinks:load', buttons_anchor);
function buttons_anchor(){
$("#cgu_menu_block").on('click', 'a', function(){

View file

@ -1,5 +1,4 @@
$(document).on('page:load', init_default_data_block);
$(document).ready(init_default_data_block);
$(document).on('turbolinks:load', init_default_data_block);
function init_default_data_block() {
$('.default_data_block #dossier .body').toggle();

View file

@ -1,5 +1,4 @@
$(document).on('page:load', action_type_de_champs);
$(document).ready(action_type_de_champs);
$(document).on('turbolinks:load', action_type_de_champs);
function action_type_de_champs() {

View file

@ -1,5 +1,4 @@
$(document).on('page:load', init_modal_commentaire);
$(document).ready(init_modal_commentaire);
$(document).on('turbolinks:load', init_modal_commentaire);
function init_modal_commentaire() {
var modal = $("#modalCommentairesDossierParChamp");

View file

@ -1,7 +1,5 @@
$(document).on('page:load', the_terms);
$(document).ready(the_terms);
$(document).on('page:load', pannel_switch);
$(document).ready(pannel_switch);
$(document).on('turbolinks:load', the_terms);
$(document).on('turbolinks:load', pannel_switch);
function pannel_switch() {
$('#switch-notifications').click(function () {

View file

@ -1,5 +1,4 @@
$(document).on('page:load', filters_init);
$(document).ready(filters_init);
$(document).on('turbolinks:load', filters_init);
function filters_init() {
$('html').click(function(event) {

View file

@ -1,5 +1,4 @@
$(document).on('page:load', link_init);
$(document).ready(link_init);
$(document).on('turbolinks:load', link_init);
function link_init() {
$('#dossiers_list tr').on('click', function () {

View file

@ -1,7 +1,5 @@
$(document).on('page:load', franceconnect_kit);
$(document).ready(franceconnect_kit);
$(document).on('turbolinks:load', franceconnect_kit);
function franceconnect_kit() {
franceConnectKit.init()
}

View file

@ -1,5 +1,4 @@
$(document).on('page:load', modal_action);
$(document).ready(modal_action);
$(document).on('turbolinks:load', modal_action);
function modal_action() {
$('#PJmodal').on('show.bs.modal', function (event) {

View file

@ -1,5 +1,4 @@
$(document).on('page:load', pref_list_dossier_actions);
$(document).ready(pref_list_dossier_actions);
$(document).on('turbolinks:load', pref_list_dossier_actions);
function pref_list_dossier_actions() {
pref_list_dossier_open_action();

View file

@ -1,5 +1,4 @@
$(document).on('page:load', button_edit_procedure_init);
$(document).ready(button_edit_procedure_init);
$(document).on('turbolinks:load', button_edit_procedure_init);
function button_edit_procedure_init(){
buttons_api_carto();

View file

@ -1,5 +1,4 @@
$(document).on('page:load', init_search_anim);
$(document).ready(init_search_anim);
$(document).on('turbolinks:load', init_search_anim);
function init_search_anim(){
$("#search_area").on('click', search_fadeIn);

View file

@ -1,5 +1,4 @@
$(document).on('page:load', activeSelect2);
$(document).ready(activeSelect2);
$(document).on('turbolinks:load', activeSelect2);
function activeSelect2() {
$('select.select2').select2({ theme: "bootstrap", width: '100%' });

View file

@ -0,0 +1,5 @@
@import "variables";
.turbolinks-progress-bar {
background-color: $light-blue;
}

View file

@ -1 +1,5 @@
// colors
$light-blue: #F2F6FA;
// Bootstrap variables
$font-size-base: 16px;

View file

@ -20,4 +20,3 @@
}
}
}

View file

@ -27,7 +27,7 @@
@import "bootstrap";
body {
background-color: #F2F6FA;
background-color: $light-blue;
}
html, body {
@ -63,7 +63,7 @@ form {
}
#footer {
background-color: #F2F6FA;
background-color: $light-blue;
text-align: center;
padding: 0;
a, p {

View file

@ -1,3 +1,5 @@
@import "variables";
.default_data_block {
font-family: Arial;
@ -53,7 +55,7 @@
color: #FFFFFF;
}
.action:hover {
color: #F2F6FA;
color: $light-blue;
}
.count {
font-size: 16px;

View file

@ -1,3 +1,5 @@
@import "variables";
#header {
top: 0;
left: 0;
@ -185,7 +187,7 @@
}
}
.button-navbar-action:hover {
color: #F2F6FA;
color: $light-blue;
}
.button_navbar:hover, .button-navbar-action:hover {

View file

@ -1,3 +1,5 @@
@import "variables";
#users_index, #admins_index{
margin-left: 2rem;
margin-right: 2rem;
@ -48,7 +50,7 @@
padding: 10px;
}
.action:hover {
color: #F2F6FA;
color: $light-blue;
}
.padding-left-30 {
padding-left: 30px;

View file

@ -39,16 +39,13 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
end
def download_dossiers_tps
if procedure = Procedure.find_by(id: params[:procedure_id])
dossiers = dossiers_list_facade(param_liste).dossiers_to_display
respond_with Dossier.export_full_generation(dossiers, request.format) unless dossiers.empty?
else
dossiers = dossiers_list_facade(param_liste).dossiers_to_display
procedure = Procedure.find_by(id: params[:procedure_id])
export = procedure.generate_export
respond_to do |format|
format.xlsx { render xlsx: dossiers }
format.ods { render ods: dossiers }
format.csv { render csv: dossiers }
end
format.csv { send_data(SpreadsheetArchitect.to_csv(data: export[:data], headers: export[:headers]), filename: 'dossiers.csv') }
format.xlsx { send_data(SpreadsheetArchitect.to_xlsx(data: export[:data], headers: export[:headers]), filename: 'dossiers.xlsx') }
format.ods { send_data(SpreadsheetArchitect.to_ods(data: export[:data], headers: export[:headers]), filename: 'dossiers.ods') }
end
end

View file

@ -122,7 +122,7 @@ class Users::DossiersController < UsersController
@facade = facade params[:dossier][:id]
if checked_autorisation_donnees?
unless Dossier.find(@facade.dossier.id).update_attributes update_params
unless Dossier.find(@facade.dossier.id).update_attributes update_params_with_formatted_birthdate
flash.alert = @facade.dossier.errors.full_messages.join('<br />').html_safe
return redirect_to users_dossier_path(id: @facade.dossier.id)
@ -171,6 +171,25 @@ class Users::DossiersController < UsersController
params.require(:dossier).permit(:id, :autorisation_donnees, individual_attributes: [:gender, :nom, :prenom, :birthdate])
end
def update_params_with_formatted_birthdate
editable_params = update_params
# If the user was shown a date input field (if its browser supports it),
# the returned param will follow the YYYY-MM-DD pattern, which we need
# do convert to the DD/MM/YYYY pattern we use
if editable_params &&
editable_params[:individual_attributes] &&
editable_params[:individual_attributes][:birthdate] &&
editable_params[:individual_attributes][:birthdate] =~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/
original_birthdate = editable_params[:individual_attributes][:birthdate]
formatted_birthdate = I18n.l(original_birthdate.to_date, format: '%d/%m/%Y')
editable_params[:individual_attributes][:birthdate] = formatted_birthdate
end
editable_params
end
def checked_autorisation_donnees?
update_params[:autorisation_donnees] == '1'
end

View file

@ -1,4 +1,3 @@
class TypeDePieceJustificativeDecorator < Draper::Decorator
delegate_all
def button_up params

View file

@ -201,6 +201,8 @@ class Dossier < ActiveRecord::Base
scope :archived, -> { where(archived: true) }
scope :downloadable, -> { all_state }
def cerfa_available?
procedure.cerfa_flag? && cerfa.size != 0
end
@ -261,23 +263,6 @@ class Dossier < ActiveRecord::Base
return headers
end
def self.export_full_generation(dossiers, format)
if dossiers && !dossiers.empty?
data = []
headers = dossiers.first.export_headers
dossiers.each do |dossier|
data << dossier.convert_specific_array_values_to_string(dossier.data_with_champs)
end
if ["csv"].include?(format)
return SpreadsheetArchitect.to_csv(data: data, headers: headers)
elsif ["xlsx"].include?(format)
return SpreadsheetArchitect.to_xlsx(data: data, headers: headers)
elsif ["ods"].include?(format)
return SpreadsheetArchitect.to_ods(data: data, headers: headers)
end
end
end
def followers_gestionnaires_emails
follows.includes(:gestionnaire).map { |f| f.gestionnaire }.pluck(:email).join(' ')
end

View file

@ -130,4 +130,18 @@ class Procedure < ActiveRecord::Base
self.dossiers.where.not(state: :draft).size
end
def generate_export
exportable_dossiers = dossiers.downloadable
headers = exportable_dossiers.any? ? exportable_dossiers.first.export_headers : []
data = exportable_dossiers.map do |dossier|
dossier.convert_specific_array_values_to_string(dossier.data_with_champs)
end
{
headers: headers,
data: data
}
end
end

View file

@ -1,4 +1,3 @@
- if @procedure.locked?
.alert.alert-info
Cette procédure est publiée, certains éléments de la description ne sont plus modifiables
@ -85,11 +84,8 @@
%h4 Options avancées
%label{ for: :auto_archive_on} Archivage automatique le
= f.text_field :auto_archive_on, id: 'auto_archive_on', value: @procedure.auto_archive_on.try{ |d| d.strftime("%d-%m-%Y") }, data: { provide: 'datepicker', 'date-format' => 'dd/mm/yyyy' }
= f.text_field :auto_archive_on, id: 'auto_archive_on', value: @procedure.auto_archive_on.try{ |d| d.strftime("%d-%m-%Y") }, data: { provide: 'datepicker', 'date-language' => 'fr', 'date-format' => 'dd/mm/yyyy' }
(à 00h00)
%p.help-block
%i.fa.fa-info-circle
L'archivage automatique de la procédure entrainera le passage en instruction de tous les dossiers en construction.

View file

@ -46,5 +46,3 @@
= link_to("", @types_de_champ_facade.delete_url(ff), method: :delete, remote: true, id: "delete_type_de_champ_#{ff.object.id}", class: %w(form-control btn btn-danger fa fa-trash-o) )
%div{ style: 'background-color: rgb(204, 204, 204); height: 1px; margin: 30px auto;' }

View file

@ -11,5 +11,3 @@
= follower.email
- else
Aucune personne ne suit ce dossier

View file

@ -44,4 +44,3 @@
= columns.second[:libelle]
%button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"}
%i.fa.fa-plus

View file

@ -14,4 +14,3 @@
dossiers
%div.body
= smart_listing_render :search

View file

@ -20,4 +20,3 @@
- else
%h4.text-primary
Pas de fichier dans le flux de commentaires.

View file

@ -1,12 +1,7 @@
%div.dropdown.pull-right#download-menu
- if @facade_data_view.dossiers_to_display.count > 400
%button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'}
%span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 400, merci de bien vouloir appliquer des filtres.'}
= t('dynamics.backoffice.limit_excess_download_all_dossiers')
- else
%a.dropdown-toggle#dropdownDownloadMenu.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
.dropdown.pull-right#download-menu
%a.dropdown-toggle.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
%i.fa.fa-download
= t('dynamics.backoffice.download_all_dossiers')
Télécharger tous les dossiers
%span.caret
%ul.dropdown-menu.dropdown-menu-right
%li

View file

@ -57,4 +57,3 @@
%div.col-xs-12.split-hr
- unless @facade.entreprise.rna_information.nil?
= render partial: '/dossiers/infos_rna'

View file

@ -20,4 +20,3 @@
%dt Capital déclaration :
%dd= @facade.entreprise.rna_information.date_declaration

View file

@ -15,4 +15,3 @@
= form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do
= text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation'
= submit_tag 'Ajouter', class: 'btn btn-success', id: 'send-invitation', data: {confirm: "Envoyer l'invitation ?"}

View file

@ -31,7 +31,7 @@
%label
%h4
Date de naissance *
= ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'}
= ff.date_field :birthdate, {class: 'form-control', placeholder: 'jj/mm/aaaa'}
%p
%label{ style:'font-weight:normal' }

View file

@ -1,2 +1 @@
<%= link_to "Mot de passe oublié ?", new_password_path(resource_name) %><br />

View file

@ -6,4 +6,3 @@
Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10
="<![endif]-->".html_safe

View file

@ -1,6 +1,7 @@
%html
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%meta{ name: "turbolinks-cache-control", content: "no-cache" }
%title
=t('dynamics.page_title')
%meta{'http-equiv' => "X-UA-Compatible", :content => "IE=edge"}

View file

@ -1,4 +1,3 @@
%div#first-block
%div.en-cours
-unless @procedure.logo.blank?

View file

@ -1,2 +1 @@
= render partial: 'layouts/left_panels/left_panel_backoffice_dossierscontroller_index'

View file

@ -51,4 +51,3 @@
%div.procedure_list_element
%div.procedure_list_element

View file

@ -85,5 +85,3 @@
= link_to 'Demander un accès administrateur', 'https://tps.apientreprise.fr/users/dossiers/new?procedure_id=31', {class: 'btn btn-lg background-tps', target: '_blank'}
.split-hr-left

View file

@ -1,4 +1,3 @@
%script{type: 'text/javascript'}
="var dossier_id =#{dossier.id}"
$(document).on('page:load', initCarto);
$(document).ready(initCarto);
$(document).on('turbolinks:load', initCarto);

View file

@ -10,4 +10,3 @@
#cadastre.list
%h3.text-warning Cadastres
%ul

View file

@ -1,4 +1,3 @@
%table.table
- if dossier.procedure.cerfa_flag
%tr

View file

@ -25,6 +25,3 @@
- if @user.email != DemoEmails[:gestionnaire] && @user.email != DemoEmails[:admin]
= render "users/shared/links"

View file

@ -1,4 +1,3 @@
.container.center#users_siret_index
.row
= render partial: 'pro'

View file

@ -1,4 +1,3 @@
development:
adapter: postgresql
encoding: unicode

View file

@ -85,7 +85,6 @@ set :shared_paths, [
"config/initializers/super_admin.rb",
"config/unicorn.rb",
"config/initializers/raven.rb",
"config/locales/dynamics/fr.yml",
'config/france_connect.yml',
'config/initializers/mailjet.rb',
'config/initializers/storage_url.rb',

View file

@ -4,4 +4,3 @@ Sidekiq.configure_server do |config|
schedule_file = "config/schedule.yml"
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end

View file

@ -1,6 +1,6 @@
fr:
dynamics:
page_title: TPS - Téléprocédures simplifiées
page_title: 'TPS - Téléprocédures simplifiées'
contact_email: contact@tps.apientreprise.fr
users:
connexion_title: Connexion
@ -12,8 +12,6 @@ fr:
pref_list:
title: 'Gestion de colonnes affichées'
description: 'Ce menu vous permet de choisir les différentes colonnes que vous souhaitez voir apparaître dans votre interface de suivi des dossiers.'
download_all_dossiers: 'Télécharger mes dossiers'
limit_excess_download_all_dossiers: 'Limite de dossiers fixée à 400 pour le téléchargement'
format_csv: 'Au format CSV'
format_xlsx: 'Au format XLSX'
format_ods: 'Au format ODS'

View file

@ -30,4 +30,3 @@ fr:
blank: 'doit être rempli'
date_previsionnelle:
blank: 'doit être remplie'

View file

@ -15,5 +15,3 @@ fr:
blank: 'doit être rempli'
birthdate:
blank: 'doit être rempli'

View file

@ -28,4 +28,3 @@ describe UsersController, type: :controller do
end
end
end

View file

@ -1,4 +1,3 @@
require 'spec_helper'
describe TypeDeChampDecorator do

View file

@ -9,21 +9,38 @@ feature 'As a User I wanna create a dossier' do
let(:procedure_with_siret) { create(:procedure, :published, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) }
let(:procedure_for_individual) { create(:procedure, :published, :for_individual, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) }
scenario 'Identification for individual' do
context 'Identification for individual' do
before do
login_as user, scope: :user
visit commencer_path(procedure_path: procedure_for_individual.path)
fill_in 'dossier_individual_attributes_nom', with: 'Nom'
fill_in 'dossier_individual_attributes_prenom', with: 'Prenom'
fill_in 'dossier_individual_attributes_birthdate', with: '14/10/1987'
find(:css, "#dossier_autorisation_donnees[value='1']").set(true)
end
scenario "with a proper date input field for birthdate (type='date' supported)" do
fill_in 'dossier_individual_attributes_birthdate', with: '1987-10-14'
page.find_by_id('etape_suivante').click
expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
page.find_by_id('etape_suivante').click
fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1'
page.find_by_id('suivant').click
expect(user.dossiers.first.individual.birthdate).to eq("14/10/1987")
expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
end
scenario "with a basic text input field for birthdate (type='date' unsupported)" do
fill_in 'dossier_individual_attributes_birthdate', with: '14/10/1987'
page.find_by_id('etape_suivante').click
expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
page.find_by_id('etape_suivante').click
fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1'
page.find_by_id('suivant').click
expect(user.dossiers.first.individual.birthdate).to eq("14/10/1987")
expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
end
end
scenario 'Identification through siret', vcr: {cassette_name: 'search_ban_paris'}, js: true do
login_as user, scope: :user
visit commencer_path(procedure_path: procedure_with_siret.path)

View file

@ -603,7 +603,6 @@ describe Dossier do
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure, follows: [follow], initiated_at: date1, received_at: date2, processed_at: date3) }
describe '#export_headers' do
subject { dossier.export_headers }
it { expect(subject).to include(:description) }
@ -611,7 +610,6 @@ describe Dossier do
end
describe '#data_with_champs' do
subject { dossier.data_with_champs }
it { expect(subject[0]).to be_a_kind_of(Integer) }
@ -670,7 +668,6 @@ describe Dossier do
it { expect(subject[:entreprise_prenom]).to be_nil }
end
describe '#Dossier.to_xlsx' do
let!(:procedure) { create(:procedure) }
let!(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
@ -966,4 +963,17 @@ describe Dossier do
end
end
describe '.downloadable' do
let(:procedure) { create(:procedure) }
let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: :draft) }
let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: :initiated) }
let!(:dossier3) { create(:dossier, :with_entreprise, procedure: procedure, state: :received) }
subject { procedure.dossiers.downloadable }
it { is_expected.not_to include(dossier)}
it { is_expected.to include(dossier2)}
it { is_expected.to include(dossier3)}
end
end

View file

@ -256,4 +256,29 @@ describe Procedure do
it { is_expected.to eq 2 }
end
describe '#generate_export' do
let(:procedure) { create :procedure }
subject { procedure.generate_export }
context 'when there are no dossiers' do
it { expect(subject[:data]).to eq([]) }
it { expect(subject[:headers]).to eq([]) }
end
context 'when there are some dossiers' do
let!(:dossier){ create(:dossier, procedure: procedure, state: 'initiated') }
let!(:dossier2){ create(:dossier, procedure: procedure, state: 'closed') }
it { expect(subject[:data].size).to eq(2) }
it { expect(subject[:headers]).to eq(dossier.export_headers) }
end
context 'when there is a draft dossier' do
let!(:dossier_not_exportable){ create(:dossier, procedure: procedure, state: 'draft') }
it { expect(subject[:data]).to eq([]) }
it { expect(subject[:headers]).to eq([]) }
end
end
end

View file

@ -6,4 +6,3 @@ describe TypeDeChamp do
it_should_behave_like "type_de_champ_spec"
end

View file

@ -1,4 +1,3 @@
RSpec.configure do |config|
# config.include Devise::TestHelpers, type: :controller
end

View file

@ -147,4 +147,3 @@ var franceConnectKit = {};
}
}, false);
})(this);