Merge branch 'develop' into develop_v2
# Conflicts: # Gemfile.lock # db/schema.rb
This commit is contained in:
commit
647eaa4ba8
34 changed files with 509 additions and 122 deletions
7
Gemfile
7
Gemfile
|
@ -85,6 +85,7 @@ gem "smart_listing"
|
|||
gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8'
|
||||
|
||||
gem 'as_csv'
|
||||
gem 'spreadsheet_architect'
|
||||
|
||||
gem 'apipie-rails', '=0.3.1'
|
||||
gem "maruku" # for Markdown support in apipie
|
||||
|
@ -111,6 +112,8 @@ group :test do
|
|||
end
|
||||
|
||||
group :development do
|
||||
# Access an IRB console on exception pages or by using <%= console %> in views
|
||||
|
||||
gem 'web-console', '~> 2.0'
|
||||
end
|
||||
|
||||
|
@ -122,8 +125,6 @@ group :development, :test do
|
|||
gem 'byebug'
|
||||
gem 'pry-byebug'
|
||||
|
||||
# Access an IRB console on exception pages or by using <%= console %> in views
|
||||
|
||||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
||||
gem 'spring'
|
||||
gem 'spring-commands-rspec'
|
||||
|
@ -135,8 +136,6 @@ group :development, :test do
|
|||
gem 'rubocop-checkstyle_formatter', require: false
|
||||
gem 'rubocop-rspec', require: false
|
||||
|
||||
gem "nyan-cat-formatter"
|
||||
|
||||
gem 'parallel_tests', '~> 2.10'
|
||||
|
||||
gem 'brakeman', require: false
|
||||
|
|
22
Gemfile.lock
22
Gemfile.lock
|
@ -71,6 +71,10 @@ GEM
|
|||
attr_required (1.0.1)
|
||||
autoprefixer-rails (6.5.3)
|
||||
execjs
|
||||
axlsx (2.0.1)
|
||||
htmlentities (~> 4.3.1)
|
||||
nokogiri (>= 1.4.1)
|
||||
rubyzip (~> 1.0.0)
|
||||
bcrypt (3.1.11)
|
||||
bindata (2.3.4)
|
||||
binding_of_caller (0.7.2)
|
||||
|
@ -290,6 +294,7 @@ GEM
|
|||
haml (~> 4.0.0)
|
||||
nokogiri (~> 1.6.0)
|
||||
ruby_parser (~> 3.5)
|
||||
htmlentities (4.3.4)
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.2.4)
|
||||
|
@ -352,8 +357,6 @@ GEM
|
|||
nio4r (1.2.1)
|
||||
nokogiri (1.6.8.1)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
nyan-cat-formatter (0.11)
|
||||
rspec (>= 2.99, >= 2.14.2, < 4)
|
||||
open4 (1.3.4)
|
||||
openid_connect (0.12.0)
|
||||
activemodel
|
||||
|
@ -445,10 +448,10 @@ GEM
|
|||
rgeo (0.5.3)
|
||||
rgeo-geojson (0.4.3)
|
||||
rgeo (~> 0.5)
|
||||
rspec (3.5.0)
|
||||
rspec-core (~> 3.5.0)
|
||||
rspec-expectations (~> 3.5.0)
|
||||
rspec-mocks (~> 3.5.0)
|
||||
rodf (0.3.7)
|
||||
activesupport (>= 3.0, < 6.0)
|
||||
builder (~> 3.0)
|
||||
rubyzip (~> 1.0)
|
||||
rspec-core (3.5.4)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-expectations (3.5.0)
|
||||
|
@ -479,7 +482,7 @@ GEM
|
|||
ruby-progressbar (1.8.1)
|
||||
ruby_parser (3.8.3)
|
||||
sexp_processor (~> 4.1)
|
||||
rubyzip (1.2.0)
|
||||
rubyzip (1.0.0)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.4.22)
|
||||
sass-rails (5.0.6)
|
||||
|
@ -515,6 +518,9 @@ GEM
|
|||
jquery-rails
|
||||
kaminari (~> 0.17)
|
||||
rails (>= 3.2)
|
||||
spreadsheet_architect (1.4.7)
|
||||
axlsx (>= 2.0)
|
||||
rodf (>= 0.3.6)
|
||||
spring (2.0.0)
|
||||
activesupport (>= 4.2)
|
||||
spring-commands-rspec (1.0.4)
|
||||
|
@ -623,7 +629,6 @@ DEPENDENCIES
|
|||
mailjet
|
||||
maruku
|
||||
mina!
|
||||
nyan-cat-formatter
|
||||
openid_connect
|
||||
openstack
|
||||
parallel_tests (~> 2.10)
|
||||
|
@ -647,6 +652,7 @@ DEPENDENCIES
|
|||
shoulda-matchers
|
||||
simplecov
|
||||
smart_listing
|
||||
spreadsheet_architect
|
||||
spring
|
||||
spring-commands-rspec
|
||||
therubyracer
|
||||
|
|
16
app/assets/javascripts/dossier_commentaires_modal.js
Normal file
16
app/assets/javascripts/dossier_commentaires_modal.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
$(document).on('page:load', init_modal_commentaire);
|
||||
$(document).ready(init_modal_commentaire);
|
||||
|
||||
function init_modal_commentaire() {
|
||||
var modal = $("#modalCommentairesDossierParChamp");
|
||||
var body = modal.find(".modal-body");
|
||||
var originalBody = body.html();
|
||||
|
||||
modal.on("show.bs.modal", function (e) {
|
||||
body.load(e.relatedTarget.getAttribute("data-href"));
|
||||
});
|
||||
|
||||
$("#modalCommentairesDossierParChamp").on("hidden.bs.modal", function (e) {
|
||||
body.html(originalBody);
|
||||
});
|
||||
}
|
|
@ -218,4 +218,4 @@ div.pagination {
|
|||
margin-right: 0px !important;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Backoffice::DossiersController < Backoffice::DossiersListController
|
||||
respond_to :html, :xlsx, :ods, :csv
|
||||
|
||||
def index
|
||||
super
|
||||
|
@ -18,11 +19,17 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
|
|||
end
|
||||
|
||||
def download_dossiers_tps
|
||||
dossiers = current_gestionnaire.dossiers.where.not(state: :draft)
|
||||
|
||||
response.headers['Content-Type'] = 'text/csv'
|
||||
|
||||
render csv: dossiers, status: 200
|
||||
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)
|
||||
else
|
||||
dossiers = dossiers_list_facade(param_liste).dossiers_to_display
|
||||
respond_to do |format|
|
||||
format.xlsx { render xlsx: dossiers }
|
||||
format.ods { render ods: dossiers }
|
||||
format.csv { render csv: dossiers }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def search
|
||||
|
|
|
@ -1,7 +1,20 @@
|
|||
class CommentairesController < ApplicationController
|
||||
def index
|
||||
@facade = DossierFacades.new(
|
||||
params[:dossier_id],
|
||||
(current_gestionnaire || current_user).email,
|
||||
params[:champs_id]
|
||||
)
|
||||
render layout: false
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
redirect_to url_for(controller: '/')
|
||||
end
|
||||
|
||||
def create
|
||||
@commentaire = Commentaire.new
|
||||
@commentaire.dossier = Dossier.find(params['dossier_id'])
|
||||
@commentaire.champ = @commentaire.dossier.champs.find(params[:champ_id]) if params[:champ_id]
|
||||
|
||||
if is_gestionnaire?
|
||||
@commentaire.email = current_gestionnaire.email
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
class DossierFacades
|
||||
|
||||
#TODO rechercher en fonction de la personne/email
|
||||
def initialize dossier_id, email
|
||||
def initialize(dossier_id, email, champ_id = nil)
|
||||
@dossier = Dossier.where(archived: false).find(dossier_id)
|
||||
@email = email
|
||||
@champ_id = champ_id
|
||||
end
|
||||
|
||||
def dossier
|
||||
|
@ -26,8 +27,12 @@ class DossierFacades
|
|||
@dossier.ordered_pieces_justificatives
|
||||
end
|
||||
|
||||
def champ_id
|
||||
@champ_id
|
||||
end
|
||||
|
||||
def commentaires
|
||||
@dossier.ordered_commentaires.all.decorate
|
||||
@dossier.ordered_commentaires.where(champ_id: @champ_id).decorate
|
||||
end
|
||||
|
||||
def commentaire_email
|
||||
|
@ -61,4 +66,4 @@ class DossierFacades
|
|||
def followers
|
||||
Gestionnaire.joins(:follows).where("follows.dossier_id=#{@dossier.id}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,13 +3,13 @@ class InviteMailer < ApplicationMailer
|
|||
def invite_user invite
|
||||
vars_mailer invite
|
||||
|
||||
send_mail invite.email, "TPS - Participez à l'élaboration d'un dossier" unless invite.user.nil?
|
||||
send_mail invite.email, "TPS - Participez à l'élaboration d'un dossier", invite.email_sender unless invite.user.nil?
|
||||
end
|
||||
|
||||
def invite_guest invite
|
||||
vars_mailer invite
|
||||
|
||||
send_mail invite.email, "Invitation - #{invite.email_sender} vous invite à consulter un dossier sur la plateforme TPS"
|
||||
send_mail invite.email, "Invitation - #{invite.email_sender} vous invite à consulter un dossier sur la plateforme TPS", invite.email_sender
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -18,8 +18,10 @@ class InviteMailer < ApplicationMailer
|
|||
@invite = invite
|
||||
end
|
||||
|
||||
def send_mail email, subject
|
||||
mail(from: "tps@apientreprise.fr", to: email,
|
||||
subject: subject)
|
||||
def send_mail email, subject, reply_to
|
||||
mail(from: "tps@apientreprise.fr",
|
||||
to: email,
|
||||
subject: subject,
|
||||
reply_to: reply_to)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
class Champ < ActiveRecord::Base
|
||||
belongs_to :dossier
|
||||
belongs_to :type_de_champ
|
||||
has_many :commentaires
|
||||
|
||||
delegate :libelle, :type_champ, :order_place, :mandatory, :description, :drop_down_list, to: :type_de_champ
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
class Commentaire < ActiveRecord::Base
|
||||
belongs_to :dossier
|
||||
belongs_to :champ
|
||||
|
||||
belongs_to :piece_justificative
|
||||
end
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Dossier < ActiveRecord::Base
|
||||
include SpreadsheetArchitect
|
||||
|
||||
enum state: {draft: 'draft',
|
||||
initiated: 'initiated',
|
||||
|
@ -279,16 +280,75 @@ class Dossier < ActiveRecord::Base
|
|||
procedure.cerfa_flag? && cerfa.size != 0
|
||||
end
|
||||
|
||||
def as_csv(options={})
|
||||
dossier_attr = DossierSerializer.new(self).attributes
|
||||
|
||||
unless entreprise.nil?
|
||||
etablissement_attr = EtablissementCsvSerializer.new(self.etablissement).attributes.map { |k, v| ["etablissement.#{k}", v] }.to_h
|
||||
entreprise_attr = EntrepriseSerializer.new(self.entreprise).attributes.map { |k, v| ["entreprise.#{k}", v] }.to_h
|
||||
dossier_attr = dossier_attr.merge(etablissement_attr).merge(entreprise_attr)
|
||||
def convert_specific_hash_values_to_string(hash_to_convert)
|
||||
hash = {}
|
||||
hash_to_convert.each do |key, value|
|
||||
value = value.to_s if !value.kind_of?(Time) && !value.nil?
|
||||
hash.store(key, value)
|
||||
end
|
||||
return hash
|
||||
end
|
||||
|
||||
dossier_attr
|
||||
def convert_specific_array_values_to_string(array_to_convert)
|
||||
array = []
|
||||
array_to_convert.each do |value|
|
||||
value = value.to_s if !value.kind_of?(Time) && !value.nil?
|
||||
array << value
|
||||
end
|
||||
return array
|
||||
end
|
||||
|
||||
def export_entreprise_data
|
||||
unless entreprise.nil?
|
||||
etablissement_attr = EtablissementCsvSerializer.new(self.etablissement).attributes.map { |k, v| ["etablissement.#{k}".parameterize.underscore.to_sym, v] }.to_h
|
||||
entreprise_attr = EntrepriseSerializer.new(self.entreprise).attributes.map { |k, v| ["entreprise.#{k}".parameterize.underscore.to_sym, v] }.to_h
|
||||
else
|
||||
etablissement_attr = EtablissementSerializer.new(Etablissement.new).attributes.map { |k, v| ["etablissement.#{k}".parameterize.underscore.to_sym, v] }.to_h
|
||||
entreprise_attr = EntrepriseSerializer.new(Entreprise.new).attributes.map { |k, v| ["entreprise.#{k}".parameterize.underscore.to_sym, v] }.to_h
|
||||
end
|
||||
return convert_specific_hash_values_to_string(etablissement_attr.merge(entreprise_attr))
|
||||
end
|
||||
|
||||
def export_default_columns
|
||||
dossier_attr = DossierSerializer.new(self).attributes
|
||||
dossier_attr = convert_specific_hash_values_to_string(dossier_attr)
|
||||
dossier_attr = dossier_attr.merge(self.export_entreprise_data)
|
||||
return dossier_attr
|
||||
end
|
||||
|
||||
def spreadsheet_columns
|
||||
self.export_default_columns.to_a
|
||||
end
|
||||
|
||||
def data_with_champs
|
||||
serialized_dossier = DossierProcedureSerializer.new(self)
|
||||
data = serialized_dossier.attributes.values
|
||||
data += self.champs.order('type_de_champ_id ASC').map(&:value)
|
||||
data += self.export_entreprise_data.values
|
||||
return data
|
||||
end
|
||||
|
||||
def export_headers
|
||||
serialized_dossier = DossierProcedureSerializer.new(self)
|
||||
headers = serialized_dossier.attributes.keys
|
||||
headers += self.procedure.types_de_champ.order('id ASC').map { |types_de_champ| types_de_champ.libelle.parameterize.underscore.to_sym }
|
||||
headers += self.export_entreprise_data.keys
|
||||
return headers
|
||||
end
|
||||
|
||||
def self.export_full_generation(dossiers, format)
|
||||
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
|
||||
|
||||
def reset!
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Entreprise < ActiveRecord::Base
|
||||
|
||||
belongs_to :dossier
|
||||
has_one :etablissement, dependent: :destroy
|
||||
has_one :rna_information, dependent: :destroy
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Etablissement < ActiveRecord::Base
|
||||
|
||||
belongs_to :dossier
|
||||
belongs_to :entreprise
|
||||
|
||||
|
|
|
@ -43,4 +43,4 @@ class TypeDeChamp < ActiveRecord::Base
|
|||
self.mandatory = false if self.type_champ == 'header_section'
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
8
app/serializers/dossier_procedure_serializer.rb
Normal file
8
app/serializers/dossier_procedure_serializer.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
class DossierProcedureSerializer < ActiveModel::Serializer
|
||||
attributes :id,
|
||||
:created_at,
|
||||
:updated_at,
|
||||
:archived,
|
||||
:mandataire_social,
|
||||
:state
|
||||
end
|
|
@ -4,8 +4,7 @@ class DossierSerializer < ActiveModel::Serializer
|
|||
:updated_at,
|
||||
:archived,
|
||||
:mandataire_social,
|
||||
:state,
|
||||
:total_commentaire
|
||||
:state
|
||||
|
||||
has_one :entreprise
|
||||
has_one :etablissement
|
||||
|
@ -15,4 +14,4 @@ class DossierSerializer < ActiveModel::Serializer
|
|||
has_many :champs_private
|
||||
has_many :pieces_justificatives
|
||||
has_many :types_de_piece_justificative
|
||||
end
|
||||
end
|
||||
|
|
|
@ -183,4 +183,4 @@ class DossiersListGestionnaireService
|
|||
def current_preference_smart_listing_page
|
||||
@current_devise_profil.preference_smart_listing_page
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
1
app/views/backoffice/commentaires/index.html.haml
Normal file
1
app/views/backoffice/commentaires/index.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
= render partial: '/users/recapitulatif/commentaires_flux'
|
|
@ -2,10 +2,30 @@
|
|||
#pref_list_menu
|
||||
= render partial: 'backoffice/dossiers/pref_list'
|
||||
|
||||
=link_to t('dynamics.backoffice.download_all_dossiers'), backoffice_download_dossiers_tps_path, {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'}
|
||||
%h1
|
||||
=t('dynamics.backoffice.title')
|
||||
|
||||
%div.dropdown.pull-right#download_menu
|
||||
- if @dossiers_list_facade.dossiers_to_display.count > 200
|
||||
%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 200, merci de bien vouloir appliquer des filtres.'}
|
||||
= t('dynamics.backoffice.limit_excess_download_all_dossiers')
|
||||
- else
|
||||
%button.btn.btn-success.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
|
||||
%i.fa.fa-download
|
||||
= t('dynamics.backoffice.download_all_dossiers')
|
||||
%span.caret
|
||||
%ul.dropdown-menu.dropdown-menu-right
|
||||
%li
|
||||
= link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm' } do
|
||||
= t('dynamics.backoffice.format_csv')
|
||||
%li
|
||||
= link_to backoffice_download_dossiers_tps_path(format: :xlsx, procedure_id: params[:id]), { class: 'btn btn-sm' } do
|
||||
= t('dynamics.backoffice.format_xlsx')
|
||||
%li
|
||||
= link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm' } do
|
||||
= t('dynamics.backoffice.format_ods')
|
||||
|
||||
= render partial: 'backoffice/dossiers/onglets'
|
||||
|
||||
= smart_listing_render :dossiers
|
||||
|
|
|
@ -63,6 +63,12 @@
|
|||
%tr
|
||||
%th{ style: 'width:25%' }
|
||||
=champ.libelle
|
||||
-if gestionnaire_signed_in?
|
||||
=link_to "COM", "", "data-href" => backoffice_dossier_commentaires_path(@facade.dossier, champs_id: champ.id),
|
||||
"data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp"
|
||||
-else
|
||||
=link_to "COM", "", "data-href" => users_dossier_commentaires_path(@facade.dossier, champs_id: champ.id),
|
||||
"data-toggle" => "modal", "data-target" => "#modalCommentairesDossierParChamp"
|
||||
%td
|
||||
-unless champ.decorate.value.blank?
|
||||
=champ.decorate.value.html_safe
|
||||
|
@ -114,3 +120,18 @@
|
|||
%button.action_button.btn.btn-warning
|
||||
%i.fa.fa-circle-o
|
||||
|
||||
#modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"}
|
||||
.modal-dialog{"role" => "document"}
|
||||
.modal-content
|
||||
.modal-header
|
||||
%button.close{"data-dismiss" => "modal", "aria-label" => "Fermer"}
|
||||
%span{"aria-hidden" => true}
|
||||
×
|
||||
.modal-title
|
||||
Commentaires
|
||||
.modal-body
|
||||
%p
|
||||
Chargement des commentaires en cours...
|
||||
.modal-footer
|
||||
%button.btn.btn-primary{"data-dismiss" => "modal"}
|
||||
Fermer
|
||||
|
|
|
@ -53,6 +53,6 @@
|
|||
|
||||
=link_to 'Contact', "mailto:"+t('dynamics.contact_email')
|
||||
|
||||
|
||||
= render partial: 'layouts/google_analytics'
|
||||
|
||||
|
||||
|
|
1
app/views/users/commentaires/index.html.haml
Normal file
1
app/views/users/commentaires/index.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
= render partial: '/users/recapitulatif/commentaires_flux'
|
|
@ -1,6 +1,6 @@
|
|||
.content#commentaires_flux{style:'width:100%;'}
|
||||
.content{id: ('commentaires_flux' + (@facade.champ_id.nil? ? '' : "_#{@facade.champ_id}")),style:'width:100%;'}
|
||||
%div#commentaire_new{style: 'width:80%; margin-left:auto; margin-right:auto; margin-bottom:7%'}
|
||||
= form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id }), class: 'form-inline', method: 'POST', multipart: true) do
|
||||
= form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id, champ_id: @facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do
|
||||
%textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"}
|
||||
%h4.text-primary{style: 'margin-top: 0px'} Ajout un fichier
|
||||
= file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px'
|
||||
|
|
|
@ -99,6 +99,7 @@ set :shared_paths, [
|
|||
'config/initializers/mailjet.rb',
|
||||
'config/initializers/storage_url.rb',
|
||||
'app/views/root/landing.html.haml',
|
||||
'app/views/layouts/_google_analytics.html',
|
||||
'app/views/cgu/index.html.haml'
|
||||
]
|
||||
|
||||
|
@ -143,6 +144,9 @@ task :setup => :environment do
|
|||
queue! %[mkdir -p "#{deploy_to}/shared/views/cgu"]
|
||||
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/views/cgu"]
|
||||
|
||||
queue! %[mkdir -p "#{deploy_to}/shared/views/layouts"]
|
||||
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/views/layouts"]
|
||||
|
||||
queue! %[mkdir -p "#{deploy_to}/shared/config/locales/dynamics"]
|
||||
queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/config/locales/dynamics"]
|
||||
|
||||
|
|
|
@ -12,7 +12,11 @@ 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: 'Tous mes dossiers en CSV'
|
||||
download_all_dossiers: 'Télécharger mes dossiers'
|
||||
limit_excess_download_all_dossiers: 'Limite de dossiers fixée à 200 pour le téléchargement'
|
||||
format_csv: 'Au format CSV'
|
||||
format_xlsx: 'Au format XLSX'
|
||||
format_ods: 'Au format ODS'
|
||||
research:
|
||||
placeholder: 'Rechercher un dossier ...'
|
||||
filter_procedure:
|
||||
|
@ -42,4 +46,4 @@ fr:
|
|||
title: Dossiers
|
||||
onglet_accompagnateurs:
|
||||
add:
|
||||
title: 'Ajouter un accompagnateur'
|
||||
title: 'Ajouter un accompagnateur'
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
fr_opensimplif:
|
||||
dynamics:
|
||||
page_title: OpenSimplif
|
||||
contact_email: simplification.sgmap@modernisation.gouv.fr
|
||||
users:
|
||||
connexion_title: "Connectez-vous en tant qu'utilisateur"
|
||||
mes_dossiers: 'Mon tableau de bord'
|
||||
|
||||
backoffice:
|
||||
title: Tableau de bord
|
||||
dossiers: Tableau de bord
|
||||
pref_list:
|
||||
title: 'Affichage du tableau de bord'
|
||||
description: 'Ce menu vous permet de choisir les différentes colonnes que vous souhaitez voir apparaître dans le tableau de bord.'
|
||||
download_all_dossiers: 'Exporter'
|
||||
research:
|
||||
placeholder: 'Rechercher une simplification ...'
|
||||
filter_procedure:
|
||||
title: "Statut des simplifications :"
|
||||
first: 'Tous'
|
||||
|
||||
dossiers:
|
||||
depositaite: "Emetteur de la simplification"
|
||||
numéro: 'Simplification n°'
|
||||
followers:
|
||||
title: "Personnes suivant l'activité de cette simplification"
|
||||
|
||||
admin:
|
||||
connexion_title: Connectez-vous en tant qu'administrateur
|
||||
dossiers:
|
||||
tableau_de_bord:
|
||||
title: 'Tableau de bord'
|
||||
nouvelle_procedure: 'Nouveau format de fiche'
|
||||
menu:
|
||||
title: Tableau de bord
|
||||
accompagnateurs: Utilisateurs
|
||||
procedures: Tableau de bord
|
||||
procedure:
|
||||
onglets:
|
||||
accompagnateurs: Utilisateurs
|
||||
stats:
|
||||
title: Simplification
|
||||
onglet_accompagnateurs:
|
||||
add:
|
||||
title: 'Ajouter un utilisateur'
|
|
@ -75,6 +75,7 @@ Rails.application.routes.draw do
|
|||
post '/recapitulatif/submit' => 'recapitulatif#submit'
|
||||
|
||||
post '/commentaire' => 'commentaires#create'
|
||||
resources :commentaires, only: [:index]
|
||||
|
||||
get '/carte/position' => 'carte#get_position'
|
||||
post '/carte/qp' => 'carte#get_qp'
|
||||
|
@ -162,6 +163,7 @@ Rails.application.routes.draw do
|
|||
post 'close' => 'dossiers#close'
|
||||
|
||||
put 'follow' => 'dossiers#follow'
|
||||
resources :commentaires, only: [:index]
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
class AddChampIdToCommentaires < ActiveRecord::Migration
|
||||
def change
|
||||
change_table :commentaires do |t|
|
||||
t.references :champ, null: true, index: true
|
||||
end
|
||||
end
|
||||
end
|
|
@ -111,6 +111,8 @@ ActiveRecord::Schema.define(version: 20161115053251) do
|
|||
t.integer "dossier_id"
|
||||
t.datetime "updated_at", null: false
|
||||
t.integer "piece_justificative_id"
|
||||
t.integer "champ_id"
|
||||
t.index ["champ_id"], name: "index_commentaires_on_champ_id", using: :btree
|
||||
t.index ["dossier_id"], name: "index_commentaires_on_dossier_id", using: :btree
|
||||
end
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ describe API::V1::DossiersController do
|
|||
let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure) } }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:body) { JSON.parse(retour.body, symbolize_names: true) }
|
||||
let(:field_list) { [:id, :created_at, :updated_at, :archived, :mandataire_social, :total_commentaire, :entreprise, :etablissement, :cerfa, :types_de_piece_justificative, :pieces_justificatives, :champs, :champs_private, :commentaires, :state] }
|
||||
let(:field_list) { [:id, :created_at, :updated_at, :archived, :mandataire_social, :entreprise, :etablissement, :cerfa, :types_de_piece_justificative, :pieces_justificatives, :champs, :champs_private, :commentaires, :state] }
|
||||
subject { body[:dossier] }
|
||||
|
||||
it 'return REST code 200', :show_in_doc do
|
||||
|
@ -128,7 +128,6 @@ describe API::V1::DossiersController do
|
|||
it { expect(subject[:updated_at]).to eq('2008-09-01T08:05:00.000Z') }
|
||||
it { expect(subject[:archived]).to eq(dossier.archived) }
|
||||
it { expect(subject[:mandataire_social]).to eq(dossier.mandataire_social) }
|
||||
it { expect(subject[:total_commentaire]).to eq(dossier.total_commentaire) }
|
||||
|
||||
it { expect(subject.keys).to match_array(field_list) }
|
||||
|
||||
|
|
52
spec/features/backoffice/flux_de_commentaires_spec.rb
Normal file
52
spec/features/backoffice/flux_de_commentaires_spec.rb
Normal file
|
@ -0,0 +1,52 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'backoffice: flux de commentaires' do
|
||||
let(:gestionnaire) { create(:gestionnaire) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
|
||||
let(:champ1) { dossier.champs.first }
|
||||
let(:champ2) { create(:champ, dossier: dossier, type_de_champ: create(:type_de_champ_public, libelle: "subtitle")) }
|
||||
|
||||
let!(:commentaire1) { create(:commentaire, dossier: dossier, champ: champ1) }
|
||||
let!(:commentaire2) { create(:commentaire, dossier: dossier) }
|
||||
let!(:commentaire3) { create(:commentaire, dossier: dossier, champ: champ2) }
|
||||
let!(:commentaire4) { create(:commentaire, dossier: dossier, champ: champ1) }
|
||||
|
||||
before do
|
||||
login_as gestionnaire, scope: :gestionnaire
|
||||
visit backoffice_dossier_path(dossier)
|
||||
end
|
||||
|
||||
scenario "seuls les commentaires généraux sont affichés" do
|
||||
comments = find("#commentaires_flux")
|
||||
expect(comments).to have_selector(".description", count: 1)
|
||||
end
|
||||
|
||||
scenario "affichage des commentaires du champs", js: true do
|
||||
find("#liste_champs th", text: champ1.libelle).click_link("COM")
|
||||
expect(page).to have_css("#modalCommentairesDossierParChamp.in")
|
||||
|
||||
modal = find("#modalCommentairesDossierParChamp")
|
||||
expect(modal).to have_css(".description", count: 2)
|
||||
end
|
||||
|
||||
scenario "crée un commentaire sur un champ", js: true do
|
||||
# ouverture modale
|
||||
find("#liste_champs th", text: champ1.libelle).click_link("COM")
|
||||
|
||||
# ajout du commentaire
|
||||
form = find("#modalCommentairesDossierParChamp").find("#commentaire_new")
|
||||
form.fill_in("texte_commentaire", with: "le corps du commentaire sur le champ #{champ1.libelle}")
|
||||
form.click_on("Poster")
|
||||
|
||||
# le commentaire ne s'ajoute pas aux commentaires généraux
|
||||
comments = find("#commentaires_flux")
|
||||
expect(comments).to have_selector(".description", count: 1)
|
||||
|
||||
# ajout du commentaire aux commentaires du champs
|
||||
find("#liste_champs th", text: champ1.libelle).click_link("COM")
|
||||
modal = find("#modalCommentairesDossierParChamp")
|
||||
expect(modal).to have_css(".description", count: 3)
|
||||
end
|
||||
end
|
|
@ -65,7 +65,7 @@ feature 'usage of pref list dossier lateral panel', js: true do
|
|||
expect(page).not_to have_css('#delete_pref_list_entreprise_siren')
|
||||
end
|
||||
|
||||
scenario 'dossier is brought up to date' do
|
||||
scenario 'dossier is brought up to date', js: true do
|
||||
wait_for_ajax
|
||||
expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']")
|
||||
end
|
||||
|
|
53
spec/features/users/flux_de_commentaires_spec.rb
Normal file
53
spec/features/users/flux_de_commentaires_spec.rb
Normal file
|
@ -0,0 +1,53 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'users: flux de commentaires' do
|
||||
let(:user) { create(:user) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, state: "replied") }
|
||||
let(:dossier_id) { dossier.id }
|
||||
|
||||
let(:champ1) { dossier.champs.first }
|
||||
let(:champ2) { create(:champ, dossier: dossier, type_de_champ: create(:type_de_champ_public, libelle: "subtitle")) }
|
||||
|
||||
let!(:commentaire1) { create(:commentaire, dossier: dossier, champ: champ1) }
|
||||
let!(:commentaire2) { create(:commentaire, dossier: dossier) }
|
||||
let!(:commentaire3) { create(:commentaire, dossier: dossier, champ: champ2) }
|
||||
let!(:commentaire4) { create(:commentaire, dossier: dossier, champ: champ1) }
|
||||
|
||||
before do
|
||||
login_as user, scope: :user
|
||||
visit users_dossier_recapitulatif_path(dossier)
|
||||
end
|
||||
|
||||
scenario "seuls les commentaires généraux sont affichés" do
|
||||
comments = find("#commentaires_flux")
|
||||
expect(comments).to have_selector(".description", count: 1)
|
||||
end
|
||||
|
||||
scenario "affichage des commentaires du champs", js: true do
|
||||
th = find("#liste_champs th", text: champ1.libelle)
|
||||
th.click_link("COM")
|
||||
expect(page).to have_css("#modalCommentairesDossierParChamp.in")
|
||||
|
||||
modal = find("#modalCommentairesDossierParChamp")
|
||||
expect(modal).to have_css(".description", count: 2)
|
||||
end
|
||||
|
||||
scenario "crée un commentaire sur un champ", js: true do
|
||||
# ouverture modale
|
||||
find("#liste_champs th", text: champ1.libelle).click_link("COM")
|
||||
|
||||
# ajout du commentaire
|
||||
form = find("#modalCommentairesDossierParChamp").find("#commentaire_new")
|
||||
form.fill_in("texte_commentaire", with: "le corps du commentaire sur le champ #{champ1.libelle}")
|
||||
form.click_on("Poster")
|
||||
|
||||
# le commentaire ne s'ajoute pas aux commentaires généraux
|
||||
comments = find("#commentaires_flux")
|
||||
expect(comments).to have_selector(".description", count: 1)
|
||||
|
||||
# ajout du commentaire aux commentaires du champs
|
||||
find("#liste_champs th", text: champ1.libelle).click_link("COM")
|
||||
modal = find("#modalCommentairesDossierParChamp")
|
||||
expect(modal).to have_css(".description", count: 3)
|
||||
end
|
||||
end
|
|
@ -578,45 +578,192 @@ describe Dossier do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#as_csv?' do
|
||||
describe '#convert_specific_hash_values_to_string(hash_to_convert)' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
subject { dossier.as_csv }
|
||||
let(:dossier_serialized_attributes) { DossierSerializer.new(dossier).attributes }
|
||||
|
||||
it { expect(subject[:archived]).to be_falsey }
|
||||
it { expect(subject['etablissement.siret']).to eq('44011762001530') }
|
||||
it { expect(subject['etablissement.siege_social']).to be_truthy }
|
||||
it { expect(subject['etablissement.naf']).to eq('4950Z') }
|
||||
it { expect(subject['etablissement.libelle_naf']).to eq('Transports par conduites') }
|
||||
it { expect(subject['etablissement.adresse']).to eq("GRTGAZ IMMEUBLE BORA 6 RUE RAOUL NORDLING 92270 BOIS COLOMBES") }
|
||||
it { expect(subject['etablissement.numero_voie']).to eq('6') }
|
||||
it { expect(subject['etablissement.type_voie']).to eq('RUE') }
|
||||
it { expect(subject['etablissement.nom_voie']).to eq('RAOUL NORDLING') }
|
||||
it { expect(subject['etablissement.complement_adresse']).to eq('IMMEUBLE BORA') }
|
||||
it { expect(subject['etablissement.code_postal']).to eq('92270') }
|
||||
it { expect(subject['etablissement.localite']).to eq('BOIS COLOMBES') }
|
||||
it { expect(subject['etablissement.code_insee_localite']).to eq('92009') }
|
||||
it { expect(subject['entreprise.siren']).to eq('440117620') }
|
||||
it { expect(subject['entreprise.capital_social']).to eq(537100000) }
|
||||
it { expect(subject['entreprise.numero_tva_intracommunautaire']).to eq('FR27440117620') }
|
||||
it { expect(subject['entreprise.forme_juridique']).to eq("SA à conseil d'administration (s.a.i.)") }
|
||||
it { expect(subject['entreprise.forme_juridique_code']).to eq('5599') }
|
||||
it { expect(subject['entreprise.nom_commercial']).to eq('GRTGAZ') }
|
||||
it { expect(subject['entreprise.raison_sociale']).to eq('GRTGAZ') }
|
||||
it { expect(subject['entreprise.siret_siege_social']).to eq('44011762001530') }
|
||||
it { expect(subject['entreprise.code_effectif_entreprise']).to eq('51') }
|
||||
it { expect(subject['entreprise.date_creation']).to eq('Thu, 28 Jan 2016 10:16:29 UTC +00:0') }
|
||||
it { expect(subject['entreprise.nom']).to be_nil }
|
||||
it { expect(subject['entreprise.prenom']).to be_nil }
|
||||
subject { dossier.convert_specific_hash_values_to_string(dossier_serialized_attributes) }
|
||||
|
||||
it { expect(dossier_serialized_attributes[:id]).to be_an(Integer) }
|
||||
it { expect(dossier_serialized_attributes[:created_at]).to be_a(Time) }
|
||||
it { expect(dossier_serialized_attributes[:updated_at]).to be_a(Time) }
|
||||
it { expect(dossier_serialized_attributes[:archived]).to be_in([true, false]) }
|
||||
it { expect(dossier_serialized_attributes[:mandataire_social]).to be_in([true, false]) }
|
||||
it { expect(dossier_serialized_attributes[:state]).to be_a(String) }
|
||||
|
||||
it { expect(subject[:id]).to be_a(String) }
|
||||
it { expect(subject[:created_at]).to be_a(Time) }
|
||||
it { expect(subject[:updated_at]).to be_a(Time) }
|
||||
it { expect(subject[:archived]).to be_a(String) }
|
||||
it { expect(subject[:mandataire_social]).to be_a(String) }
|
||||
it { expect(subject[:state]).to be_a(String) }
|
||||
end
|
||||
|
||||
describe '#convert_specific_array_values_to_string(array_to_convert)' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
let(:dossier_data_with_champs) { dossier.data_with_champs }
|
||||
|
||||
subject { dossier.convert_specific_hash_values_to_string(dossier_data_with_champs) }
|
||||
end
|
||||
|
||||
describe '#export_entreprise_data' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
|
||||
subject { dossier.export_entreprise_data }
|
||||
|
||||
it { expect(subject[:etablissement_siret]).to eq('44011762001530') }
|
||||
it { expect(subject[:etablissement_siege_social]).to eq('true') }
|
||||
it { expect(subject[:etablissement_naf]).to eq('4950Z') }
|
||||
it { expect(subject[:etablissement_libelle_naf]).to eq('Transports par conduites') }
|
||||
it { expect(subject[:etablissement_adresse]).to eq('GRTGAZ IMMEUBLE BORA 6 RUE RAOUL NORDLING 92270 BOIS COLOMBES') }
|
||||
it { expect(subject[:etablissement_numero_voie]).to eq('6') }
|
||||
it { expect(subject[:etablissement_type_voie]).to eq('RUE') }
|
||||
it { expect(subject[:etablissement_nom_voie]).to eq('RAOUL NORDLING') }
|
||||
it { expect(subject[:etablissement_complement_adresse]).to eq('IMMEUBLE BORA') }
|
||||
it { expect(subject[:etablissement_code_postal]).to eq('92270') }
|
||||
it { expect(subject[:etablissement_localite]).to eq('BOIS COLOMBES') }
|
||||
it { expect(subject[:etablissement_code_insee_localite]).to eq('92009') }
|
||||
it { expect(subject[:entreprise_siren]).to eq('440117620') }
|
||||
it { expect(subject[:entreprise_capital_social]).to eq('537100000') }
|
||||
it { expect(subject[:entreprise_numero_tva_intracommunautaire]).to eq('FR27440117620') }
|
||||
it { expect(subject[:entreprise_forme_juridique]).to eq("SA à conseil d'administration (s.a.i.)") }
|
||||
it { expect(subject[:entreprise_forme_juridique_code]).to eq('5599') }
|
||||
it { expect(subject[:entreprise_nom_commercial]).to eq('GRTGAZ') }
|
||||
it { expect(subject[:entreprise_raison_sociale]).to eq('GRTGAZ') }
|
||||
it { expect(subject[:entreprise_siret_siege_social]).to eq('44011762001530') }
|
||||
it { expect(subject[:entreprise_code_effectif_entreprise]).to eq('51') }
|
||||
it { expect(subject[:entreprise_date_creation]).to eq('Thu, 28 Jan 2016 10:16:29 UTC +00:0') }
|
||||
it { expect(subject[:entreprise_nom]).to be_nil }
|
||||
it { expect(subject[:entreprise_prenom]).to be_nil }
|
||||
|
||||
it { expect(subject.count).to eq(EntrepriseSerializer.new(Entreprise.new).as_json.count + EtablissementSerializer.new(Etablissement.new).as_json.count) }
|
||||
end
|
||||
|
||||
describe '#export_default_columns' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
subject { dossier.export_default_columns }
|
||||
|
||||
it { expect(subject[:archived]).to eq('false') }
|
||||
it { expect(subject[:etablissement_siret]).to eq('44011762001530') }
|
||||
it { expect(subject[:etablissement_siege_social]).to eq('true') }
|
||||
it { expect(subject[:etablissement_naf]).to eq('4950Z') }
|
||||
it { expect(subject[:etablissement_libelle_naf]).to eq('Transports par conduites') }
|
||||
it { expect(subject[:etablissement_adresse]).to eq('GRTGAZ IMMEUBLE BORA 6 RUE RAOUL NORDLING 92270 BOIS COLOMBES') }
|
||||
it { expect(subject[:etablissement_numero_voie]).to eq('6') }
|
||||
it { expect(subject[:etablissement_type_voie]).to eq('RUE') }
|
||||
it { expect(subject[:etablissement_nom_voie]).to eq('RAOUL NORDLING') }
|
||||
it { expect(subject[:etablissement_complement_adresse]).to eq('IMMEUBLE BORA') }
|
||||
it { expect(subject[:etablissement_code_postal]).to eq('92270') }
|
||||
it { expect(subject[:etablissement_localite]).to eq('BOIS COLOMBES') }
|
||||
it { expect(subject[:etablissement_code_insee_localite]).to eq('92009') }
|
||||
it { expect(subject[:entreprise_siren]).to eq('440117620') }
|
||||
it { expect(subject[:entreprise_capital_social]).to eq('537100000') }
|
||||
it { expect(subject[:entreprise_numero_tva_intracommunautaire]).to eq('FR27440117620') }
|
||||
it { expect(subject[:entreprise_forme_juridique]).to eq("SA à conseil d'administration (s.a.i.)") }
|
||||
it { expect(subject[:entreprise_forme_juridique_code]).to eq('5599') }
|
||||
it { expect(subject[:entreprise_nom_commercial]).to eq('GRTGAZ') }
|
||||
it { expect(subject[:entreprise_raison_sociale]).to eq('GRTGAZ') }
|
||||
it { expect(subject[:entreprise_siret_siege_social]).to eq('44011762001530') }
|
||||
it { expect(subject[:entreprise_code_effectif_entreprise]).to eq('51') }
|
||||
it { expect(subject[:entreprise_date_creation]).to eq('Thu, 28 Jan 2016 10:16:29 UTC +00:0') }
|
||||
it { expect(subject[:entreprise_nom]).to be_nil }
|
||||
it { expect(subject[:entreprise_prenom]).to be_nil }
|
||||
|
||||
context 'when dossier does not have enterprise' do
|
||||
let(:dossier) { create(:dossier, user: user, procedure: procedure) }
|
||||
subject { dossier.as_csv }
|
||||
subject { dossier.export_default_columns }
|
||||
|
||||
it { expect(subject[:archived]).to be_falsey }
|
||||
it { expect(subject[:archived]).to eq('false') }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#export_headers' do
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
subject { dossier.export_headers }
|
||||
|
||||
it { expect(subject).to include(:description) }
|
||||
it { expect(subject.count).to eq(DossierProcedureSerializer.new(dossier).attributes.count + dossier.procedure.types_de_champ.count + dossier.export_entreprise_data.count) }
|
||||
end
|
||||
|
||||
describe '#data_with_champs' do
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
subject { dossier.data_with_champs }
|
||||
|
||||
it { expect(subject[0]).to be_a_kind_of(Integer) }
|
||||
it { expect(subject[1]).to be_a_kind_of(Time) }
|
||||
it { expect(subject[2]).to be_a_kind_of(Time) }
|
||||
it { expect(subject[3]).to be_in([true, false]) }
|
||||
it { expect(subject[4]).to be_in([true, false]) }
|
||||
it { expect(subject[5]).to eq("draft") }
|
||||
it { expect(subject.count).to eq(DossierProcedureSerializer.new(dossier).attributes.count + dossier.procedure.types_de_champ.count + dossier.export_entreprise_data.count) }
|
||||
end
|
||||
|
||||
describe '#Dossier.to_csv' do
|
||||
let!(:procedure) { create(:procedure) }
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
|
||||
subject do
|
||||
dossier_hash = {}
|
||||
dossier_splitted = Dossier.to_csv.split("\n").map { |cell| cell.split(",") }
|
||||
index = 0
|
||||
dossier_splitted[0].each do |column|
|
||||
dossier_hash.store(column.to_sym, dossier_splitted[1][index])
|
||||
index = index + 1
|
||||
end
|
||||
dossier_hash
|
||||
end
|
||||
|
||||
it { expect(subject[:archived]).to eq('false') }
|
||||
it { expect(subject[:etablissement_siret]).to eq('44011762001530') }
|
||||
it { expect(subject[:etablissement_siege_social]).to eq('true') }
|
||||
it { expect(subject[:etablissement_naf]).to eq('4950Z') }
|
||||
it { expect(subject[:etablissement_libelle_naf]).to eq('Transports par conduites') }
|
||||
it { expect(subject[:etablissement_adresse]).to eq('GRTGAZ IMMEUBLE BORA 6 RUE RAOUL NORDLING 92270 BOIS COLOMBES') }
|
||||
it { expect(subject[:etablissement_numero_voie]).to eq('6') }
|
||||
it { expect(subject[:etablissement_type_voie]).to eq('RUE') }
|
||||
it { expect(subject[:etablissement_nom_voie]).to eq('RAOUL NORDLING') }
|
||||
it { expect(subject[:etablissement_complement_adresse]).to eq('IMMEUBLE BORA') }
|
||||
it { expect(subject[:etablissement_code_postal]).to eq('92270') }
|
||||
it { expect(subject[:etablissement_localite]).to eq('BOIS COLOMBES') }
|
||||
it { expect(subject[:etablissement_code_insee_localite]).to eq('92009') }
|
||||
it { expect(subject[:entreprise_siren]).to eq('440117620') }
|
||||
it { expect(subject[:entreprise_capital_social]).to eq('537100000') }
|
||||
it { expect(subject[:entreprise_numero_tva_intracommunautaire]).to eq('FR27440117620') }
|
||||
it { expect(subject[:entreprise_forme_juridique]).to eq("SA à conseil d'administration (s.a.i.)") }
|
||||
it { expect(subject[:entreprise_forme_juridique_code]).to eq('5599') }
|
||||
it { expect(subject[:entreprise_nom_commercial]).to eq('GRTGAZ') }
|
||||
it { expect(subject[:entreprise_raison_sociale]).to eq('GRTGAZ') }
|
||||
it { expect(subject[:entreprise_siret_siege_social]).to eq('44011762001530') }
|
||||
it { expect(subject[:entreprise_code_effectif_entreprise]).to eq('51') }
|
||||
it { expect(subject[:entreprise_date_creation]).to eq('2016-01-28 10:16:29 UTC') }
|
||||
it { expect(subject[:entreprise_nom]).to be_nil }
|
||||
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) }
|
||||
|
||||
subject { Dossier.to_xlsx }
|
||||
|
||||
it { expect(subject).is_a?(String) }
|
||||
end
|
||||
|
||||
describe '#Dossier.to_ods' do
|
||||
let!(:procedure) { create(:procedure) }
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
|
||||
subject { Dossier.to_ods }
|
||||
|
||||
it { expect(subject).is_a?(String) }
|
||||
end
|
||||
|
||||
describe '#reset!' do
|
||||
let!(:dossier) { create :dossier, :with_entreprise, autorisation_donnees: true }
|
||||
let!(:rna_information) { create :rna_information, entreprise: dossier.entreprise }
|
||||
|
|
Loading…
Reference in a new issue