diff --git a/.gitignore b/.gitignore index 69a7bbbcf..25c5ca18f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,5 @@ bin/* config/initializers/token.rb doc/*.svg rubocop.html -config/france_connect.yml \ No newline at end of file +config/france_connect.yml +vendor/**/* \ No newline at end of file diff --git a/app/assets/stylesheets/backoffice.scss b/app/assets/stylesheets/backoffice.scss new file mode 100644 index 000000000..0a40b6354 --- /dev/null +++ b/app/assets/stylesheets/backoffice.scss @@ -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; + } + } + } +} \ No newline at end of file diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index f3d98b610..080972a8f 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -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 diff --git a/app/controllers/backoffice_controller.rb b/app/controllers/backoffice_controller.rb index 5096033d4..3a4702095 100644 --- a/app/controllers/backoffice_controller.rb +++ b/app/controllers/backoffice_controller.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/demo_controller.rb b/app/controllers/demo_controller.rb new file mode 100644 index 000000000..6c48fd52f --- /dev/null +++ b/app/controllers/demo_controller.rb @@ -0,0 +1,7 @@ +class DemoController < ApplicationController + + def index + + end + +end diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index a52d1c474..feea68f30 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -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! diff --git a/app/models/dossier.rb b/app/models/dossier.rb index fa68aa36a..576d6f6ad 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -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 diff --git a/app/models/etablissement.rb b/app/models/etablissement.rb index 66c086661..d05b73b0c 100644 --- a/app/models/etablissement.rb +++ b/app/models/etablissement.rb @@ -1,4 +1,6 @@ class Etablissement < ActiveRecord::Base belongs_to :dossier belongs_to :entreprise + + has_many :exercices end diff --git a/app/models/exercice.rb b/app/models/exercice.rb new file mode 100644 index 000000000..82328c8a5 --- /dev/null +++ b/app/models/exercice.rb @@ -0,0 +1,3 @@ +class Exercice < ActiveRecord::Base + belongs_to :etablissement +end diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 6b93b0538..4ff6638cd 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -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 diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml new file mode 100644 index 000000000..a9cbba804 --- /dev/null +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -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 \ No newline at end of file diff --git a/app/views/backoffice/dossiers/a_traiter.html.haml b/app/views/backoffice/dossiers/a_traiter.html.haml new file mode 100644 index 000000000..3b65f1b90 --- /dev/null +++ b/app/views/backoffice/dossiers/a_traiter.html.haml @@ -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 diff --git a/app/views/backoffice/dossiers/en_attente.html.haml b/app/views/backoffice/dossiers/en_attente.html.haml new file mode 100644 index 000000000..bedebc034 --- /dev/null +++ b/app/views/backoffice/dossiers/en_attente.html.haml @@ -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 diff --git a/app/views/backoffice/dossiers/search.html.haml b/app/views/backoffice/dossiers/search.html.haml new file mode 100644 index 000000000..54dd97a58 --- /dev/null +++ b/app/views/backoffice/dossiers/search.html.haml @@ -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 \ No newline at end of file diff --git a/app/views/backoffice/dossiers/termine.html.haml b/app/views/backoffice/dossiers/termine.html.haml new file mode 100644 index 000000000..6e8609da5 --- /dev/null +++ b/app/views/backoffice/dossiers/termine.html.haml @@ -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 diff --git a/app/views/backoffice/index.html.haml b/app/views/backoffice/index.html.haml deleted file mode 100644 index e4b6b343e..000000000 --- a/app/views/backoffice/index.html.haml +++ /dev/null @@ -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 diff --git a/app/views/demo/index.html.haml b/app/views/demo/index.html.haml new file mode 100644 index 000000000..1c3573e43 --- /dev/null +++ b/app/views/demo/index.html.haml @@ -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 \ No newline at end of file diff --git a/app/views/dossiers/_infos_entreprise.html.haml b/app/views/dossiers/_infos_entreprise.html.haml index c60f9477d..fbf729ae9 100644 --- a/app/views/dossiers/_infos_entreprise.html.haml +++ b/app/views/dossiers/_infos_entreprise.html.haml @@ -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 diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 3ade15838..de6f61940 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -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.' diff --git a/config/routes.rb b/config/routes.rb index 3606b8baf..eb2beb06a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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' diff --git a/db/migrate/20151113171605_create_exercice_table.rb b/db/migrate/20151113171605_create_exercice_table.rb new file mode 100644 index 000000000..d5d5c34c7 --- /dev/null +++ b/db/migrate/20151113171605_create_exercice_table.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index ee00a5dc0..24d06b735 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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 diff --git a/lib/siade/api.rb b/lib/siade/api.rb index d96470747..2bb92c15a 100644 --- a/lib/siade/api.rb +++ b/lib/siade/api.rb @@ -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 diff --git a/lib/siade/exercices_adapter.rb b/lib/siade/exercices_adapter.rb new file mode 100644 index 000000000..695e3157f --- /dev/null +++ b/lib/siade/exercices_adapter.rb @@ -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 \ No newline at end of file diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 13a11da66..1075f03cf 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -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! diff --git a/spec/controllers/backoffice_controller_spec.rb b/spec/controllers/backoffice_controller_spec.rb new file mode 100644 index 000000000..5f621a035 --- /dev/null +++ b/spec/controllers/backoffice_controller_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index 87b2f7d75..7259aa68d 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -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) diff --git a/spec/decorators/entreprise_decorator_spec.rb b/spec/decorators/entreprise_decorator_spec.rb index 0b9c08a4a..1d918f8fc 100644 --- a/spec/decorators/entreprise_decorator_spec.rb +++ b/spec/decorators/entreprise_decorator_spec.rb @@ -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 diff --git a/spec/features/backoffice/connection_spec.rb b/spec/features/backoffice/connection_spec.rb index 03fd060e9..84c27ce3e 100644 --- a/spec/features/backoffice/connection_spec.rb +++ b/spec/features/backoffice/connection_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index 542eb5637..0013f43bd 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -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 diff --git a/spec/features/backoffice/onglets_link_spec.rb b/spec/features/backoffice/onglets_link_spec.rb new file mode 100644 index 000000000..ab6e7e70c --- /dev/null +++ b/spec/features/backoffice/onglets_link_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/features/backoffice/search_file_spec.rb b/spec/features/backoffice/search_file_spec.rb new file mode 100644 index 000000000..7466b451f --- /dev/null +++ b/spec/features/backoffice/search_file_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/features/users/complete_demande_spec.rb b/spec/features/users/complete_demande_spec.rb index 194f14c04..941afbbfa 100644 --- a/spec/features/users/complete_demande_spec.rb +++ b/spec/features/users/complete_demande_spec.rb @@ -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 diff --git a/spec/features/users/start_demande_spec.rb b/spec/features/users/start_demande_spec.rb index 62c4a6b88..f8543345f 100644 --- a/spec/features/users/start_demande_spec.rb +++ b/spec/features/users/start_demande_spec.rb @@ -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 diff --git a/spec/lib/siade/api_spec.rb b/spec/lib/siade/api_spec.rb index 2e4f0a791..052117230 100644 --- a/spec/lib/siade/api_spec.rb +++ b/spec/lib/siade/api_spec.rb @@ -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 diff --git a/spec/lib/siade/exercices_adapter_spec.rb b/spec/lib/siade/exercices_adapter_spec.rb new file mode 100644 index 000000000..777a7c7d6 --- /dev/null +++ b/spec/lib/siade/exercices_adapter_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index cf5fd0d19..627e932ce 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -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 diff --git a/spec/models/etablissement_spec.rb b/spec/models/etablissement_spec.rb index 0f8f09e7f..376886794 100644 --- a/spec/models/etablissement_spec.rb +++ b/spec/models/etablissement_spec.rb @@ -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 diff --git a/spec/models/exercice_spec.rb b/spec/models/exercice_spec.rb new file mode 100644 index 000000000..cfd6dc798 --- /dev/null +++ b/spec/models/exercice_spec.rb @@ -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 diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index 2913c3cd3..cee2de33d 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -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 diff --git a/spec/support/files/exercices.json b/spec/support/files/exercices.json new file mode 100644 index 000000000..51b5064d5 --- /dev/null +++ b/spec/support/files/exercices.json @@ -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 + } + ] +} \ No newline at end of file diff --git a/spec/views/backoffice/dossiers/a_traiter_html.haml_spec.rb b/spec/views/backoffice/dossiers/a_traiter_html.haml_spec.rb new file mode 100644 index 000000000..7ad155b24 --- /dev/null +++ b/spec/views/backoffice/dossiers/a_traiter_html.haml_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/views/backoffice/index.html.haml_spec.rb b/spec/views/backoffice/dossiers/en_attente_html.haml_spec.rb similarity index 68% rename from spec/views/backoffice/index.html.haml_spec.rb rename to spec/views/backoffice/dossiers/en_attente_html.haml_spec.rb index 01512ee4a..0e1529fe8 100644 --- a/spec/views/backoffice/index.html.haml_spec.rb +++ b/spec/views/backoffice/dossiers/en_attente_html.haml_spec.rb @@ -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) } diff --git a/spec/views/backoffice/dossiers/termine_html.haml_spec.rb b/spec/views/backoffice/dossiers/termine_html.haml_spec.rb new file mode 100644 index 000000000..60e35151c --- /dev/null +++ b/spec/views/backoffice/dossiers/termine_html.haml_spec.rb @@ -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 \ No newline at end of file