Merge branch 'develop' into leaflet_freedraw
# Conflicts: # db/schema.rb
This commit is contained in:
commit
c4e0e6b402
44 changed files with 831 additions and 114 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -26,4 +26,5 @@ bin/*
|
|||
config/initializers/token.rb
|
||||
doc/*.svg
|
||||
rubocop.html
|
||||
config/france_connect.yml
|
||||
config/france_connect.yml
|
||||
vendor/**/*
|
32
app/assets/stylesheets/backoffice.scss
Normal file
32
app/assets/stylesheets/backoffice.scss
Normal file
|
@ -0,0 +1,32 @@
|
|||
#backoffice_search {
|
||||
.table {
|
||||
tr th {
|
||||
border-top: none
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
li {
|
||||
margin-top: 11px;
|
||||
a {
|
||||
height: 45px;
|
||||
h5 {
|
||||
margin-top: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#search {
|
||||
margin-top: 0;
|
||||
a {
|
||||
height: auto;
|
||||
}
|
||||
a:hover {
|
||||
height: 56px;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
padding: 11px 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,6 +5,33 @@ class Backoffice::DossiersController < ApplicationController
|
|||
initialize_instance_params params[:id]
|
||||
end
|
||||
|
||||
def a_traiter
|
||||
@dossiers_a_traiter = Dossier.a_traiter(current_gestionnaire).decorate
|
||||
total_dossiers_per_state
|
||||
end
|
||||
|
||||
def en_attente
|
||||
@dossiers_en_attente = Dossier.en_attente(current_gestionnaire).decorate
|
||||
total_dossiers_per_state
|
||||
end
|
||||
|
||||
def termine
|
||||
@dossiers_termine = Dossier.termine(current_gestionnaire).decorate
|
||||
total_dossiers_per_state
|
||||
end
|
||||
|
||||
def search
|
||||
@search_terms = params[:search_terms]
|
||||
|
||||
@dossiers_search, @dossier = Dossier.search(current_gestionnaire, @search_terms)
|
||||
@dossiers_search = @dossiers_search.decorate unless @dossiers_search.empty?
|
||||
@dossier = @dossier.decorate unless @dossier.nil?
|
||||
|
||||
total_dossiers_per_state
|
||||
rescue RuntimeError
|
||||
@dossiers_search = []
|
||||
end
|
||||
|
||||
def valid
|
||||
initialize_instance_params params[:dossier_id]
|
||||
|
||||
|
@ -25,6 +52,12 @@ class Backoffice::DossiersController < ApplicationController
|
|||
|
||||
private
|
||||
|
||||
def total_dossiers_per_state
|
||||
@dossiers_a_traiter_total = !@dossiers_a_traiter.nil? ? @dossiers_a_traiter.size : Dossier.a_traiter(current_gestionnaire).size
|
||||
@dossiers_en_attente_total = !@dossiers_en_attente.nil? ? @dossiers_en_attente.size : Dossier.en_attente(current_gestionnaire).size
|
||||
@dossiers_termine_total = !@dossiers_termine.nil? ? @dossiers_termine.size : Dossier.termine(current_gestionnaire).size
|
||||
end
|
||||
|
||||
def initialize_instance_params dossier_id
|
||||
@dossier = Dossier.find(dossier_id)
|
||||
@entreprise = @dossier.entreprise.decorate
|
||||
|
|
|
@ -4,9 +4,7 @@ class BackofficeController < ApplicationController
|
|||
if !gestionnaire_signed_in?
|
||||
redirect_to(controller: '/gestionnaires/sessions', action: :new)
|
||||
else
|
||||
@dossiers_a_traiter = Dossier.a_traiter(current_gestionnaire).decorate
|
||||
@dossiers_en_attente = Dossier.en_attente(current_gestionnaire).decorate
|
||||
@dossiers_termine = Dossier.termine(current_gestionnaire).decorate
|
||||
redirect_to(:backoffice_dossiers_a_traiter)
|
||||
end
|
||||
end
|
||||
end
|
7
app/controllers/demo_controller.rb
Normal file
7
app/controllers/demo_controller.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
class DemoController < ApplicationController
|
||||
|
||||
def index
|
||||
|
||||
end
|
||||
|
||||
end
|
|
@ -19,6 +19,17 @@ class Users::DossiersController < UsersController
|
|||
procedure = Procedure.find(params['procedure_id'])
|
||||
@etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(siret).to_params)
|
||||
@entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(siren).to_params)
|
||||
|
||||
exercices = SIADE::ExercicesAdapter.new(siret).to_params
|
||||
|
||||
unless exercices.nil?
|
||||
exercices.each_value do |exercice|
|
||||
exercice = Exercice.new(exercice)
|
||||
exercice.etablissement = @etablissement
|
||||
exercice.save
|
||||
end
|
||||
end
|
||||
|
||||
@dossier = Dossier.create(user: current_user)
|
||||
@dossier.draft!
|
||||
|
||||
|
|
|
@ -128,6 +128,45 @@ class Dossier < ActiveRecord::Base
|
|||
Dossier.joins(:procedure).where("state='closed' AND dossiers.procedure_id = procedures.id AND procedures.administrateur_id = #{current_gestionnaire.administrateur_id}").order('updated_at ASC')
|
||||
end
|
||||
|
||||
def self.search current_gestionnaire, terms
|
||||
return [], nil if terms.blank?
|
||||
|
||||
dossiers = Dossier.arel_table
|
||||
users = User.arel_table
|
||||
etablissements = Etablissement.arel_table
|
||||
entreprises = Entreprise.arel_table
|
||||
|
||||
composed_scope = self.joins('LEFT OUTER JOIN users ON users.id = dossiers.user_id')
|
||||
.joins('LEFT OUTER JOIN entreprises ON entreprises.dossier_id = dossiers.id')
|
||||
.joins('LEFT OUTER JOIN etablissements ON etablissements.dossier_id = dossiers.id')
|
||||
|
||||
terms.split.each do |word|
|
||||
query_string = "%#{word}%"
|
||||
query_string_start_with = "#{word}%"
|
||||
|
||||
composed_scope = composed_scope.where(
|
||||
dossiers[:nom_projet].matches(query_string).or\
|
||||
users[:email].matches(query_string).or\
|
||||
etablissements[:siret].matches(query_string_start_with).or\
|
||||
entreprises[:raison_sociale].matches(query_string))
|
||||
end
|
||||
|
||||
#TODO refactor
|
||||
composed_scope = composed_scope.where(
|
||||
dossiers[:id].eq_any(current_gestionnaire.dossiers.ids).and\
|
||||
dossiers[:state].does_not_match('draft'))
|
||||
|
||||
begin
|
||||
if Float(terms) && terms.to_i <= 2147483647 && current_gestionnaire.dossiers.ids.include?(terms.to_i)
|
||||
dossier = Dossier.where("state != 'draft'").find(terms.to_i)
|
||||
end
|
||||
rescue ArgumentError, ActiveRecord::RecordNotFound
|
||||
dossier = nil
|
||||
end
|
||||
|
||||
return composed_scope, dossier
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def build_default_cerfa
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class Etablissement < ActiveRecord::Base
|
||||
belongs_to :dossier
|
||||
belongs_to :entreprise
|
||||
|
||||
has_many :exercices
|
||||
end
|
||||
|
|
3
app/models/exercice.rb
Normal file
3
app/models/exercice.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
class Exercice < ActiveRecord::Base
|
||||
belongs_to :etablissement
|
||||
end
|
|
@ -5,4 +5,7 @@ class Gestionnaire < ActiveRecord::Base
|
|||
:recoverable, :rememberable, :trackable, :validatable
|
||||
|
||||
belongs_to :administrateur
|
||||
|
||||
has_many :procedures, through: :administrateur
|
||||
has_many :dossiers, through: :procedures
|
||||
end
|
||||
|
|
25
app/views/backoffice/dossiers/_onglets.html.haml
Normal file
25
app/views/backoffice/dossiers/_onglets.html.haml
Normal file
|
@ -0,0 +1,25 @@
|
|||
%h1 Gestion des dossiers
|
||||
%br
|
||||
|
||||
%ul.nav.nav-tabs
|
||||
%li{class: "#{'active' unless @dossiers_a_traiter.nil? }"}
|
||||
%a{:href => "#{url_for :backoffice_dossiers_a_traiter}"}
|
||||
%h5.text-danger
|
||||
= "À traiter (#{@dossiers_a_traiter_total})"
|
||||
%li{class: "#{'active' unless @dossiers_en_attente.nil? }"}
|
||||
%a{:href => "#{url_for :backoffice_dossiers_en_attente}"}
|
||||
%h5.text-info
|
||||
="En attente (#{@dossiers_en_attente_total})"
|
||||
%li{class: "#{'active' unless @dossiers_termine.nil? }"}
|
||||
%a{:href => "#{url_for :backoffice_dossiers_termine}"}
|
||||
%h5.text-success
|
||||
= "Terminé (#{@dossiers_termine_total})"
|
||||
%li#search{class: "#{'active' unless @dossiers_search.nil?}", style:'float:right'}
|
||||
%a
|
||||
= form_tag(backoffice_dossiers_search_url, method: :post) do
|
||||
.input-group{style:'width: 300px'}
|
||||
= text_field_tag('search_terms', "#{@search_terms unless @search_terms.nil? }", id: 'search_terms', placeholder: "Rechercher un dossier ...", class:'form-control')
|
||||
%span.input-group-btn
|
||||
= button_tag('', id:'search_button', class:'btn btn-default') do
|
||||
%i.fa.fa-search
|
||||
%br
|
17
app/views/backoffice/dossiers/a_traiter.html.haml
Normal file
17
app/views/backoffice/dossiers/a_traiter.html.haml
Normal file
|
@ -0,0 +1,17 @@
|
|||
#backoffice_a_traiter
|
||||
= render partial: 'onglets'
|
||||
|
||||
-#%h3.text-danger À traiter
|
||||
%table.table
|
||||
%thead.row
|
||||
%th.col-md-4.col-lg-4 Procédure
|
||||
%th.col-md-4.col-lg-4 Dossier
|
||||
%th.col-md-2.col-lg-2 État
|
||||
%th.col-md-2.col-lg-2 Date de mise à jour
|
||||
- @dossiers_a_traiter.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.state_fr
|
||||
%td= dossier.last_update
|
17
app/views/backoffice/dossiers/en_attente.html.haml
Normal file
17
app/views/backoffice/dossiers/en_attente.html.haml
Normal file
|
@ -0,0 +1,17 @@
|
|||
#backoffice_en_attente
|
||||
= render partial: 'onglets'
|
||||
|
||||
-#%h3.text-info En attente
|
||||
%table.table
|
||||
%thead
|
||||
%th.col-md-4.col-lg-4 Procédure
|
||||
%th.col-md-4.col-lg-4 Dossier
|
||||
%th.col-md-2.col-lg-2 État
|
||||
%th.col-md-2.col-lg-2 Date de mise à jour
|
||||
- @dossiers_en_attente.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.state_fr
|
||||
%td= dossier.last_update
|
47
app/views/backoffice/dossiers/search.html.haml
Normal file
47
app/views/backoffice/dossiers/search.html.haml
Normal file
|
@ -0,0 +1,47 @@
|
|||
#backoffice_search
|
||||
= render partial: 'onglets'
|
||||
|
||||
- unless @dossier.nil?
|
||||
%table.table{style:'background-color: rgba(248, 248, 255, 0.8)'}
|
||||
%tr
|
||||
%th{colspan:2}
|
||||
%h4
|
||||
= "Dossier N°#{@dossier.id}"
|
||||
%tr
|
||||
%td.col-md-2.col-lg-1
|
||||
= @dossier.id
|
||||
%td.col-md-4.col-lg-3
|
||||
= link_to(@dossier.nom_projet, "/backoffice/dossiers/#{@dossier.id}")
|
||||
%td.col-md-2.col-lg-3
|
||||
= @dossier.entreprise.raison_sociale
|
||||
%td.col-md-4.col-lg-2
|
||||
= @dossier.user.email
|
||||
%td.col-md-2.col-lg-2
|
||||
= @dossier.etablissement.siret
|
||||
%td.col-md-1.col-lg-1
|
||||
= @dossier.state_fr
|
||||
%br
|
||||
|
||||
- if @dossiers_search.empty? && @dossier.nil?
|
||||
%div{style: 'text-align:center'}
|
||||
%h4 Aucun dossier trouvé
|
||||
|
||||
- elsif !@dossiers_search.empty?
|
||||
%table.table
|
||||
%tr
|
||||
%th.col-md-2.col-lg-1 ID dossier
|
||||
%th.col-md-4.col-lg-3 Dossier
|
||||
%th.col-md-2.col-lg-3 Raison Sociale
|
||||
%th.col-md-4.col-lg-2 Email contact
|
||||
%th.col-md-2.col-lg-2 SIRET
|
||||
%th.col-md-1.col-lg-1 État
|
||||
|
||||
- @dossiers_search.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.id
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.entreprise.raison_sociale
|
||||
%td= dossier.user.email
|
||||
%td= dossier.etablissement.siret
|
||||
%td= dossier.state_fr
|
17
app/views/backoffice/dossiers/termine.html.haml
Normal file
17
app/views/backoffice/dossiers/termine.html.haml
Normal file
|
@ -0,0 +1,17 @@
|
|||
#backoffice_termine
|
||||
= render partial: 'onglets'
|
||||
|
||||
-#%h3.text-success Terminé
|
||||
%table.table
|
||||
%thead
|
||||
%th.col-md-4.col-lg-4 Procédure
|
||||
%th.col-md-4.col-lg-4 Dossier
|
||||
%th.col-md-2.col-lg-2 État
|
||||
%th.col-md-2.col-lg-2 Date de mise à jour
|
||||
- @dossiers_termine.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.state_fr
|
||||
%td= dossier.last_update
|
|
@ -1,49 +0,0 @@
|
|||
#backoffice
|
||||
%h1 Gestion des dossiers
|
||||
%br
|
||||
%h3.text-danger À traiter
|
||||
%table.table
|
||||
%thead.row
|
||||
%th.col-md-4.col-lg-4 Procédure
|
||||
%th.col-md-4.col-lg-4 Dossier
|
||||
%th.col-md-2.col-lg-2 État
|
||||
%th.col-md-2.col-lg-2 Date de mise à jour
|
||||
- @dossiers_a_traiter.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.state_fr
|
||||
%td= dossier.last_update
|
||||
|
||||
%br
|
||||
%h3.text-info En attente
|
||||
%table.table
|
||||
%thead
|
||||
%th.col-md-4.col-lg-4 Procédure
|
||||
%th.col-md-4.col-lg-4 Dossier
|
||||
%th.col-md-2.col-lg-2 État
|
||||
%th.col-md-2.col-lg-2 Date de mise à jour
|
||||
- @dossiers_en_attente.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.state_fr
|
||||
%td= dossier.last_update
|
||||
|
||||
%br
|
||||
%h3.text-success Terminé
|
||||
%table.table
|
||||
%thead
|
||||
%th.col-md-4.col-lg-4 Procédure
|
||||
%th.col-md-4.col-lg-4 Dossier
|
||||
%th.col-md-2.col-lg-2 État
|
||||
%th.col-md-2.col-lg-2 Date de mise à jour
|
||||
- @dossiers_termine.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.state_fr
|
||||
%td= dossier.last_update
|
15
app/views/demo/index.html.haml
Normal file
15
app/views/demo/index.html.haml
Normal file
|
@ -0,0 +1,15 @@
|
|||
%table.table
|
||||
%tr
|
||||
%th{colspan: 3}
|
||||
%h4 Lien vers les procédures TPS
|
||||
%tr
|
||||
%td
|
||||
%th Titre
|
||||
%th Description
|
||||
- Procedure.all.each do |procedure|
|
||||
%tr
|
||||
%td.col-md-1.col-lg-1
|
||||
%td.col-md-4.col-lg-4
|
||||
= link_to procedure.libelle, "/users/siret?procedure_id=#{procedure.id}"
|
||||
%td
|
||||
= procedure.description
|
|
@ -5,24 +5,34 @@
|
|||
.row#infos_entreprise
|
||||
.col-lg-6.col-md-6
|
||||
%dl.dl-horizontal
|
||||
|
||||
%dt Siret :
|
||||
%dd.text-success= @etablissement.siret
|
||||
|
||||
- if @etablissement.siret != @entreprise.siret_siege_social
|
||||
%dt SIRET siège social :
|
||||
%dd= @entreprise.siret_siege_social
|
||||
|
||||
%dt Forme juridique :
|
||||
%dd= @entreprise.forme_juridique
|
||||
|
||||
%dt libelle naf :
|
||||
%dt Libellé naf :
|
||||
%dd= @etablissement.libelle_naf
|
||||
|
||||
%dt Code naf :
|
||||
%dd= @etablissement.naf
|
||||
|
||||
%dt Date de création :
|
||||
%dd= Time.at(@entreprise.date_creation).strftime "%d-%m-%Y"
|
||||
|
||||
%dt Effectife entreprise :
|
||||
%dt Effectif entreprise :
|
||||
%dd= @entreprise.effectif
|
||||
|
||||
%dt Capital social :
|
||||
%dd= @entreprise.pretty_capital_social
|
||||
%dt Code effectif :
|
||||
%dd= @entreprise.code_effectif_entreprise
|
||||
|
||||
%dt Numéro TVA intracommunautaire :
|
||||
%dd= @entreprise.numero_tva_intracommunautaire
|
||||
|
||||
|
||||
.col-lg-6.col-md-6
|
||||
%dl.dl-horizontal
|
||||
|
@ -33,3 +43,14 @@
|
|||
= line
|
||||
%br
|
||||
|
||||
%dt Capital social :
|
||||
%dd= @entreprise.pretty_capital_social
|
||||
|
||||
%dt Exercices :
|
||||
%dd
|
||||
%address
|
||||
- @etablissement.exercices.each_with_index do |exercice, index|
|
||||
%strong
|
||||
= "#{exercice.dateFinExercice.year} : "
|
||||
= number_to_currency(exercice.ca)
|
||||
%br
|
||||
|
|
|
@ -20,6 +20,14 @@
|
|||
# available at http://guides.rubyonrails.org/i18n.html.
|
||||
|
||||
fr:
|
||||
number:
|
||||
currency:
|
||||
format:
|
||||
unit: '€'
|
||||
delimiter: ' '
|
||||
separator: ','
|
||||
precision: 2
|
||||
format: '%n %u'
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: 'Votre compte a été confirmé avec succès.'
|
||||
|
|
|
@ -11,12 +11,14 @@ Rails.application.routes.draw do
|
|||
devise_for :users, controllers: {
|
||||
sessions: 'users/sessions'
|
||||
}
|
||||
|
||||
|
||||
root 'root#index'
|
||||
|
||||
get 'france_connect' => 'france_connect#login'
|
||||
get 'france_connect/callback' => 'france_connect#callback'
|
||||
|
||||
get 'demo' => 'demo#index'
|
||||
|
||||
namespace :users do
|
||||
get 'siret' => 'siret#index'
|
||||
|
||||
|
@ -51,6 +53,11 @@ Rails.application.routes.draw do
|
|||
namespace :backoffice do
|
||||
get 'sign_in' => '/gestionnaires/sessions#new'
|
||||
|
||||
get 'dossiers/a_traiter' => 'dossiers#a_traiter'
|
||||
get 'dossiers/en_attente' => 'dossiers#en_attente'
|
||||
get 'dossiers/termine' => 'dossiers#termine'
|
||||
post 'dossiers/search' => 'dossiers#search'
|
||||
|
||||
resources :dossiers do
|
||||
post 'valid' => 'dossiers#valid'
|
||||
post 'close' => 'dossiers#close'
|
||||
|
|
11
db/migrate/20151113171605_create_exercice_table.rb
Normal file
11
db/migrate/20151113171605_create_exercice_table.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
class CreateExerciceTable < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :exercices do |t|
|
||||
t.string :ca
|
||||
t.datetime :dateFinExercice
|
||||
t.integer :date_fin_exercice_timestamp
|
||||
end
|
||||
|
||||
add_reference :exercices, :etablissement, references: :etablissements
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20151112151918) do
|
||||
ActiveRecord::Schema.define(version: 20151113171605) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -105,6 +105,13 @@ ActiveRecord::Schema.define(version: 20151112151918) do
|
|||
t.integer "entreprise_id"
|
||||
end
|
||||
|
||||
create_table "exercices", force: :cascade do |t|
|
||||
t.string "ca"
|
||||
t.datetime "dateFinExercice"
|
||||
t.integer "date_fin_exercice_timestamp"
|
||||
t.integer "etablissement_id"
|
||||
end
|
||||
|
||||
create_table "gestionnaires", force: :cascade do |t|
|
||||
t.string "email", default: "", null: false
|
||||
t.string "encrypted_password", default: "", null: false
|
||||
|
|
|
@ -16,13 +16,20 @@ class SIADE::API
|
|||
call(base_url + endpoint)
|
||||
end
|
||||
|
||||
def self.call(url)
|
||||
def self.exercices(siret)
|
||||
endpoint = "/api/v1/etablissements/exercices/#{siret}"
|
||||
call(base_url + endpoint)
|
||||
end
|
||||
|
||||
def self.call(url, params = {})
|
||||
params.merge!(token: SIADETOKEN)
|
||||
|
||||
verify_ssl_mode = OpenSSL::SSL::VERIFY_NONE
|
||||
|
||||
RestClient::Resource.new(
|
||||
url,
|
||||
verify_ssl: verify_ssl_mode
|
||||
).get(params: { token: SIADETOKEN })
|
||||
).get(params: params)
|
||||
end
|
||||
|
||||
def self.base_url
|
||||
|
|
32
lib/siade/exercices_adapter.rb
Normal file
32
lib/siade/exercices_adapter.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
class SIADE::ExercicesAdapter
|
||||
def initialize(siret)
|
||||
@siret = siret
|
||||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::API.exercices(@siret), symbolize_names: true)
|
||||
rescue
|
||||
@data_source = nil
|
||||
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
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
|
||||
def attr_to_fetch
|
||||
[:ca,
|
||||
:dateFinExercice,
|
||||
:date_fin_exercice_timestamp]
|
||||
end
|
||||
end
|
|
@ -4,7 +4,7 @@ describe Backoffice::DossiersController, type: :controller do
|
|||
let(:dossier) { create(:dossier, :with_entreprise, :with_user) }
|
||||
let(:dossier_id) { dossier.id }
|
||||
let(:bad_dossier_id) { Dossier.count + 10 }
|
||||
let(:gestionnaire) { create(:gestionnaire) }
|
||||
let(:gestionnaire) { create(:gestionnaire, administrateur: create(:administrateur)) }
|
||||
|
||||
describe 'GET #show' do
|
||||
context 'gestionnaire is connected' do
|
||||
|
@ -29,6 +29,57 @@ describe Backoffice::DossiersController, type: :controller do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'GET #a_traiter' do
|
||||
context 'when gestionnaire is connected' do
|
||||
before do
|
||||
sign_in gestionnaire
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
get :a_traiter
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET #en_attente' do
|
||||
context 'when gestionnaire is connected' do
|
||||
before do
|
||||
sign_in gestionnaire
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
get :en_attente
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET #termine' do
|
||||
context 'when gestionnaire is connected' do
|
||||
before do
|
||||
sign_in gestionnaire
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
get :termine
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #search' do
|
||||
before do
|
||||
sign_in gestionnaire
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
post :search, search_terms: 'test'
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe 'POST #valid' do
|
||||
before do
|
||||
dossier.initiated!
|
||||
|
|
22
spec/controllers/backoffice_controller_spec.rb
Normal file
22
spec/controllers/backoffice_controller_spec.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe BackofficeController, type: :controller do
|
||||
describe 'GET #index' do
|
||||
context 'when gestionnaire is not connected'do
|
||||
before do
|
||||
get :index
|
||||
end
|
||||
|
||||
it { expect(response).to redirect_to :new_gestionnaire_session }
|
||||
end
|
||||
|
||||
context 'when gestionnaire is connected'do
|
||||
before do
|
||||
sign_in create(:gestionnaire)
|
||||
get :index
|
||||
end
|
||||
|
||||
it { expect(response).to redirect_to :backoffice_dossiers_a_traiter }
|
||||
end
|
||||
end
|
||||
end
|
|
@ -53,6 +53,9 @@ describe Users::DossiersController, type: :controller do
|
|||
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||
.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'))
|
||||
end
|
||||
|
||||
describe 'professionnel fills form' do
|
||||
|
@ -98,6 +101,10 @@ describe Users::DossiersController, type: :controller do
|
|||
expect(Etablissement.last.entreprise).to eq(Entreprise.last)
|
||||
end
|
||||
|
||||
it 'creates exercices for dossier' do
|
||||
expect { subject }.to change { Exercice.count }.by(3)
|
||||
end
|
||||
|
||||
it 'links procedure to dossier' do
|
||||
subject
|
||||
expect(Dossier.last.procedure).to eq(Procedure.last)
|
||||
|
|
|
@ -7,11 +7,11 @@ describe EntrepriseDecorator do
|
|||
let(:prenom) { 'mon prenom' }
|
||||
let(:entreprise_params) do
|
||||
{
|
||||
capital_social: 123_000,
|
||||
code_effectif_entreprise: code_effectif,
|
||||
raison_sociale: raison_sociale,
|
||||
nom: nom,
|
||||
prenom: prenom
|
||||
capital_social: 123_000,
|
||||
code_effectif_entreprise: code_effectif,
|
||||
raison_sociale: raison_sociale,
|
||||
nom: nom,
|
||||
prenom: prenom
|
||||
|
||||
}
|
||||
end
|
||||
|
@ -47,7 +47,7 @@ describe EntrepriseDecorator do
|
|||
|
||||
describe '#pretty_capital_social' do
|
||||
it 'pretty display capital_social' do
|
||||
expect(subject.pretty_capital_social).to eq('123 000.00 €')
|
||||
expect(subject.pretty_capital_social).to eq('123 000,00 €')
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ feature 'when gestionnaire come to /backoffice and is not authenticated' do
|
|||
page.click_on 'Se connecter'
|
||||
end
|
||||
scenario 'he is redirected to /backoffice' do
|
||||
expect(page).to have_css('#backoffice')
|
||||
expect(page).to have_css('#backoffice_a_traiter')
|
||||
end
|
||||
end
|
||||
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: 'replied') }
|
||||
let!(:dossier) { create(:dossier, :with_user, :with_entreprise, procedure: procedure, state: 'initiated') }
|
||||
before do
|
||||
visit backoffice_path
|
||||
end
|
||||
|
|
45
spec/features/backoffice/onglets_link_spec.rb
Normal file
45
spec/features/backoffice/onglets_link_spec.rb
Normal file
|
@ -0,0 +1,45 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'on click on tabs button' do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:gestionnaire) { create(:gestionnaire, administrateur: administrateur) }
|
||||
|
||||
before do
|
||||
login_as gestionnaire, scope: :gestionnaire
|
||||
end
|
||||
|
||||
context 'when gestionnaire is logged in' do
|
||||
context 'when he click on tabs a traitee' do
|
||||
before do
|
||||
visit backoffice_dossiers_en_attente_url
|
||||
page.click_on 'À traiter (0)'
|
||||
end
|
||||
|
||||
scenario 'it redirect to backoffice dossier termine' do
|
||||
expect(page).to have_css('#backoffice_a_traiter')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when he click on tabs en attente' do
|
||||
before do
|
||||
visit backoffice_dossiers_termine_url
|
||||
page.click_on 'En attente (0)'
|
||||
end
|
||||
|
||||
scenario 'it redirect to backoffice dossier en attente' do
|
||||
expect(page).to have_css('#backoffice_en_attente')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when he click on tabs termine' do
|
||||
before do
|
||||
visit backoffice_dossiers_a_traiter_url
|
||||
page.click_on 'Terminé (0)'
|
||||
end
|
||||
|
||||
scenario 'it redirect to backoffice dossier termine' do
|
||||
expect(page).to have_css('#backoffice_termine')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
58
spec/features/backoffice/search_file_spec.rb
Normal file
58
spec/features/backoffice/search_file_spec.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'search file on gestionnaire backoffice' do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:gestionnaire) { create(:gestionnaire, administrateur: administrateur) }
|
||||
|
||||
before do
|
||||
login_as gestionnaire, scope: :gestionnaire
|
||||
end
|
||||
|
||||
context 'when gestionnaire is logged in' do
|
||||
context 'when he click on search button' do
|
||||
let(:terms) { '' }
|
||||
|
||||
before do
|
||||
visit backoffice_dossiers_a_traiter_url
|
||||
page.find_by_id(:search_terms).set terms
|
||||
page.find_by_id(:search_button).click
|
||||
end
|
||||
|
||||
it { expect(page).to have_css('#backoffice_search') }
|
||||
|
||||
context 'when terms input is empty' do
|
||||
it { expect(page).to have_content('Aucun dossier trouvé') }
|
||||
end
|
||||
|
||||
context 'when terms input is informed' do
|
||||
let(:terms) { 'test' }
|
||||
|
||||
it 'terms stay in input after search' do
|
||||
expect(page.find_by_id('search_terms').value).to eq(terms)
|
||||
end
|
||||
|
||||
context 'when terms input does not return result' do
|
||||
it { expect(page).to have_content('Aucun dossier trouvé') }
|
||||
end
|
||||
|
||||
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(:terms) { dossier.nom_projet }
|
||||
|
||||
it { expect(page).not_to have_content('Projet de test') }
|
||||
|
||||
it { expect(page).to have_content(dossier.nom_projet) }
|
||||
|
||||
context "when terms is a file's id" do
|
||||
let(:terms) { dossier.id }
|
||||
|
||||
it { expect(page).to have_content("Dossier N°#{dossier.id}") }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -28,9 +28,12 @@ feature 'user path for dossier creation' do
|
|||
context 'sets siret' do
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/#{siret}?token=#{SIADETOKEN}")
|
||||
.to_return(body: File.read('spec/support/files/etablissement.json', status: 200))
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
||||
.to_return(body: File.read('spec/support/files/etablissement.json', status: 200))
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||
.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'))
|
||||
page.find_by_id('siret').set siret
|
||||
page.click_on 'Commencer'
|
||||
end
|
||||
|
|
|
@ -26,9 +26,11 @@ feature 'user arrive on siret page' do
|
|||
context 'when enter a siret' do
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/#{siret}?token=#{SIADETOKEN}")
|
||||
.to_return(status: 200, body: File.read('spec/support/files/etablissement.json'))
|
||||
.to_return(status: 200, body: File.read('spec/support/files/etablissement.json'))
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
||||
.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'))
|
||||
page.find_by_id('siret').set siret
|
||||
page.click_on 'Commencer'
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ describe SIADE::API do
|
|||
subject { described_class.entreprise(siren) }
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||
.to_return(status: status, body: body)
|
||||
.to_return(status: status, body: body)
|
||||
end
|
||||
context 'when siren does not exist' do
|
||||
let(:siren) { '111111111' }
|
||||
|
@ -31,7 +31,7 @@ describe SIADE::API do
|
|||
subject { described_class.etablissement(siret) }
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/#{siret}?token=#{SIADETOKEN}")
|
||||
.to_return(status: status, body: body)
|
||||
.to_return(status: status, body: body)
|
||||
end
|
||||
|
||||
context 'when siret does not exist' do
|
||||
|
@ -54,4 +54,35 @@ describe SIADE::API do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.exercices' do
|
||||
before do
|
||||
stub_request(:get, /https:\/\/api-dev.apientreprise.fr\/api\/v1\/etablissements\/exercices\/.*token=/)
|
||||
.to_return(status: status, body: body)
|
||||
end
|
||||
|
||||
context 'when siret does not exist' do
|
||||
subject { described_class.exercices(siret) }
|
||||
|
||||
let(:siret) { '11111111111111' }
|
||||
let(:status) { 404 }
|
||||
let(:body) { '' }
|
||||
|
||||
it 'raises RestClient::ResourceNotFound' do
|
||||
expect { subject }.to raise_error(RestClient::ResourceNotFound)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when siret exists' do
|
||||
subject { described_class.exercices(siret) }
|
||||
|
||||
let(:siret) { '41816609600051' }
|
||||
let(:status) { 200 }
|
||||
let(:body) { File.read('spec/support/files/exercices.json') }
|
||||
|
||||
it 'raises RestClient::Unauthorized' do
|
||||
expect(subject).to eq(body)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
33
spec/lib/siade/exercices_adapter_spec.rb
Normal file
33
spec/lib/siade/exercices_adapter_spec.rb
Normal file
|
@ -0,0 +1,33 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::ExercicesAdapter do
|
||||
let(:siret) { '41816609600051' }
|
||||
subject { described_class.new(siret).to_params }
|
||||
|
||||
before do
|
||||
stub_request(:get, /https:\/\/api-dev.apientreprise.fr\/api\/v1\/etablissements\/exercices\/.*token=/)
|
||||
.to_return(body: File.read('spec/support/files/exercices.json', status: 200))
|
||||
end
|
||||
|
||||
it '#to_params class est une Hash ?' do
|
||||
expect(subject).to be_an_instance_of(Hash)
|
||||
end
|
||||
|
||||
it 'have 3 exercices' do
|
||||
expect(subject.size).to eq(3)
|
||||
end
|
||||
|
||||
context 'Attributs Exercices' do
|
||||
it 'L\'exercice contient bien un ca' do
|
||||
expect(subject[0][:ca]).to eq('21009417')
|
||||
end
|
||||
|
||||
it 'L\'exercice contient bien une date de fin d\'exercice' do
|
||||
expect(subject[0][:dateFinExercice]).to eq("2013-12-31T00:00:00+01:00")
|
||||
end
|
||||
|
||||
it 'L\'exercice contient bien une date_fin_exercice_timestamp' do
|
||||
expect(subject[0][:date_fin_exercice_timestamp]).to eq(1388444400)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -72,7 +72,7 @@ describe Dossier do
|
|||
end
|
||||
|
||||
describe '#retrieve_piece_justificative_by_type' do
|
||||
let(:all_dossier_pj_id){dossier.procedure.types_de_piece_justificative}
|
||||
let(:all_dossier_pj_id) { dossier.procedure.types_de_piece_justificative }
|
||||
subject { dossier.retrieve_piece_justificative_by_type all_dossier_pj_id.first }
|
||||
before do
|
||||
dossier.build_default_pieces_justificatives
|
||||
|
@ -137,12 +137,12 @@ describe Dossier do
|
|||
|
||||
context 'when action is not valid' do
|
||||
let(:action) { 'test' }
|
||||
it { expect{ subject }.to raise_error('action is not valid') }
|
||||
it { expect { subject }.to raise_error('action is not valid') }
|
||||
end
|
||||
|
||||
context 'when role is not valid' do
|
||||
let(:role) { 'test' }
|
||||
it { expect{ subject }.to raise_error('role is not valid') }
|
||||
it { expect { subject }.to raise_error('role is not valid') }
|
||||
end
|
||||
|
||||
context 'when dossier is at state draft' do
|
||||
|
@ -154,13 +154,13 @@ describe Dossier do
|
|||
let(:role) { 'user' }
|
||||
|
||||
context 'when he updates dossier informations' do
|
||||
let(:action) {'update'}
|
||||
let(:action) { 'update' }
|
||||
|
||||
it { is_expected.to eq('draft') }
|
||||
end
|
||||
|
||||
context 'when he posts a comment' do
|
||||
let(:action) {'comment'}
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('draft') }
|
||||
end
|
||||
|
@ -184,13 +184,13 @@ describe Dossier do
|
|||
context 'when is update dossier informations' do
|
||||
let(:action) { 'update' }
|
||||
|
||||
it {is_expected.to eq('initiated')}
|
||||
it { is_expected.to eq('initiated') }
|
||||
end
|
||||
|
||||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it {is_expected.to eq('initiated')}
|
||||
it { is_expected.to eq('initiated') }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -200,13 +200,13 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('replied')}
|
||||
it { is_expected.to eq('replied') }
|
||||
end
|
||||
|
||||
context 'when is validated the dossier' do
|
||||
let(:action) { 'valid' }
|
||||
|
||||
it {is_expected.to eq('validated')}
|
||||
it { is_expected.to eq('validated') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -241,13 +241,13 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('replied')}
|
||||
it { is_expected.to eq('replied') }
|
||||
end
|
||||
|
||||
context 'when is validated the dossier' do
|
||||
let(:action) { 'valid' }
|
||||
|
||||
it {is_expected.to eq('validated')}
|
||||
it { is_expected.to eq('validated') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -263,13 +263,13 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('updated')}
|
||||
it { is_expected.to eq('updated') }
|
||||
end
|
||||
|
||||
context 'when is updated dossier informations' do
|
||||
let(:action) { 'update' }
|
||||
|
||||
it { is_expected.to eq('updated')}
|
||||
it { is_expected.to eq('updated') }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -279,13 +279,13 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('replied')}
|
||||
it { is_expected.to eq('replied') }
|
||||
end
|
||||
|
||||
context 'when is validated the dossier' do
|
||||
let(:action) { 'valid' }
|
||||
|
||||
it {is_expected.to eq('validated')}
|
||||
it { is_expected.to eq('validated') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -316,7 +316,7 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('validated')}
|
||||
it { is_expected.to eq('validated') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -342,13 +342,13 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it {is_expected.to eq('submitted')}
|
||||
it { is_expected.to eq('submitted') }
|
||||
end
|
||||
|
||||
context 'when is closed the dossier' do
|
||||
let(:action) { 'close' }
|
||||
|
||||
it {is_expected.to eq('closed')}
|
||||
it { is_expected.to eq('closed') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -364,7 +364,7 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('closed')}
|
||||
it { is_expected.to eq('closed') }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -374,7 +374,7 @@ describe Dossier do
|
|||
context 'when is post a comment' do
|
||||
let(:action) { 'comment' }
|
||||
|
||||
it { is_expected.to eq('closed')}
|
||||
it { is_expected.to eq('closed') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -388,15 +388,15 @@ 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!(: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
|
||||
|
||||
|
||||
describe '#a_traiter' do
|
||||
|
@ -417,5 +417,86 @@ describe Dossier do
|
|||
it { expect(subject.size).to eq(1) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '.search' do
|
||||
subject { liste_dossiers }
|
||||
|
||||
let(:liste_dossiers) { described_class.search(gestionnaire_1, terms)[0] }
|
||||
let(:dossier) { described_class.search(gestionnaire_1, terms)[1] }
|
||||
|
||||
let(:administrateur_1) { create(:administrateur) }
|
||||
let(:administrateur_2) { create(:administrateur) }
|
||||
|
||||
let(:gestionnaire_1) { create(:gestionnaire, administrateur: administrateur_1) }
|
||||
let(:gestionnaire_2) { create(:gestionnaire, administrateur: administrateur_2) }
|
||||
|
||||
let(:procedure_1) { create(:procedure, administrateur: administrateur_1) }
|
||||
let(:procedure_2) { create(:procedure, administrateur: administrateur_2) }
|
||||
|
||||
let!(:dossier_0) { create(:dossier, nom_projet: 'je suis un brouillon', state: 'draft', procedure: procedure_1, user: create(:user, email: 'brouillon@clap.fr')) }
|
||||
let!(:dossier_1) { create(:dossier, nom_projet: 'Projet de test', state: 'initiated', procedure: procedure_1, user: create(:user, email: 'contact@test.com')) }
|
||||
let!(:dossier_2) { create(:dossier, nom_projet: 'Lili et Marcel', state: 'initiated', procedure: procedure_1, user: create(:user, email: 'plop@gmail.com')) }
|
||||
let!(:dossier_3) { create(:dossier, nom_projet: 'Construction projet marcel', state: 'initiated', procedure: procedure_2, user: create(:user, email: 'peace@clap.fr')) }
|
||||
|
||||
let!(:etablissement_1) { create(:etablissement, entreprise: create(:entreprise, raison_sociale: 'OCTO Academy', dossier: dossier_1), dossier: dossier_1, siret: '41636169600051') }
|
||||
let!(:etablissement_2) { create(:etablissement, entreprise: create(:entreprise, raison_sociale: 'Plop octo', dossier: dossier_2), dossier: dossier_2, siret: '41816602300012') }
|
||||
let!(:etablissement_3) { create(:etablissement, entreprise: create(:entreprise, raison_sociale: 'OCTO Technology', dossier: dossier_3), dossier: dossier_3, siret: '41816609600051') }
|
||||
|
||||
describe 'search is empty' do
|
||||
let(:terms) { '' }
|
||||
|
||||
it { expect(subject.size).to eq(0) }
|
||||
end
|
||||
|
||||
describe 'search draft file' do
|
||||
let(:terms) { 'brouillon' }
|
||||
|
||||
it { expect(subject.size).to eq(0) }
|
||||
end
|
||||
|
||||
describe 'search on file title' do
|
||||
let(:terms) { 'Marcel' }
|
||||
|
||||
it { expect(subject.size).to eq(1) }
|
||||
end
|
||||
|
||||
describe 'search on contact email' do
|
||||
let(:terms) { 'clap' }
|
||||
|
||||
it { expect(subject.size).to eq(0) }
|
||||
end
|
||||
|
||||
describe 'search on ID dossier' do
|
||||
let(:terms) { "#{dossier_2.id}" }
|
||||
|
||||
it { expect(dossier.id).to eq(dossier_2.id) }
|
||||
end
|
||||
|
||||
describe 'search on SIRET' do
|
||||
context 'when is part of SIRET' do
|
||||
let(:terms) { '4181' }
|
||||
|
||||
it { expect(subject.size).to eq(1) }
|
||||
end
|
||||
|
||||
context 'when is a complet SIRET' do
|
||||
let(:terms) { '41816602300012' }
|
||||
|
||||
it { expect(subject.size).to eq(1) }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'search on raison social' do
|
||||
let(:terms) { 'OCTO' }
|
||||
|
||||
it { expect(subject.size).to eq(2) }
|
||||
end
|
||||
|
||||
describe 'search on multiple fields' do
|
||||
let(:terms) { 'octo test' }
|
||||
|
||||
it { expect(subject.size).to eq(1) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -19,5 +19,6 @@ describe Etablissement do
|
|||
describe 'associations' do
|
||||
it { is_expected.to belong_to(:dossier) }
|
||||
it { is_expected.to belong_to(:entreprise) }
|
||||
it { is_expected.to have_many(:exercices) }
|
||||
end
|
||||
end
|
||||
|
|
13
spec/models/exercice_spec.rb
Normal file
13
spec/models/exercice_spec.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Exercice do
|
||||
describe 'database columns' do
|
||||
it { is_expected.to have_db_column(:ca) }
|
||||
it { is_expected.to have_db_column(:dateFinExercice) }
|
||||
it { is_expected.to have_db_column(:date_fin_exercice_timestamp) }
|
||||
end
|
||||
|
||||
describe 'associations' do
|
||||
it { is_expected.to belong_to(:etablissement) }
|
||||
end
|
||||
end
|
|
@ -18,5 +18,7 @@ describe Gestionnaire, type: :model do
|
|||
|
||||
describe 'association' do
|
||||
it { is_expected.to belong_to(:administrateur) }
|
||||
it { is_expected.to have_many(:procedures) }
|
||||
it { is_expected.to have_many(:dossiers) }
|
||||
end
|
||||
end
|
||||
|
|
19
spec/support/files/exercices.json
Normal file
19
spec/support/files/exercices.json
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"exercices":[
|
||||
{
|
||||
"ca":"21009417",
|
||||
"dateFinExercice":"2013-12-31T00:00:00+01:00",
|
||||
"date_fin_exercice_timestamp": 1388444400
|
||||
},
|
||||
{
|
||||
"ca":"18968298",
|
||||
"dateFinExercice":"2012-12-31T00:00:00+01:00",
|
||||
"date_fin_exercice_timestamp": 1356908400
|
||||
},
|
||||
{
|
||||
"ca":"17768838",
|
||||
"dateFinExercice":"2011-12-31T00:00:00+01:00",
|
||||
"date_fin_exercice_timestamp": 1325286000
|
||||
}
|
||||
]
|
||||
}
|
21
spec/views/backoffice/dossiers/a_traiter_html.haml_spec.rb
Normal file
21
spec/views/backoffice/dossiers/a_traiter_html.haml_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'backoffice/dossiers/a_traiter.html.haml', type: :view do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:gestionnaire) { create(:gestionnaire, administrateur: administrateur) }
|
||||
|
||||
let!(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:decorate_dossier) { create(:dossier, :with_user, state: 'initiated', procedure: procedure).decorate }
|
||||
|
||||
before do
|
||||
assign(:dossiers_a_traiter, Dossier.a_traiter(gestionnaire).decorate)
|
||||
render
|
||||
end
|
||||
|
||||
subject { rendered }
|
||||
it { is_expected.to have_css('#backoffice_a_traiter') }
|
||||
it { is_expected.to have_content(procedure.libelle) }
|
||||
it { is_expected.to have_content(decorate_dossier.nom_projet) }
|
||||
it { is_expected.to have_content(decorate_dossier.state_fr) }
|
||||
it { is_expected.to have_content(decorate_dossier.last_update) }
|
||||
end
|
|
@ -1,23 +1,19 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'backoffice/index.html.haml', type: :view do
|
||||
describe 'backoffice/dossiers/en_attente.html.haml', type: :view do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:gestionnaire) { create(:gestionnaire, administrateur: administrateur) }
|
||||
|
||||
let!(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:decorate_dossier) { create(:dossier, :with_user, procedure: procedure).decorate }
|
||||
let!(:decorate_dossier) { create(:dossier, :with_user, procedure: procedure, state: 'replied').decorate }
|
||||
|
||||
before do
|
||||
assign(:dossiers_a_traiter, Dossier.a_traiter(gestionnaire).decorate)
|
||||
assign(:dossiers_en_attente, Dossier.en_attente(gestionnaire).decorate)
|
||||
assign(:dossiers_termine, Dossier.termine(gestionnaire).decorate)
|
||||
|
||||
decorate_dossier.initiated!
|
||||
render
|
||||
end
|
||||
|
||||
subject { rendered }
|
||||
it { is_expected.to have_css('#backoffice') }
|
||||
it { is_expected.to have_css('#backoffice_en_attente') }
|
||||
it { is_expected.to have_content(procedure.libelle) }
|
||||
it { is_expected.to have_content(decorate_dossier.nom_projet) }
|
||||
it { is_expected.to have_content(decorate_dossier.state_fr) }
|
21
spec/views/backoffice/dossiers/termine_html.haml_spec.rb
Normal file
21
spec/views/backoffice/dossiers/termine_html.haml_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'backoffice/dossiers/termine.html.haml', type: :view do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:gestionnaire) { create(:gestionnaire, administrateur: administrateur) }
|
||||
|
||||
let!(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:decorate_dossier) { create(:dossier, :with_user, procedure: procedure, state: 'closed').decorate }
|
||||
|
||||
before do
|
||||
assign(:dossiers_termine, Dossier.termine(gestionnaire).decorate)
|
||||
render
|
||||
end
|
||||
|
||||
subject { rendered }
|
||||
it { is_expected.to have_css('#backoffice_termine') }
|
||||
it { is_expected.to have_content(procedure.libelle) }
|
||||
it { is_expected.to have_content(decorate_dossier.nom_projet) }
|
||||
it { is_expected.to have_content(decorate_dossier.state_fr) }
|
||||
it { is_expected.to have_content(decorate_dossier.last_update) }
|
||||
end
|
Loading…
Add table
Reference in a new issue