add database cleaner

add factory girl
fix tests
rename dossier_pdf into piece_jointe
rename ref_piece_jointe into content
This commit is contained in:
Tanguy PATTE 2015-08-13 15:55:19 +02:00
parent c16d7a12f2
commit 3c57643f76
48 changed files with 338 additions and 174 deletions

4
.gitignore vendored
View file

@ -23,4 +23,6 @@
*.iml *.iml
*.iws *.iws
public/uploads public/uploads
bin/*
config/initializers/token.rb

View file

@ -332,6 +332,3 @@ DEPENDENCIES
uglifier (>= 1.3.0) uglifier (>= 1.3.0)
web-console (~> 2.0) web-console (~> 2.0)
webmock webmock
BUNDLED WITH
1.10.4

View file

@ -5,17 +5,16 @@ class Admin::DossierController < ApplicationController
@dossier = Dossier.find(params[:dossier_id]) @dossier = Dossier.find(params[:dossier_id])
@entreprise = @dossier.entreprise.decorate @entreprise = @dossier.entreprise.decorate
@etablissement = @dossier.etablissement @etablissement = @dossier.etablissement
@dossier_pdf = @dossier.dossier_pdf @pieces_jointes = @dossier.pieces_jointes
@commentaires = @dossier.commentaires.order(created_at: :desc) @commentaires = @dossier.commentaires.order(created_at: :desc)
@commentaires = @commentaires.all.decorate @commentaires = @commentaires.all.decorate
@commentaire_email = current_user.email @commentaire_email = current_user.email
@formulaire = RefFormulaire.find(@dossier.ref_formulaire) @formulaire = @dossier.ref_formulaire
@liste_pieces_jointes = RefPiecesJointe.get_liste_piece_jointe @dossier.ref_formulaire @liste_pieces_jointes = RefPiecesJointe.get_liste_piece_jointe @dossier.ref_formulaire
@array_id_pj_valides = DossierPdf.get_array_id_pj_valid_for_dossier @dossier.id @array_id_pj_valides = PieceJointe.get_array_id_pj_valid_for_dossier @dossier.id
@dossier = @dossier.decorate @dossier = @dossier.decorate
rescue rescue ActiveRecord::RecordNotFound
redirect_start redirect_start
end end

View file

@ -6,7 +6,7 @@ class DemandesController < ApplicationController
def choice def choice
@dossier = Dossier.find(params[:dossier_id]) @dossier = Dossier.find(params[:dossier_id])
@dossier.update_attributes(ref_formulaire: params[:ref_formulaire]) @dossier.update_attributes(ref_formulaire_id: params[:ref_formulaire])
redirect_to url_for( { controller: :carte, action: :show, :dossier_id => params[:dossier_id] } ) redirect_to url_for( { controller: :carte, action: :show, :dossier_id => params[:dossier_id] } )
end end

View file

@ -3,7 +3,7 @@ class DescriptionController < ApplicationController
@dossier = Dossier.find(params[:dossier_id]) @dossier = Dossier.find(params[:dossier_id])
@dossier = @dossier.decorate @dossier = @dossier.decorate
@array_id_pj_valides = DossierPdf.get_array_id_pj_valid_for_dossier @dossier.id @array_id_pj_valides = PieceJointe.get_array_id_pj_valid_for_dossier @dossier.id
@liste_pieces_jointes = get_liste_piece_jointe @liste_pieces_jointes = get_liste_piece_jointe
rescue rescue
@ -21,23 +21,23 @@ class DescriptionController < ApplicationController
@dossier.update_attributes(create_params) @dossier.update_attributes(create_params)
if params[:cerfa_pdf] != nil if params[:cerfa_pdf] != nil
DossierPdf.destroy_all(dossier_id: @dossier.id, ref_pieces_jointes_id: 0) PieceJointe.destroy_all(dossier_id: @dossier.id, ref_pieces_jointes_id: 0)
@dossier_pdf = DossierPdf.new @piece_jointe = PieceJointe.new
@dossier_pdf.ref_dossier_pdf = params[:cerfa_pdf] @piece_jointe.content = params[:cerfa_pdf]
@dossier_pdf.ref_pieces_jointes_id = 0 @piece_jointe.ref_pieces_jointes_id = 0
@dossier_pdf.dossier = @dossier @piece_jointe.dossier = @dossier
@dossier_pdf.save @piece_jointe.save
end end
get_liste_piece_jointe.each do |pj| get_liste_piece_jointe.each do |pj|
if params["piece_jointe_#{pj.id}"] != nil if params["piece_jointe_#{pj.id}"] != nil
DossierPdf.destroy_all(dossier_id: @dossier.id, ref_pieces_jointes_id: pj.id) PieceJointe.destroy_all(dossier_id: @dossier.id, ref_pieces_jointes_id: pj.id)
@dossier_pdf = DossierPdf.new @piece_jointe = PieceJointe.new
@dossier_pdf.ref_dossier_pdf = params["piece_jointe_#{pj.id}"] @piece_jointe.content = params["piece_jointe_#{pj.id}"]
@dossier_pdf.ref_pieces_jointes_id = pj.id @piece_jointe.ref_pieces_jointes_id = pj.id
@dossier_pdf.dossier = @dossier @piece_jointe.dossier = @dossier
@dossier_pdf.save @piece_jointe.save
end end
end end
@ -73,7 +73,7 @@ class DescriptionController < ApplicationController
end end
def get_liste_piece_jointe def get_liste_piece_jointe
@formulaire = RefFormulaire.find(@dossier.ref_formulaire) @formulaire = @dossier.ref_formulaire
RefPiecesJointe.where ("\"CERFA\" = '#{@formulaire.ref_demarche}'") RefPiecesJointe.where ("\"CERFA\" = '#{@formulaire.ref_demarche}'")
end end
end end

View file

@ -4,7 +4,7 @@ class DossiersController < ApplicationController
@etablissement = @dossier.etablissement @etablissement = @dossier.etablissement
@entreprise = @dossier.entreprise.decorate @entreprise = @dossier.entreprise.decorate
rescue rescue ActiveRecord::RecordNotFound
redirect_to url_for({controller: :start, action: :error_dossier}) redirect_to url_for({controller: :start, action: :error_dossier})
end end
@ -39,14 +39,16 @@ class DossiersController < ApplicationController
redirect_to url_for({controller: :dossiers, action: :show, id: @dossier.id}) redirect_to url_for({controller: :dossiers, action: :show, id: @dossier.id})
end end
# TODO: Remove rescue
rescue rescue
redirect_to url_for({controller: :start, action: @rescue_redirect}) redirect_to url_for({controller: :start, action: @rescue_redirect})
end end
def update def update
@dossier = Dossier.find(params[:id]) @dossier = Dossier.find(params[:id])
@dossier.autorisation_donnees = (params[:autorisation_donnees] == 'on') return error if update_params[:autorisation_donnees] == '0'
@dossier.save @dossier.update_attributes(update_params)
if @dossier.autorisation_donnees if @dossier.autorisation_donnees
redirect_to url_for({controller: :demandes, action: :show, dossier_id: @dossier.id}) redirect_to url_for({controller: :demandes, action: :show, dossier_id: @dossier.id})
@ -66,6 +68,10 @@ class DossiersController < ApplicationController
private private
def update_params
params.require(:dossier).permit(:autorisation_donnees)
end
def dossier_id_is_present? def dossier_id_is_present?
end end

View file

@ -5,9 +5,12 @@ class RecapitulatifController < ApplicationController
#mettre dans le modèle #mettre dans le modèle
@commentaires = @dossier.commentaires.order(created_at: :desc) @commentaires = @dossier.commentaires.order(created_at: :desc)
@commentaires = @commentaires.all.decorate @commentaires = @commentaires.all.decorate
@commentaire_email = @dossier.mail_contact @commentaire_email = @dossier.mail_contact
rescue rescue => e
redirect_to url_for({controller: :start, action: :error_dossier}) redirect_to url_for({controller: :start, action: :error_dossier})
end end
end end

View file

@ -1,10 +1,14 @@
class Dossier < ActiveRecord::Base class Dossier < ActiveRecord::Base
has_one :etablissement has_one :etablissement
has_one :entreprise has_one :entreprise
has_many :dossier_pdf has_many :pieces_jointes
belongs_to :ref_formulaire
has_many :commentaires has_many :commentaires
delegate :siren, to: :entreprise
delegate :siret, to: :etablissement
def get_pj piece_jointe_id def get_pj piece_jointe_id
dossier_pdf.where(ref_pieces_jointes_id: piece_jointe_id).last pieces_jointes.where(ref_pieces_jointes_id: piece_jointe_id).last
end end
end end

View file

@ -1,15 +0,0 @@
class DossierPdf < ActiveRecord::Base
belongs_to :dossier
mount_uploader :ref_dossier_pdf, DossierPdfUploader
def self.get_array_id_pj_valid_for_dossier dossier_id
@array_id_pj_valides = Array.new
DossierPdf.where(dossier_id: dossier_id).each do |pj_valide|
@array_id_pj_valides << pj_valide.ref_pieces_jointes_id
end
@array_id_pj_valides
end
end

View file

@ -0,0 +1,14 @@
class PieceJointe < ActiveRecord::Base
belongs_to :dossier
mount_uploader :content, PieceJointeUploader
def self.get_array_id_pj_valid_for_dossier(dossier_id)
@array_id_pj_valides = []
where(dossier_id: dossier_id).each do |pj_valide|
@array_id_pj_valides << pj_valide.ref_pieces_jointes_id
end
@array_id_pj_valides
end
end

View file

@ -1,8 +1,8 @@
class RefPiecesJointe < ActiveRecord::Base class RefPiecesJointe < ActiveRecord::Base
# TODO: test this methods
def self.get_liste_piece_jointe ref_formulaire def self.get_liste_piece_jointe ref_formulaire
@formulaire = RefFormulaire.find(ref_formulaire) RefPiecesJointe.where ("\"CERFA\" = '#{ref_formulaire.ref_demarche}'")
RefPiecesJointe.where ("\"CERFA\" = '#{@formulaire.ref_demarche}'")
end end
end end

View file

@ -1,6 +1,6 @@
# encoding: utf-8 # encoding: utf-8
class DossierPdfUploader < CarrierWave::Uploader::Base class PieceJointeUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support: # Include RMagick or MiniMagick support:
# include CarrierWave::RMagick # include CarrierWave::RMagick

View file

@ -23,7 +23,7 @@
='CERFA' ='CERFA'
%td.col-lg-4.col-md-4 %td.col-lg-4.col-md-4
- if @array_id_pj_valides.include?(0) - if @array_id_pj_valides.include?(0)
%a{ href: "#{@dossier.get_pj(0).ref_dossier_pdf}", target: '_blank' } Consulter %a{ href: "#{@dossier.get_pj(0).content}", target: '_blank' } Consulter
- else - else
= 'Pièce non fournie' = 'Pièce non fournie'
@ -35,7 +35,7 @@
- if pj.api_entreprise - if pj.api_entreprise
%a{ href: '' } Récupérer %a{ href: '' } Récupérer
- elsif @array_id_pj_valides.include?(pj.id) - elsif @array_id_pj_valides.include?(pj.id)
%a{ href: "#{@dossier.get_pj(pj.id).ref_dossier_pdf}", target: '_blank' } Consulter %a{ href: "#{@dossier.get_pj(pj.id).content}", target: '_blank' } Consulter
- else - else
= 'Pièce non fournie' = 'Pièce non fournie'

View file

@ -4,12 +4,19 @@
%div{class:'row', style:'margin-left:5%'} %div{class:'row', style:'margin-left:5%'}
= render partial: 'infos_entreprise' = render partial: 'infos_entreprise'
= form_tag(url_for({controller: :dossiers, action: :update}), class: 'form-inline', method: 'PUT') do = form_for @dossier do |f|
%label{ style:'font-weight:normal' }
= f.check_box :autorisation_donnees
J'autorise les organismes publics à vérifier les informations de mon entreprise auprès des administrations concernées. Ces informations resteront strictement confidentielles.
%br
= f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right'
= form_tag(url_for({controller: :dossiers, action: :update, id: @dossier.id}), class: 'form-inline', method: 'PUT') do
%br %br
%div %div
%label{ style:'font-weight:normal' } %label{ style:'font-weight:normal' }
%input{type:'checkbox', name: 'autorisation_donnees', id: 'autorisation_donnees'} %input{type:'checkbox', name: 'autorisation_donnees', id: 'autorisation_donnees'}
='Jautorise les organismes publics à vérifier les informations de mon entreprise auprès des administrations concernées. Ces informations resteront strictement confidentielles.' = "J'autorise les organismes publics à vérifier les informations de mon entreprise auprès des administrations concernées. Ces informations resteront strictement confidentielles."
%br %br
%br %br

View file

@ -25,7 +25,7 @@ Rails.application.configure do
# Debug mode disables concatenation and preprocessing of assets. # Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large # This option may cause significant delays in view rendering with a large
# number of complex assets. # number of complex assets.
config.assets.debug = true config.assets.debug = false
# Asset digests allow you to set far-future HTTP expiration dates on all assets, # Asset digests allow you to set far-future HTTP expiration dates on all assets,
# yet still be able to expire them through the digest params. # yet still be able to expire them through the digest params.

View file

@ -3,12 +3,14 @@
# Add new inflection rules using the following format. Inflections # Add new inflection rules using the following format. Inflections
# are locale specific, and you may define rules for as many different # are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default: # locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect| ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en' # inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1' # inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people' # inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep ) # inflect.uncountable %w( fish sheep )
# end inflect.irregular 'piece_jointe', 'pieces_jointes'
end
# These inflection rules are supported but not enabled by default: # These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect| # ActiveSupport::Inflector.inflections(:en) do |inflect|

View file

@ -0,0 +1,6 @@
class FixRefFormulaireToDossier < ActiveRecord::Migration
def change
remove_column :dossiers, :ref_formulaire, :integer
add_reference :dossiers, :ref_formulaire, index: true
end
end

View file

@ -0,0 +1,5 @@
class RenameRefDossierPdfIntoContent < ActiveRecord::Migration
def change
rename_column :dossier_pdfs, :ref_dossier_pdf, :content
end
end

View file

@ -0,0 +1,5 @@
class RenameDossierPdfintofPieceJointe < ActiveRecord::Migration
def change
rename_table :dossier_pdfs, :pieces_jointes
end
end

View file

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150810130957) do ActiveRecord::Schema.define(version: 20150813095939) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -26,14 +26,6 @@ ActiveRecord::Schema.define(version: 20150810130957) do
add_index "commentaires", ["dossier_id"], name: "index_commentaires_on_dossier_id", using: :btree add_index "commentaires", ["dossier_id"], name: "index_commentaires_on_dossier_id", using: :btree
create_table "dossier_pdfs", force: :cascade do |t|
t.string "ref_dossier_pdf"
t.integer "dossier_id"
t.integer "ref_pieces_jointes_id"
end
add_index "dossier_pdfs", ["ref_pieces_jointes_id"], name: "index_dossier_pdfs_on_ref_pieces_jointes_id", using: :btree
create_table "dossiers", force: :cascade do |t| create_table "dossiers", force: :cascade do |t|
t.string "description" t.string "description"
t.boolean "autorisation_donnees" t.boolean "autorisation_donnees"
@ -47,9 +39,11 @@ ActiveRecord::Schema.define(version: 20150810130957) do
t.string "lien_plus_infos" t.string "lien_plus_infos"
t.string "mail_contact" t.string "mail_contact"
t.boolean "dossier_termine" t.boolean "dossier_termine"
t.string "ref_formulaire" t.integer "ref_formulaire_id"
end end
add_index "dossiers", ["ref_formulaire_id"], name: "index_dossiers_on_ref_formulaire_id", using: :btree
create_table "entreprises", force: :cascade do |t| create_table "entreprises", force: :cascade do |t|
t.string "siren" t.string "siren"
t.integer "capital_social" t.integer "capital_social"
@ -90,6 +84,14 @@ ActiveRecord::Schema.define(version: 20150810130957) do
t.boolean "use_admi_facile" t.boolean "use_admi_facile"
end end
create_table "pieces_jointes", force: :cascade do |t|
t.string "content"
t.integer "dossier_id"
t.integer "ref_pieces_jointes_id"
end
add_index "pieces_jointes", ["ref_pieces_jointes_id"], name: "index_pieces_jointes_on_ref_pieces_jointes_id", using: :btree
create_table "pros", force: :cascade do |t| create_table "pros", force: :cascade do |t|
t.string "email", default: "", null: false t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false t.string "encrypted_password", default: "", null: false

View file

@ -8,24 +8,5 @@
Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each { |seed| load seed } Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each { |seed| load seed }
#SEEDS DEV, TEST
User.create({
email: 'test@localhost.com',
password: 'password'
})
@dossier = Dossier.create({
id: 10000,
nom_projet: 'Projet de test',
description: 'Description de test.',
montant_projet: 12000,
montant_aide_demande: 3000,
date_previsionnelle: '20/01/2016',
mail_contact: 'test@test.com',
ref_formulaire: '12'
})
@entreprise = Entreprise.create({id: 10000, siren: 431449040, date_creation: 1437665347, dossier: @dossier, raison_sociale: 'Coucou', code_effectif_entreprise: '00'})
@etablissement = Etablissement.create({id: 10000, siret: 43144904000028, siege_social: true, adresse: '50 avenue des champs élysées Paris 75008', entreprise: @entreprise, dossier: @dossier})
Commentaire.create({email: 'test@test.com', body: 'Commentaire de test', dossier: @dossier})

View file

@ -1,8 +1,9 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe Admin::DossierController, type: :controller do RSpec.describe Admin::DossierController, type: :controller do
let (:dossier_id){10000} let(:dossier) { create(:dossier, :with_entreprise) }
let (:bad_dossier_id){10} let (:dossier_id) { dossier.id }
let (:bad_dossier_id) { Dossier.count + 10 }
describe "GET #show" do describe "GET #show" do
context 'l\'utilisateur est connecté' do context 'l\'utilisateur est connecté' do
@ -12,7 +13,7 @@ RSpec.describe Admin::DossierController, type: :controller do
it "returns http success" do it "returns http success" do
get :show, :dossier_id => dossier_id get :show, :dossier_id => dossier_id
expect(response).to have_http_status(302) expect(response).to have_http_status(200)
end end
it 'le numéro de dossier n\'existe pas' do it 'le numéro de dossier n\'existe pas' do
@ -30,6 +31,7 @@ RSpec.describe Admin::DossierController, type: :controller do
end end
describe "GET #index" do describe "GET #index" do
let(:user) { create(:user) }
before do before do
sign_in sign_in
end end

View file

@ -1,13 +1,19 @@
require 'spec_helper' require 'spec_helper'
RSpec.describe CarteController, type: :controller do RSpec.describe CarteController, type: :controller do
let(:dossier_id){10000}
let(:bad_dossier_id){1000}
let(:ref_dossier){'IATRQPQY'}
let(:adresse){'50 avenue des champs élysées Paris 75008'}
let(:bad_adresse){'babouba'} let(:bad_adresse){'babouba'}
let(:dossier) { create(:dossier) }
let!(:entreprise) { create(:entreprise, dossier: dossier) }
let!(:etablissement) { create(:etablissement, dossier: dossier) }
let(:dossier_id) { dossier.id }
let(:bad_dossier_id) { Dossier.count + 10 }
let(:ref_dossier) { 'IATRQPQY' }
let(:adresse) { etablissement.adresse }
describe "GET #show" do describe "GET #show" do
it "returns http success" do it "returns http success" do
get :show, dossier_id: dossier_id get :show, dossier_id: dossier_id
@ -96,7 +102,7 @@ RSpec.describe CarteController, type: :controller do
end end
it 'dossier_id' do it 'dossier_id' do
expect(subject['dossier_id']).to eq('10000') expect(subject['dossier_id']).to eq(dossier.id.to_s)
end end
end end
end end

View file

@ -1,9 +1,10 @@
require 'spec_helper' require 'spec_helper'
describe CommentairesController, type: :controller do describe CommentairesController, type: :controller do
let (:dossier_id){10000} let(:dossier) { create(:dossier) }
let (:email_commentaire){'test@test.com'} let (:dossier_id) { dossier.id }
let (:texte_commentaire){'Commentaire de test'} let (:email_commentaire) { 'test@test.com' }
let (:texte_commentaire) { 'Commentaire de test' }
describe '#POST create' do describe '#POST create' do
context 'création correct d\'un commentaire' do context 'création correct d\'un commentaire' do

View file

@ -1,8 +1,8 @@
require 'spec_helper' require 'spec_helper'
RSpec.describe DemandesController, type: :controller do RSpec.describe DemandesController, type: :controller do
let(:dossier) { create(:dossier) }
let (:dossier_id){10000} let (:dossier_id) { dossier.id }
describe "GET #show" do describe "GET #show" do
it "returns http success" do it "returns http success" do

View file

@ -1,8 +1,9 @@
require 'spec_helper' require 'spec_helper'
describe DescriptionController, type: :controller do describe DescriptionController, type: :controller do
let (:dossier_id){10000} let(:dossier) { create(:dossier) }
let (:bad_dossier_id){1000} let (:dossier_id) { dossier.id }
let (:bad_dossier_id) { Dossier.count + 10 }
describe "GET #show" do describe "GET #show" do
it "returns http success" do it "returns http success" do
@ -25,11 +26,11 @@ describe DescriptionController, type: :controller do
let(:date_previsionnelle){'20/01/2016'} let(:date_previsionnelle){'20/01/2016'}
let(:mail_contact){'test@test.com'} let(:mail_contact){'test@test.com'}
let(:name_dossier_pdf){'dossierPDF.pdf'} let(:name_piece_jointe){'dossierPDF.pdf'}
let(:name_piece_jointe_103){'piece_jointe_103.pdf'} let(:name_piece_jointe_103){'piece_jointe_103.pdf'}
let(:name_piece_jointe_692){'piece_jointe_692.pdf'} let(:name_piece_jointe_692){'piece_jointe_692.pdf'}
let(:cerfa_pdf) {Rack::Test::UploadedFile.new("./spec/support/files/#{name_dossier_pdf}", 'application/pdf')} let(:cerfa_pdf) {Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe}", 'application/pdf')}
let(:piece_jointe_103) {Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe_103}", 'application/pdf')} let(:piece_jointe_103) {Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe_103}", 'application/pdf')}
let(:piece_jointe_692) {Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe_692}", 'application/pdf')} let(:piece_jointe_692) {Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe_692}", 'application/pdf')}
@ -114,9 +115,9 @@ describe DescriptionController, type: :controller do
end end
context 'un CERFA PDF est envoyé' do context 'un CERFA PDF est envoyé' do
subject{DossierPdf.last} subject{PieceJointe.last}
it 'ref_dossier_pdf' do it 'content' do
expect(subject['ref_dossier_pdf']).to eq(name_dossier_pdf) expect(subject['content']).to eq(name_piece_jointe)
end end
it 'dossier_id' do it 'dossier_id' do
@ -131,7 +132,7 @@ describe DescriptionController, type: :controller do
context 'les anciens CERFA PDF sont écrasées à chaque fois' do context 'les anciens CERFA PDF sont écrasées à chaque fois' do
it 'il n\'y a qu\'un CERFA PDF par dossier' do it 'il n\'y a qu\'un CERFA PDF par dossier' do
post :create, :dossier_id => dossier_id, :nom_projet => nom_projet, :description => description, :montant_projet => montant_projet, :montant_aide_demande => montant_aide_demande, :date_previsionnelle => date_previsionnelle, :mail_contact => mail_contact, :cerfa_pdf => cerfa_pdf post :create, :dossier_id => dossier_id, :nom_projet => nom_projet, :description => description, :montant_projet => montant_projet, :montant_aide_demande => montant_aide_demande, :date_previsionnelle => date_previsionnelle, :mail_contact => mail_contact, :cerfa_pdf => cerfa_pdf
cerfa = DossierPdf.where(ref_pieces_jointes_id: '0', dossier_id: dossier_id) cerfa = PieceJointe.where(ref_pieces_jointes_id: '0', dossier_id: dossier_id)
expect(cerfa.many?).to eq(false) expect(cerfa.many?).to eq(false)
end end
end end
@ -148,19 +149,20 @@ describe DescriptionController, type: :controller do
context 'sauvegarde de 2 pieces jointes' do context 'sauvegarde de 2 pieces jointes' do
it 'les deux pièces sont présentes en base' do it 'les deux pièces sont présentes en base' do
piece_jointe_1 = DossierPdf.where(ref_pieces_jointes_id: '103', dossier_id: dossier_id) piece_jointe_1 = PieceJointe.where(ref_pieces_jointes_id: '103', dossier_id: dossier_id)
piece_jointe_2 = DossierPdf.where(ref_pieces_jointes_id: '692', dossier_id: dossier_id) piece_jointe_2 = PieceJointe.where(ref_pieces_jointes_id: '692', dossier_id: dossier_id)
expect(piece_jointe_1.first['ref_dossier_pdf']).to eq(name_piece_jointe_103) expect(piece_jointe_1.first['content']).to eq(name_piece_jointe_103)
expect(piece_jointe_2.first['ref_dossier_pdf']).to eq(name_piece_jointe_692) expect(piece_jointe_2.first['content']).to eq(name_piece_jointe_692)
end end
# TODO: refactor
context 'les pièces sont ecrasées à chaque fois' do context 'les pièces sont ecrasées à chaque fois' do
it 'il n\'y a qu\'une pièce jointe par type par dossier' do it 'il n\'y a qu\'une pièce jointe par type par dossier' do
post :create, :dossier_id => dossier_id, :nom_projet => nom_projet, :description => description, :montant_projet => montant_projet, :montant_aide_demande => montant_aide_demande, :date_previsionnelle => date_previsionnelle, :mail_contact => mail_contact, :piece_jointe_692 => piece_jointe_692, :piece_jointe_103 => piece_jointe_103 post :create, :dossier_id => dossier_id, :nom_projet => nom_projet, :description => description, :montant_projet => montant_projet, :montant_aide_demande => montant_aide_demande, :date_previsionnelle => date_previsionnelle, :mail_contact => mail_contact, :piece_jointe_692 => piece_jointe_692, :piece_jointe_103 => piece_jointe_103
piece_jointe_1 = DossierPdf.where(ref_pieces_jointes_id: '103', dossier_id: dossier_id) piece_jointe_1 = PieceJointe.where(ref_pieces_jointes_id: '103', dossier_id: dossier_id)
piece_jointe_2 = DossierPdf.where(ref_pieces_jointes_id: '692', dossier_id: dossier_id) piece_jointe_2 = PieceJointe.where(ref_pieces_jointes_id: '692', dossier_id: dossier_id)
expect(piece_jointe_1.many?).to eq(false) expect(piece_jointe_1.many?).to eq(false)
expect(piece_jointe_2.many?).to eq(false) expect(piece_jointe_2.many?).to eq(false)

View file

@ -1,12 +1,13 @@
require 'spec_helper' require 'spec_helper'
RSpec.describe DossiersController, type: :controller do RSpec.describe DossiersController, type: :controller do
let (:dossier_id){10000} let(:dossier) { create(:dossier, :with_entreprise) }
let (:bad_dossier_id){1000} let (:dossier_id) { dossier.id }
let (:autorisation_donnees){'on'} let (:bad_dossier_id) { Dossier.count + 10 }
# let (:autorisation_donnees){'on'}
let (:siren){431449040} let (:siren) { dossier.siren }
let (:siret){43144904000028} let (:siret) { dossier.siret }
let (:bad_siret){1} let (:bad_siret){1}
describe 'GET #show' do describe 'GET #show' do
@ -62,23 +63,30 @@ RSpec.describe DossiersController, type: :controller do
end end
describe 'PUT #update' do describe 'PUT #update' do
it 'Checkbox conditions validée' do context 'when Checkbox is checked' do
put :update, :id => dossier_id, :autorisation_donnees => autorisation_donnees it 'redirects to demande' do
expect(response).to redirect_to("/dossiers/#{dossier_id}/demande") put :update, :id => dossier_id, dossier: { autorisation_donnees: '1' }
expect(response).to redirect_to("/dossiers/#{dossier_id}/demande")
end
it 'update dossier' do
put :update, :id => dossier_id, dossier: { autorisation_donnees: '1' }
dossier = Dossier.find(dossier_id)
expect(dossier.autorisation_donnees).to be_truthy
end
end end
context 'Checkbox conditions non validée' do context 'when Checkbox is not checked' do
before do it 'uses flash alert to display message' do
put :update, :id => dossier_id put :update, :id => dossier_id, dossier: { autorisation_donnees: '0' }
end
it 'affichage alert' do
expect(flash[:alert]).to be_present
end
it 'Affichage message d\'erreur condition non validé' do
expect(flash[:alert]).to have_content('Les conditions sont obligatoires.') expect(flash[:alert]).to have_content('Les conditions sont obligatoires.')
end end
it "doesn't update dossier autorisation_donnees" do
put :update, :id => dossier_id, dossier: { autorisation_donnees: '0' }
dossier = Dossier.find(dossier_id)
expect(dossier.autorisation_donnees).to be_falsy
end
end end
end end
end end

View file

@ -1,17 +1,18 @@
require 'spec_helper' require 'spec_helper'
RSpec.describe RecapitulatifController, type: :controller do RSpec.describe RecapitulatifController, type: :controller do
let (:dossier_id){10000} let(:dossier) { create(:dossier) }
let (:bad_dossier_id){1000}
let (:bad_dossier_id) { Dossier.count + 10 }
describe "GET #show" do describe "GET #show" do
it "returns http success" do it "returns http success" do
get :show, :dossier_id => dossier_id get :show, dossier_id: dossier.id
expect(response).to have_http_status(:success) expect(response).to have_http_status(:success)
end end
it 'redirection vers start si mauvais dossier ID' do it 'redirection vers start si mauvais dossier ID' do
get :show, :dossier_id => bad_dossier_id get :show, dossier_id: bad_dossier_id
expect(response).to redirect_to('/start/error_dossier') expect(response).to redirect_to('/start/error_dossier')
end end
end end

View file

@ -0,0 +1,5 @@
FactoryGirl.define do
factory :commentaire do
end
end

14
spec/factories/dossier.rb Normal file
View file

@ -0,0 +1,14 @@
FactoryGirl.define do
factory :dossier do
ref_formulaire_id 12
trait :with_entreprise do
after(:build) do |dossier, evaluator|
etablissement = create(:etablissement)
entreprise = create(:entreprise, etablissement: etablissement)
dossier.entreprise = entreprise
dossier.etablissement = etablissement
end
end
end
end

View file

@ -0,0 +1,14 @@
FactoryGirl.define do
factory :entreprise do
siren '440117620'
capital_social 537_100_000
numero_tva_intracommunautaire 'FR27440117620'
forme_juridique 'SA à conseil d\'administration (s.a.i.)'
forme_juridique_code '5599'
nom_commercial 'GRTGAZ'
raison_sociale 'GRTGAZ'
siret_siege_social '44011762001530'
code_effectif_entreprise '51'
date_creation 1_004_914_800
end
end

View file

@ -0,0 +1,16 @@
FactoryGirl.define do
factory :etablissement do
siret '44011762001530'
siege_social true
naf '4950Z'
libelle_naf 'Transports par conduites'
adresse "GRTGAZ\r IMMEUBLE BORA\r 6 RUE RAOUL NORDLING\r 92270 BOIS COLOMBES\r"
numero_voie '6'
type_voie 'RUE'
nom_voie 'RAOUL NORDLING'
complement_adresse 'IMMEUBLE BORA'
code_postal '92270'
localite 'BOIS COLOMBES'
code_insee_localite '92009'
end
end

View file

@ -0,0 +1,5 @@
FactoryGirl.define do
factory :piece_jointe do
end
end

6
spec/factories/user.rb Normal file
View file

@ -0,0 +1,6 @@
FactoryGirl.define do
factory :user do
email 'toto@sgmap.fr'
password 'password'
end
end

View file

@ -2,10 +2,12 @@ require 'spec_helper'
feature '_Commentaires_Flux Admin/Dossier#Show Page' do feature '_Commentaires_Flux Admin/Dossier#Show Page' do
let(:dossier_id){10000} let(:dossier) { create(:dossier, :with_entreprise) }
let(:email_pre_rempli){'test@localhost.com'} let(:dossier_id) { dossier.id }
let(:email_commentaire){'test@test.com'} let!(:commentaire) { create(:commentaire, dossier: dossier, email: 'toto@toto.com')}
let(:body){'Commentaire de test'} let(:email_commentaire) { 'test@test.com' }
let(:email_pre_rempli) { 'toto@sgmap.fr' }
let(:body) { 'Commentaire de test' }
before do before do
login_admin login_admin

View file

@ -1,7 +1,8 @@
require 'spec_helper' require 'spec_helper'
feature 'Admin/Dossier#Show Page' do feature 'Admin/Dossier#Show Page' do
let(:dossier_id){10000} let(:dossier) { create(:dossier, :with_entreprise) }
let(:dossier_id) { dossier.id }
before do before do
login_admin login_admin
@ -61,9 +62,10 @@ feature 'Admin/Dossier#Show Page' do
context 'Devis' do context 'Devis' do
let(:id_piece_jointe){388} let(:id_piece_jointe){388}
let(:piece_jointe_388) {File.open('./spec/support/files/piece_jointe_388.pdf')} let(:piece_jointe_388) {File.open('./spec/support/files/piece_jointe_388.pdf')}
let!(:piece_jointe) { create(:piece_jointe, dossier: dossier, ref_pieces_jointes_id: id_piece_jointe, content: piece_jointe_388) }
before do before do
DossierPdf.create(dossier_id: dossier_id, ref_pieces_jointes_id: id_piece_jointe, ref_dossier_pdf: piece_jointe_388) visit "/admin/dossier/#{dossier_id}"
end end
scenario 'la ligne de la pièce jointe est présente' do scenario 'la ligne de la pièce jointe est présente' do

View file

@ -1,7 +1,8 @@
require 'spec_helper' require 'spec_helper'
feature 'Carte#Show Page' do feature 'Carte#Show Page' do
let (:dossier_id){10000} let(:dossier) { create(:dossier) }
let(:dossier_id) { dossier.id }
before do before do
visit "/dossiers/#{dossier_id}/carte" visit "/dossiers/#{dossier_id}/carte"

View file

@ -1,7 +1,8 @@
require 'spec_helper' require 'spec_helper'
feature 'Demandes#Show Page' do feature 'Demandes#Show Page' do
let (:dossier_id){10000} let(:dossier) { create(:dossier)}
let (:dossier_id) { dossier.id }
before do before do
visit "/dossiers/#{dossier_id}/demande" visit "/dossiers/#{dossier_id}/demande"

View file

@ -1,7 +1,8 @@
require 'spec_helper' require 'spec_helper'
feature 'Description#Show Page' do feature 'Description#Show Page' do
let (:dossier_id){10000} let(:dossier) { create(:dossier) }
let(:dossier_id) { dossier.id }
before do before do
visit "/dossiers/#{dossier_id}/description" visit "/dossiers/#{dossier_id}/description"
@ -90,35 +91,38 @@ feature 'Description#Show Page' do
end end
context 'les valeurs sont réaffichées si elles sont présentes dans la BDD' do context 'les valeurs sont réaffichées si elles sont présentes dans la BDD' do
let(:nom_projet){'Projet de test'} let(:dossier) do
let(:description){'Description de test.'} create(:dossier,
let(:montant_projet){12000} nom_projet: 'Projet de test',
let(:montant_aide_demande){3000} description: 'Description de test',
let(:date_previsionnelle){'20/01/2016'} montant_projet: 12_000,
let(:mail_contact){'test@test.com'} montant_aide_demande: 3000,
date_previsionnelle: '20/01/2016',
mail_contact: 'test@test.com')
end
scenario 'Nom du projet' do scenario 'Nom du projet' do
expect(page).to have_selector("input[id=nom_projet][value='#{nom_projet}']") expect(page).to have_selector("input[id=nom_projet][value='#{dossier.nom_projet}']")
end end
scenario 'Description du projet' do scenario 'Description du projet' do
expect(page).to have_content("#{description}") expect(page).to have_content("#{dossier.description}")
end end
scenario 'Montant du projet' do scenario 'Montant du projet' do
expect(page).to have_selector("input[id=montant_projet][value='#{montant_projet}']") expect(page).to have_selector("input[id=montant_projet][value='#{dossier.montant_projet}']")
end end
scenario 'Montant des aides du projet' do scenario 'Montant des aides du projet' do
expect(page).to have_selector("input[id=montant_aide_demande][value='#{montant_aide_demande}']") expect(page).to have_selector("input[id=montant_aide_demande][value='#{dossier.montant_aide_demande}']")
end end
scenario 'Date prévisionnelle du projet' do scenario 'Date prévisionnelle du projet' do
expect(page).to have_selector("input[id=date_previsionnelle][value='#{date_previsionnelle}']") expect(page).to have_selector("input[id=date_previsionnelle][value='#{dossier.date_previsionnelle}']")
end end
scenario 'Mail de contact' do scenario 'Mail de contact' do
expect(page).to have_selector("input[id=mail_contact][value='#{mail_contact}']") expect(page).to have_selector("input[id=mail_contact][value='#{dossier.mail_contact}']")
end end
end end

View file

@ -1,7 +1,9 @@
require 'spec_helper' require 'spec_helper'
feature 'Dossier#Show Page' do feature 'Dossier#Show Page' do
let (:dossier_id){10000} let(:dossier) { create(:dossier, :with_entreprise) }
let(:dossier_id) { dossier.id }
before do before do
visit "/dossiers/#{dossier_id}" visit "/dossiers/#{dossier_id}"
@ -21,7 +23,7 @@ feature 'Dossier#Show Page' do
end end
scenario 'le texte d\'information des droits est correct' do scenario 'le texte d\'information des droits est correct' do
expect(page).to have_content ("Jautorise les organismes publics à vérifier les informations de mon entreprise auprès des administrations concernées. Ces informations resteront strictement confidentielles.") expect(page).to have_content ("J'autorise les organismes publics à vérifier les informations de mon entreprise auprès des administrations concernées. Ces informations resteront strictement confidentielles.")
end end
scenario 'les informations de l\'entreprise sont présents' do scenario 'les informations de l\'entreprise sont présents' do

View file

@ -1,9 +1,10 @@
require 'spec_helper' require 'spec_helper'
feature '_Commentaires_Flux Recapitulatif#Show Page' do feature '_Commentaires_Flux Recapitulatif#Show Page' do
let(:dossier) { create(:dossier) }
let(:dossier_id){10000} let(:dossier_id) { dossier.id }
let(:email_commentaire){'test@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(:body){'Commentaire de test'} let(:body){'Commentaire de test'}
before do before do
@ -39,7 +40,7 @@ feature '_Commentaires_Flux Recapitulatif#Show Page' do
end end
scenario 'Champs email est prérempli' do scenario 'Champs email est prérempli' do
expect(page).to have_selector("input[id=email_commentaire][value='#{email_commentaire}']") expect(page).to have_content(email_commentaire)
end end
end end
end end

View file

@ -2,7 +2,8 @@ require 'spec_helper'
feature 'Recapitulatif#Show Page' do feature 'Recapitulatif#Show Page' do
let(:dossier_id){10000} let(:dossier) { create(:dossier) }
let(:dossier_id) { dossier.id }
before do before do
Capybara.current_session.driver.header('Referer', '/description') Capybara.current_session.driver.header('Referer', '/description')

View file

@ -0,0 +1,22 @@
require 'spec_helper'
describe Dossier do
let(:dossier) { create(:dossier, :with_entreprise) }
let(:entreprise) { dossier.entreprise }
let(:etablissement) { dossier.etablissement }
subject { dossier }
describe '#siren' do
it 'returns entreprise siren' do
expect(subject.siren).to eq(entreprise.siren)
end
end
describe '#siret' do
it 'returns etablissement siret' do
expect(subject.siret).to eq(etablissement.siret)
end
end
end

View file

@ -45,14 +45,8 @@ Dir[Rails.root.join("spec/factories/**/*.rb")].each { |f| require f }
# If you are not using ActiveRecord, you can remove this line. # If you are not using ActiveRecord, you can remove this line.
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration) ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
class ActiveRecord::Base DatabaseCleaner.strategy = :truncation, {:except => %w[evenement_vies ref_formulaires ref_pieces_jointes]}
mattr_accessor :shared_connection
@@shared_connection = nil
def self.connection
@@shared_connection || retrieve_connection
end
end
if !(defined? SIADETOKEN) if !(defined? SIADETOKEN)
SIADETOKEN = :valid_token SIADETOKEN = :valid_token

