Merge branch 'develop' of ssh://37.187.249.111:2200/opt/git/tps into develop

This commit is contained in:
Tanguy PATTE 2015-09-24 11:17:29 +02:00
commit 40310da378
27 changed files with 679 additions and 164 deletions

View file

@ -375,3 +375,6 @@ DEPENDENCIES
unicorn unicorn
web-console (~> 2.0) web-console (~> 2.0)
webmock webmock
BUNDLED WITH
1.10.4

View file

@ -47,13 +47,7 @@ body {
} }
.description { .description {
border-color: rgba(200, 200, 200, 0.6);
border-style: solid;
border-radius: 5px;
border-width: 1px;
padding: 10px; padding: 10px;
background-color: rgb(245, 245, 245);
margin-top: 10px;
} }
.btn-file { .btn-file {

View file

@ -0,0 +1,9 @@
#infos_dossier{
background-color:rgba(248,248,255,0.8);
padding-left:13%;
padding-right:13%;
padding-bottom:20px;
padding-top:15px;
margin-left:-13%;
margin-right:-13%;
}

View file

@ -3,6 +3,7 @@ class Users::RecapitulatifController < UsersController
@dossier = Dossier.find(params[:dossier_id]) @dossier = Dossier.find(params[:dossier_id])
@dossier = @dossier.decorate @dossier = @dossier.decorate
@procedure = @dossier.procedure
# mettre dans le modele # mettre dans le modele
@commentaires = @dossier.commentaires.order(created_at: :desc) @commentaires = @dossier.commentaires.order(created_at: :desc)

View file

@ -10,4 +10,25 @@ class DossierDecorator < Draper::Decorator
def last_update def last_update
updated_at.localtime.strftime('%d/%m/%Y %H:%M') updated_at.localtime.strftime('%d/%m/%Y %H:%M')
end end
def state_fr
case state
when 'draft'
'Brouillon'
when 'proposed'
'Proposé'
when 'reply'
'Répondu'
when 'updated'
'Mis à jour'
when 'confirmed'
'Validé'
when 'deposited'
'Déposé'
when 'processed'
'Traité'
else
fail 'State not valid'
end
end
end end

View file

@ -1,11 +1,11 @@
class Dossier < ActiveRecord::Base class Dossier < ActiveRecord::Base
enum state: { draft: 'draft', enum state: { draft: 'draft',
submitted: 'submitted', proposed: 'proposed',
reply: 'reply', reply: 'reply',
updated: 'updated', updated: 'updated',
confirmed: 'confirmed', confirmed: 'confirmed',
filed: 'filed', deposited: 'deposited',
processed: 'processed' } processed: 'processed' }
has_one :etablissement has_one :etablissement
has_one :entreprise has_one :entreprise
@ -30,28 +30,81 @@ class Dossier < ActiveRecord::Base
validates :date_previsionnelle, presence: true, allow_blank: false, unless: Proc.new { description.nil? } validates :date_previsionnelle, presence: true, allow_blank: false, unless: Proc.new { description.nil? }
validates :user, presence: true validates :user, presence: true
def retrieve_piece_justificative_by_type(type) def retrieve_piece_justificative_by_type(type)
pieces_justificatives.where(type_de_piece_justificative_id: type).last pieces_justificatives.where(type_de_piece_justificative_id: type).last
end end
def build_default_pieces_justificatives def build_default_pieces_justificatives
procedure.types_de_piece_justificative.each do |type_de_piece_justificative| procedure.types_de_piece_justificative.each do |type_de_piece_justificative|
PieceJustificative.create(type_de_piece_justificative_id: type_de_piece_justificative.id, dossier_id: id) PieceJustificative.create(type_de_piece_justificative_id: type_de_piece_justificative.id, dossier_id: id)
end end
end end
def sous_domaine def sous_domaine
if Rails.env.production? if Rails.env.production?
'tps' 'tps'
else else
'tps-dev' 'tps-dev'
end end
end end
private def next_step! role, action
unless ['propose', 'reply', 'update', 'comment', 'confirme', 'depose', 'process'].include?(action)
fail 'action is not valid'
end
def build_default_cerfa unless ['user', 'gestionnaire'].include?(role)
build_cerfa fail 'role is not valid'
true end
end
if role == 'user'
case action
when 'propose'
if draft?
proposed!
end
when 'depose'
if confirmed?
deposited!
end
when 'update'
if reply?
updated!
end
when 'comment'
if reply?
updated!
end
end
elsif role == 'gestionnaire'
case action
when 'comment'
if updated?
reply!
elsif proposed?
reply!
end
when 'confirme'
if updated?
confirmed!
elsif reply?
confirmed!
elsif proposed?
confirmed!
end
when 'process'
if deposited?
processed!
end
end
end
state
end
private
def build_default_cerfa
build_cerfa
true
end
end end

View file

@ -13,35 +13,7 @@
%br %br
.content.row .content.row
#map_qp.col-lg-6.col-md-6{style: 'height:500px'} =render partial: '/dossiers/pieces_justificatives'
#pieces_justificatives.col-lg-6.col-md-6
%h3.text-info Liste des pièces justificatives
%br
%table.table
-if @procedure.lien_demarche != nil
%tr{id: "piece_justificative_0"}
%th{class:'col-lg-6'}
='CERFA'
%td.col-lg-4.col-md-4
- if !@dossier.cerfa.empty?
%a{ href: "#{@dossier.cerfa.content}", target: '_blank' } Consulter
- else
= 'Pièce non fournie'
- @dossier.pieces_justificatives.each do |piece_justificative|
%tr{ id: "piece_justificative_#{piece_justificative.type}" }
%th.col-lg-6
= piece_justificative.libelle
%td.col-lg-4.col-md-4
- if piece_justificative.api_entreprise
%a{ href: '' } Récupérer
- elsif !piece_justificative.empty?
%a{ href: "#{piece_justificative.content}", target: '_blank' } Consulter
- else
= 'Pièce non fournie'
= render partial: '/carte/carte_sources_CSS'
= render partial: '/carte/carte_sources_JS_backend'
%br %br
= render partial: '/users/recapitulatif/commentaires_flux' = render partial: '/users/recapitulatif/commentaires_flux'

View file

@ -1,9 +1,30 @@
= javascript_include_tag "https://code.highcharts.com/highcharts.js", "chartkick" = javascript_include_tag "https://code.highcharts.com/highcharts.js", "chartkick"
.row#infos_dossier
.col-md-6 #infos_dossier
%h4.text-info %div.row
= @dossier.nom_projet .col-lg-6.col-md-6
%div %h3.text-info
= @dossier.nom_projet
%br
%div.row
.col-lg-6.col-md-6
%h4 Montant total
%p{style:'margin-left:5%'}
=number_to_currency(@dossier.montant_projet.to_f, :unit => " ", :separator => ",", :delimiter => " ")
!='&euro;'
.col-lg-6.col-md-6
%h4 Début du projet souhaité
%p{style:'margin-left:5%'}
= @dossier.date_fr
%div.row
.col-lg-6.col-md-6
%h4 Montant souhaité
%p{style:'margin-left:5%'}
=number_to_currency(@dossier.montant_aide_demande.to_f, :unit => " ", :separator => ",", :delimiter => " ")
!='&euro;'
%br
.description .description
- begin - begin
- @dossier.description.split(/(?:\n\r?|\r\n?')/).each do |line| - @dossier.description.split(/(?:\n\r?|\r\n?')/).each do |line|
@ -11,28 +32,11 @@
%br %br
- rescue - rescue
='' =''
%br
.col-lg-6.col-md-6
%h4 Montant total
%p .col-lg-6.col-md-6
=number_to_currency(@dossier.montant_projet.to_f, :unit => " ", :separator => ",", :delimiter => " ") =render partial: '/dossiers/pieces_justificatives'
!='&euro;' -#= pie_chart({"Montant à charge #{(100 - @dossier.montant_aide_demande.to_f/@dossier.montant_projet.to_f*100).round(2)}%" => (@dossier.montant_projet.to_f - @dossier.montant_aide_demande.to_f), "Montant souhaité #{(@dossier.montant_aide_demande.to_f/@dossier.montant_projet.to_f*100).round(2)}%" => @dossier.montant_aide_demande})
.col-lg-6.col-md-6
%h4 Début du projet souhaité
%p
= @dossier.date_fr
/ -if !request.url.include?('admin')
- unless gestionnaire_signed_in?
.col-lg-6.col-md-6
%br
%br
%a#modif_description{href: "/dossiers/#{@dossier.id}/description?back_url=recapitulatif"} Modifier la description
.col-md-6
= pie_chart({"Montant à charge #{(100 - @dossier.montant_aide_demande.to_f/@dossier.montant_projet.to_f*100).round(2)}%" => (@dossier.montant_projet.to_f - @dossier.montant_aide_demande.to_f), "Montant souhaité #{(@dossier.montant_aide_demande.to_f/@dossier.montant_projet.to_f*100).round(2)}%" => @dossier.montant_aide_demande})
%div.row{style: 'text-align:right'}
%a#maj_infos.btn.btn-info{href: "/dossiers/#{@dossier.id}/description?back_url=recapitulatif"}
= 'Editer mon dossier'

View file

@ -0,0 +1,30 @@
#pieces_justificatives
%h3.text-info Liste des pièces justificatives
%br
%table.table
-if @procedure.lien_demarche != nil
%tr{id: "piece_justificative_0"}
%th{class:'col-lg-6'}
='CERFA'
-if @procedure.lien_demarche != nil
%a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Lien CERFA
%td.col-lg-6.col-md-6
- if !@dossier.cerfa.empty?
- if user_signed_in?
= 'Pièce fournie'
- elsif gestionnaire_signed_in?
%a{ href: "#{@dossier.cerfa.content}", target: '_blank' } Consulter
- else
= 'Pièce non fournie'
- @dossier.pieces_justificatives.each do |piece_justificative|
%tr{ id: "piece_justificative_#{piece_justificative.type}" }
%th.col-lg-6
= piece_justificative.libelle
%td.col-lg-6.col-md-6
- if piece_justificative.api_entreprise
%span.text-success Nous l'avons récupéré pour vous.
- elsif !piece_justificative.empty?
%a{ href: "#{piece_justificative.content}", target: '_blank' } Consulter
- else
= 'Pièce non fournie'

View file

@ -1,24 +1,18 @@
.content#commentaires_flux .content#commentaires_flux{style:'width:100%;'}
%h3 Commentaires %div#commentaire_new{style: 'width:80%; margin-left:auto; margin-right:auto'}
%div{style: 'margin-left:3%; width:80%'}
-@commentaires.each do |com|
%span.text-info#email_contact{style: 'font-weight:bold'}
=com.email
%span#created_at
\-
=com.created_at_fr
%br
.description#body
=com.body
%br
%h4{style: 'margin-bottom:2%'} Nouveau
= form_tag(url_for({ controller: :commentaires, action: :create, dossier_id: @dossier.id }), class: 'form-inline', method: 'POST') do = form_tag(url_for({ controller: :commentaires, action: :create, dossier_id: @dossier.id }), class: 'form-inline', method: 'POST') do
%input.form-control{:type => 'text', style: 'width: 30%; margin-bottom:2%', :id => 'email_commentaire', :name => 'email_commentaire', :value => @commentaire_email} %textarea.form-control{id: 'texte_commentaire', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', maxlength: '255', placeholder:"Dialoguer avec votre interlocuteur privilégié en charge de votre dossier."}
%textarea.form-control{:id => 'texte_commentaire', :name => 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', maxlength: '255'} %input.form-control.btn.btn-primary{:type => 'submit', :value => 'Poster', style: 'float:right'}
%br %br
%input.form-control.btn.btn-success{:type => 'submit', :value => 'Poster', style: 'float:right'} %br
%br
%br -@commentaires.each do |com|
%br %span.text-info#email_contact{style: 'font-weight:bold'}
=com.email
%span#created_at
\-
=com.created_at_fr
%br
.description#body
=com.body
%br

View file

@ -1,23 +1,25 @@
%h2#recap_dossier Récapitulatif %div.row#recap_dossier
%div.col-md-2.col-lg-2
%h2
='Récapitulatif'
%div.col-md-8.col-lg-8
%div.col-md-2.col-lg-2
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'}
= "Dossier n°#{@dossier.id}"
-#%h3{:class => 'text-success', :style => 'text-align:right'}
-# = @dossier.state_fr
- unless gestionnaire_signed_in?
%button#action_button.btn.btn-success
= 'Soumettre mon dossier'
%div{style: 'text-align:center'} %div{style: 'text-align:center'}
-if request.referer != nil -if (request.referer != nil) && (request.referer.include?'/description') && !(request.referer.include?'back_url=recapitulatif')
-if (request.referer.include?'/description') && !(request.referer.include?'back_url=recapitulatif') %h3.text-success Félicitation, votre demande a bien été enregistrée.
%h4.text-success Félicitation, votre demande a bien été enregistrée.
%h3{style: 'text-align:center; line-height:1.5em'} %br
='Votre dossier est le '
%br
%span{id: 'dossier_id', style: 'font-weight:bold;', class: 'text-success'}
="n°#{@dossier.id}"
-else
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right'}
= "Dossier n°#{@dossier.id}"
-else
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right'}
= "Dossier n°#{@dossier.id}"
= render partial: '/dossiers/infos_dossier' = render partial: '/dossiers/infos_dossier'
%br %br
= render partial: 'commentaires_flux' = render partial: 'commentaires_flux'

View file

@ -0,0 +1,29 @@
<<<<<<< HEAD:app/views/recapitulatif/show.html.haml
%div.row
%div.col-md-2.col-lg-2
%h2
='Récapitulatif'
=======
%h2#recap_dossier Récapitulatif
>>>>>>> 6eeac88c95dce079195f596e05a7e652fd9720c9:app/views/users/recapitulatif/show.html.haml
%div.col-md-8.col-lg-8
%div.col-md-2.col-lg-2
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'}
= "Dossier n°#{@dossier.id}"
-#%h3{:class => 'text-success', :style => 'text-align:right'}
-# = @dossier.state_fr
- unless gestionnaire_signed_in?
%button#action_button.btn.btn-success
= 'Soumettre mon dossier'
%div{style: 'text-align:center'}
-if (request.referer != nil) && (request.referer.include?'/description') && !(request.referer.include?'back_url=recapitulatif')
%h3.text-success Félicitation, votre demande a bien été enregistrée.
%br
= render partial: '/dossiers/infos_dossier'
%br
= render partial: 'commentaires_flux'

View file

@ -0,0 +1,24 @@
%h2
='Récapitulatif'
%div{style: 'text-align:center'}
-if request.referer != nil
-if (request.referer.include?'/description') && !(request.referer.include?'back_url=recapitulatif')
%h4.text-success Félicitation, votre demande a bien été enregistrée.
%h3{style: 'text-align:center; line-height:1.5em'}
='Votre dossier est le '
%br
%span{id: 'dossier_id', style: 'font-weight:bold;', class: 'text-success'}
="n°#{@dossier.id}"
-else
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right'}
= "Dossier n°#{@dossier.id}"
-else
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right'}
= "Dossier n°#{@dossier.id}"
= render partial: '/dossiers/infos_dossier'
%br
= render partial: 'commentaires_flux'

View file

@ -0,0 +1,25 @@
%div.row
%div.col-md-2.col-lg-2
%h2
='Récapitulatif'
%div.col-md-8.col-lg-8
%div.col-md-2.col-lg-2
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'}
= "Dossier n°#{@dossier.id}"
-#%h3{:class => 'text-success', :style => 'text-align:right'}
-# = @dossier.state_fr
- unless gestionnaire_signed_in?
%button#action_button.btn.btn-success
= 'Soumettre mon dossier'
%div{style: 'text-align:center'}
-if (request.referer != nil) && (request.referer.include?'/description') && !(request.referer.include?'back_url=recapitulatif')
%h3.text-success Félicitation, votre demande a bien été enregistrée.
%br
= render partial: '/dossiers/infos_dossier'
%br
= render partial: 'commentaires_flux'

View file

@ -0,0 +1,23 @@
%h2#recap_dossier Récapitulatif
%div{style: 'text-align:center'}
-if request.referer != nil
-if (request.referer.include?'/description') && !(request.referer.include?'back_url=recapitulatif')
%h4.text-success Félicitation, votre demande a bien été enregistrée.
%h3{style: 'text-align:center; line-height:1.5em'}
='Votre dossier est le '
%br
%span{id: 'dossier_id', style: 'font-weight:bold;', class: 'text-success'}
="n°#{@dossier.id}"
-else
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right'}
= "Dossier n°#{@dossier.id}"
-else
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right'}
= "Dossier n°#{@dossier.id}"
= render partial: '/dossiers/infos_dossier'
%br
= render partial: 'commentaires_flux'

View file

@ -44,8 +44,8 @@ ActiveRecord::Schema.define(version: 20150923101000) do
t.string "montant_aide_demande" t.string "montant_aide_demande"
t.integer "procedure_id" t.integer "procedure_id"
t.date "date_previsionnelle" t.date "date_previsionnelle"
t.datetime "created_at", default: '2015-09-22 09:25:29' t.datetime "created_at"
t.datetime "updated_at", default: '2015-09-22 09:25:29' t.datetime "updated_at"
t.string "state" t.string "state"
t.integer "user_id" t.integer "user_id"
end end
@ -110,7 +110,7 @@ ActiveRecord::Schema.define(version: 20150923101000) do
t.integer "type_de_piece_justificative_id" t.integer "type_de_piece_justificative_id"
end end
add_index "pieces_justificatives", ["type_de_piece_justificative_id"], name: "index_pieces_justificatives_on_type_de_piece_justificative_id", using: :btree add_index "pieces_justificatives", ["type_de_piece_justificative_id"], name: "index_pieces_justificatives_on_type_piece_jointe_id", using: :btree
create_table "procedures", force: :cascade do |t| create_table "procedures", force: :cascade do |t|
t.string "libelle" t.string "libelle"

View file

@ -3,8 +3,48 @@ require 'spec_helper'
describe DossierDecorator do describe DossierDecorator do
let(:dossier) { create(:dossier, :with_user) } let(:dossier) { create(:dossier, :with_user) }
subject { dossier.decorate } subject { dossier.decorate }
describe 'last_update' do describe 'last_update' do
subject { Timecop.freeze(Time.new(2015, 12, 24, 14, 10)) { super().last_update } } subject { Timecop.freeze(Time.new(2015, 12, 24, 14, 10)) { super().last_update } }
it { is_expected.to eq('24/12/2015 14:10') } it { is_expected.to eq('24/12/2015 14:10') }
end end
describe 'state_fr' do
subject{ super().state_fr }
it 'draft is brouillon' do
dossier.draft!
expect(subject).to eq('Brouillon')
end
it 'proposed is propose' do
dossier.proposed!
expect(subject).to eq('Proposé')
end
it 'reply is repondu' do
dossier.reply!
expect(subject).to eq('Répondu')
end
it 'updated is mis à jour' do
dossier.updated!
expect(subject).to eq('Mis à jour')
end
it 'confirmed is valide' do
dossier.confirmed!
expect(subject).to eq('Validé')
end
it 'deposited is dépose' do
dossier.deposited!
expect(subject).to eq('Déposé')
end
it 'processed is traité' do
dossier.processed!
expect(subject).to eq('Traité')
end
end
end end

View file

@ -1,6 +1,7 @@
FactoryGirl.define do FactoryGirl.define do
factory :dossier do factory :dossier do
nom_projet "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger" nom_projet "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger"
state 'draft'
trait :with_entreprise do trait :with_entreprise do
after(:build) do |dossier, _evaluator| after(:build) do |dossier, _evaluator|
etablissement = create(:etablissement) etablissement = create(:etablissement)

View file

@ -36,13 +36,5 @@ feature 'add commentaire on backoffice' do
scenario 'Champs de texte' do scenario 'Champs de texte' do
expect(page).to have_selector('textarea[id=texte_commentaire][name=texte_commentaire]') expect(page).to have_selector('textarea[id=texte_commentaire][name=texte_commentaire]')
end end
scenario 'Champs email' do
expect(page).to have_selector('input[id=email_commentaire][name=email_commentaire]')
end
scenario 'Champs email est prérempli' do
expect(page).to have_selector("input[id=email_commentaire][value='#{gestionnaire.email}']")
end
end end
end end

View file

@ -82,17 +82,17 @@ feature 'Admin/Dossier#Show Page' do
# end # end
# end # end
# end # end
#
scenario 'la carte est bien présente' do # scenario 'la carte est bien présente' do
expect(page).to have_selector('#map_qp') # expect(page).to have_selector('#map_qp')
end # end
#
scenario 'la page des sources CSS de l\'API cart est chargée' do # scenario 'la page des sources CSS de l\'API cart est chargée' do
expect(page).to have_selector('#sources_CSS_api_carto') # expect(page).to have_selector('#sources_CSS_api_carto')
end # end
#
scenario 'la page des sources JS backend de l\'API cart est chargée' do # scenario 'la page des sources JS backend de l\'API cart est chargée' do
expect(page).to have_selector('#sources_JS_api_carto_backend') # expect(page).to have_selector('#sources_JS_api_carto_backend')
end # end
end end
end end

View file

@ -1,7 +1,7 @@
require 'spec_helper' require 'spec_helper'
feature '_Commentaires_Flux Recapitulatif#Show Page' do feature '_Commentaires_Flux Recapitulatif#Show Page' do
let(:dossier) { create(:dossier, :with_user) } let(:dossier) { create(:dossier, :with_user, :with_procedure) }
let(:dossier_id) { dossier.id } let(:dossier_id) { dossier.id }
let(:email_commentaire) { 'mon_mail_de_commentaire@test.com' } let(:email_commentaire) { 'mon_mail_de_commentaire@test.com' }
let!(:commentaire) { create(:commentaire, dossier: dossier, email: email_commentaire, body: 'ma super description') } let!(:commentaire) { create(:commentaire, dossier: dossier, email: email_commentaire, body: 'ma super description') }
@ -34,13 +34,5 @@ feature '_Commentaires_Flux Recapitulatif#Show Page' do
scenario 'Champs de texte' do scenario 'Champs de texte' do
expect(page).to have_selector('textarea[id=texte_commentaire][name=texte_commentaire]') expect(page).to have_selector('textarea[id=texte_commentaire][name=texte_commentaire]')
end end
scenario 'Champs email' do
expect(page).to have_selector('input[id=email_commentaire][name=email_commentaire]')
end
scenario 'Champs email est prérempli' do
expect(page).to have_content(email_commentaire)
end
end end
end end

View file

@ -1,7 +1,7 @@
require 'spec_helper' require 'spec_helper'
feature 'Recapitulatif#Show Page' do feature 'Recapitulatif#Show Page' do
let(:dossier) { create(:dossier, :with_user) } let(:dossier) { create(:dossier, :with_user, :with_procedure) }
let(:dossier_id) { dossier.id } let(:dossier_id) { dossier.id }
before do before do
@ -27,11 +27,11 @@ feature 'Recapitulatif#Show Page' do
context 'les liens de modifications' do context 'les liens de modifications' do
context 'lien description' do context 'lien description' do
scenario 'le lien vers description est présent' do scenario 'le lien vers description est présent' do
expect(page).to have_css('#modif_description') expect(page).to have_css('#maj_infos')
end end
scenario 'le lien vers description est correct' do scenario 'le lien vers description est correct' do
expect(page).to have_selector("a[id=modif_description][href='/dossiers/#{dossier_id}/description?back_url=recapitulatif']") expect(page).to have_selector("a[id=maj_infos][href='/dossiers/#{dossier_id}/description?back_url=recapitulatif']")
end end
end end
end end

View file

@ -117,5 +117,258 @@ describe Dossier do
end end
end end
end end
#TODO revoir le nommage
describe '#next_step' do
let(:dossier) { create(:dossier) }
let(:role) { 'user' }
let(:action) { 'propose' }
subject { dossier.next_step! role, action }
context 'when action is not valid' do
let(:action) { 'test' }
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') }
end
context 'when dossier is at state draft' do
before do
dossier.draft!
end
context 'when user is connected' do
let(:role) { 'user' }
context 'when he updates dossier informations' do
let(:action) {'update'}
it { is_expected.to eq('draft') }
end
context 'when he posts a comment' do
let(:action) {'comment'}
it { is_expected.to eq('draft') }
end
context 'when he proposes a dossier' do
let(:action) { 'propose' }
it { is_expected.to eq('proposed') }
end
end
end
context 'when dossier is at state proposed' do
before do
dossier.proposed!
end
context 'when user is connect' do
let(:role) { 'user' }
context 'when is update dossier informations' do
let(:action) { 'update' }
it {is_expected.to eq('proposed')}
end
context 'when is post a comment' do
let(:action) { 'comment' }
it {is_expected.to eq('proposed')}
end
end
context 'when gestionnaire is connect' do
let(:role) { 'gestionnaire' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('reply')}
end
context 'when is confirmed the dossier' do
let(:action) { 'confirme' }
it {is_expected.to eq('confirmed')}
end
end
end
context 'when dossier is at state reply' do
before do
dossier.reply!
end
context 'when user is connect' do
let(:role) { 'user' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('updated') }
end
context 'when is updated dossier informations' do
let(:action) { 'update' }
it {
is_expected.to eq('updated')
}
end
end
context 'when gestionnaire is connect' do
let(:role) { 'gestionnaire' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('reply')}
end
context 'when is confirmed the dossier' do
let(:action) { 'confirme' }
it {is_expected.to eq('confirmed')}
end
end
end
context 'when dossier is at state updated' do
before do
dossier.updated!
end
context 'when user is connect' do
let(:role) { 'user' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('updated')}
end
context 'when is updated dossier informations' do
let(:action) { 'update' }
it { is_expected.to eq('updated')}
end
end
context 'when gestionnaire is connect' do
let(:role) { 'gestionnaire' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('reply')}
end
context 'when is confirmed the dossier' do
let(:action) { 'confirme' }
it {is_expected.to eq('confirmed')}
end
end
end
context 'when dossier is at state confirmed' do
before do
dossier.confirmed!
end
context 'when user is connect' do
let(:role) { 'user' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('confirmed') }
end
context 'when is deposed the dossier' do
let(:action) { 'depose' }
it { is_expected.to eq('deposited') }
end
end
context 'when gestionnaire is connect' do
let(:role) { 'gestionnaire' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('confirmed')}
end
end
end
context 'when dossier is at state deposited' do
before do
dossier.deposited!
end
context 'when user is connect' do
let(:role) { 'user' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('deposited') }
end
end
context 'when gestionnaire is connect' do
let(:role) { 'gestionnaire' }
context 'when is post a comment' do
let(:action) { 'comment' }
it {is_expected.to eq('deposited')}
end
context 'when is processed the dossier' do
let(:action) { 'process' }
it {is_expected.to eq('processed')}
end
end
end
context 'when dossier is at state processed' do
before do
dossier.processed!
end
context 'when user is connect' do
let(:role) { 'user' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('processed')}
end
end
context 'when gestionnaire is connect' do
let(:role) { 'gestionnaire' }
context 'when is post a comment' do
let(:action) { 'comment' }
it { is_expected.to eq('processed')}
end
end
end
end
end end
end end

View file

@ -65,6 +65,7 @@ RSpec.configure do |config|
config.order = 'random' config.order = 'random'
config.include Devise::TestHelpers, type: :view
config.include Devise::TestHelpers, type: :controller config.include Devise::TestHelpers, type: :controller
config.include FactoryGirl::Syntax::Methods config.include FactoryGirl::Syntax::Methods

View file

@ -1 +1,14 @@
# TODO à écrire require 'spec_helper'
describe 'dossiers/_infos_dossier.html.haml', type: :view do
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure) }
let(:maj_infos) { 'Mettre à jour les informations' }
let(:proposer) { 'Soumettre mon dossier' }
before do
assign(:dossier, dossier.decorate)
assign(:commentaires, dossier.commentaires)
render
end
end

View file

@ -0,0 +1,39 @@
require 'spec_helper'
describe 'users/recapitulatif/_commentaires_flux.html.haml', type: :view do
let(:dossier) { create(:dossier, :with_procedure) }
let(:dossier_id) { dossier.id }
let(:email_commentaire) { 'mon_mail_de_commentaire@test.com' }
let!(:commentaire) { create(:commentaire, dossier: dossier, email: email_commentaire, body: 'ma super description') }
let(:body) { 'Commentaire de test' }
before do
assign(:dossier, dossier.decorate)
assign(:commentaires, dossier.commentaires.all.decorate)
render
end
context 'Affichage du flux de commentaire' do
it 'l\'email du contact est présent' do
expect(rendered).to have_selector('span[id=email_contact]')
end
it 'la date du commentaire est présent' do
expect(rendered).to have_selector('span[id=created_at]')
end
it 'le corps du commentaire est présent' do
expect(rendered).to have_selector('div[class=description][id=body]')
end
end
context 'Affichage du formulaire de commentaire' do
it 'Le formulaire envoie vers /dossiers/:dossier_id/commentaire en #POST' do
expect(rendered).to have_selector("form[action='/users/dossiers/#{dossier_id}/commentaire'][method=post]")
end
it 'Champs de texte' do
expect(rendered).to have_selector('textarea[id=texte_commentaire][name=texte_commentaire]')
end
end
end