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

View file

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

View file

@ -1,13 +1,19 @@
require 'spec_helper'
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(: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
it "returns http success" do
get :show, dossier_id: dossier_id
@ -96,7 +102,7 @@ RSpec.describe CarteController, type: :controller do
end
it 'dossier_id' do
expect(subject['dossier_id']).to eq('10000')
expect(subject['dossier_id']).to eq(dossier.id.to_s)
end
end
end

View file

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

View file

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

View file

@ -1,8 +1,9 @@
require 'spec_helper'
describe DescriptionController, type: :controller do
let (:dossier_id){10000}
let (:bad_dossier_id){1000}
let(:dossier) { create(:dossier) }
let (:dossier_id) { dossier.id }
let (:bad_dossier_id) { Dossier.count + 10 }
describe "GET #show" do
it "returns http success" do
@ -25,11 +26,11 @@ describe DescriptionController, type: :controller do
let(:date_previsionnelle){'20/01/2016'}
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_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_692) {Rack::Test::UploadedFile.new("./spec/support/files/#{name_piece_jointe_692}", 'application/pdf')}
@ -114,9 +115,9 @@ describe DescriptionController, type: :controller do
end
context 'un CERFA PDF est envoyé' do
subject{DossierPdf.last}
it 'ref_dossier_pdf' do
expect(subject['ref_dossier_pdf']).to eq(name_dossier_pdf)
subject{PieceJointe.last}
it 'content' do
expect(subject['content']).to eq(name_piece_jointe)
end
it 'dossier_id' do
@ -131,7 +132,7 @@ describe DescriptionController, type: :controller do
context 'les anciens CERFA PDF sont écrasées à chaque fois' 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
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)
end
end
@ -148,19 +149,20 @@ describe DescriptionController, type: :controller do
context 'sauvegarde de 2 pieces jointes' 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_2 = DossierPdf.where(ref_pieces_jointes_id: '692', dossier_id: dossier_id)
piece_jointe_1 = PieceJointe.where(ref_pieces_jointes_id: '103', 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_2.first['ref_dossier_pdf']).to eq(name_piece_jointe_692)
expect(piece_jointe_1.first['content']).to eq(name_piece_jointe_103)
expect(piece_jointe_2.first['content']).to eq(name_piece_jointe_692)
end
# TODO: refactor
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
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_2 = DossierPdf.where(ref_pieces_jointes_id: '692', dossier_id: dossier_id)
piece_jointe_1 = PieceJointe.where(ref_pieces_jointes_id: '103', 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_2.many?).to eq(false)

View file

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

View file

@ -1,17 +1,18 @@
require 'spec_helper'
RSpec.describe RecapitulatifController, type: :controller do
let (:dossier_id){10000}
let (:bad_dossier_id){1000}
let(:dossier) { create(:dossier) }
let (:bad_dossier_id) { Dossier.count + 10 }
describe "GET #show" 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)
end
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')
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
let(:dossier_id){10000}
let(:email_pre_rempli){'test@localhost.com'}
let(:email_commentaire){'test@test.com'}
let(:body){'Commentaire de test'}
let(:dossier) { create(:dossier, :with_entreprise) }
let(:dossier_id) { dossier.id }
let!(:commentaire) { create(:commentaire, dossier: dossier, email: 'toto@toto.com')}
let(:email_commentaire) { 'test@test.com' }
let(:email_pre_rempli) { 'toto@sgmap.fr' }
let(:body) { 'Commentaire de test' }
before do
login_admin

View file

@ -1,7 +1,8 @@
require 'spec_helper'
feature 'Admin/Dossier#Show Page' do
let(:dossier_id){10000}
let(:dossier) { create(:dossier, :with_entreprise) }
let(:dossier_id) { dossier.id }
before do
login_admin
@ -61,9 +62,10 @@ feature 'Admin/Dossier#Show Page' do
context 'Devis' do
let(:id_piece_jointe){388}
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
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
scenario 'la ligne de la pièce jointe est présente' do

View file

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

View file

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

View file

@ -1,7 +1,8 @@
require 'spec_helper'
feature 'Description#Show Page' do
let (:dossier_id){10000}
let(:dossier) { create(:dossier) }
let(:dossier_id) { dossier.id }
before do
visit "/dossiers/#{dossier_id}/description"
@ -90,35 +91,38 @@ feature 'Description#Show Page' do
end
context 'les valeurs sont réaffichées si elles sont présentes dans la BDD' do
let(:nom_projet){'Projet de test'}
let(:description){'Description de test.'}
let(:montant_projet){12000}
let(:montant_aide_demande){3000}
let(:date_previsionnelle){'20/01/2016'}
let(:mail_contact){'test@test.com'}
let(:dossier) do
create(:dossier,
nom_projet: 'Projet de test',
description: 'Description de test',
montant_projet: 12_000,
montant_aide_demande: 3000,
date_previsionnelle: '20/01/2016',
mail_contact: 'test@test.com')
end
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
scenario 'Description du projet' do
expect(page).to have_content("#{description}")
expect(page).to have_content("#{dossier.description}")
end
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
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
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
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

View file

@ -1,7 +1,9 @@
require 'spec_helper'
feature 'Dossier#Show Page' do
let (:dossier_id){10000}
let(:dossier) { create(:dossier, :with_entreprise) }
let(:dossier_id) { dossier.id }
before do
visit "/dossiers/#{dossier_id}"
@ -21,7 +23,7 @@ feature 'Dossier#Show Page' do
end
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
scenario 'les informations de l\'entreprise sont présents' do

View file

@ -1,9 +1,10 @@
require 'spec_helper'
feature '_Commentaires_Flux Recapitulatif#Show Page' do
let(:dossier_id){10000}
let(:email_commentaire){'test@test.com'}
let(:dossier) { create(:dossier) }
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
@ -39,7 +40,7 @@ feature '_Commentaires_Flux Recapitulatif#Show Page' do
end
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

View file

@ -2,7 +2,8 @@ require 'spec_helper'
feature 'Recapitulatif#Show Page' do
let(:dossier_id){10000}
let(:dossier) { create(:dossier) }
let(:dossier_id) { dossier.id }
before do
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.
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
class ActiveRecord::Base
mattr_accessor :shared_connection
@@shared_connection = nil
DatabaseCleaner.strategy = :truncation, {:except => %w[evenement_vies ref_formulaires ref_pieces_jointes]}
def self.connection
@@shared_connection || retrieve_connection
end
end
if !(defined? SIADETOKEN)
SIADETOKEN = :valid_token

View file

@ -5,7 +5,7 @@ module ControllerHelpers
allow(controller).to receive(:current_user).and_return(nil)
else
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

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
def login_admin
user = User.first
user = create :user
login_as user, scope: :user
user
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