View file

@ -5,7 +5,7 @@ module ControllerHelpers
allow(controller).to receive(:current_user).and_return(nil) allow(controller).to receive(:current_user).and_return(nil)
else else
allow(request.env['warden']).to receive(:authenticate!).and_return(user) allow(request.env['warden']).to receive(:authenticate!).and_return(user)
allow(controller).to receive(:current_user).and_return({:email => 'test@localhost.com'}) allow(controller).to receive(:current_user).and_return(create(:user))
end end
end end
end end

View file

@ -0,0 +1,21 @@
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation, {:except => %w[evenement_vies ref_formulaires ref_pieces_jointes]})
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
# config.before(:each, :js => true) do
# DatabaseCleaner.strategy = :truncation, {:except => %w[evenement_vies ref_formulaires ref_pieces_jointes]}
# end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end

View file

@ -1,6 +1,6 @@
module FeatureHelpers module FeatureHelpers
def login_admin def login_admin
user = User.first user = create :user
login_as user, scope: :user login_as user, scope: :user
user user
end end

View file

@ -0,0 +1,15 @@
require 'spec_helper'
describe 'dossiers/show.html.haml', type: :view do
let(:dossier) { create(:dossier, :with_entreprise) }
before do
assign(:dossier, dossier)
assign(:entreprise, dossier.entreprise.decorate)
assign(:etablissement, dossier.etablissement)
render
end
it 'have autorisation_donnees check box' do
expect(rendered).to have_css('#autorisation_donnees')
end
end