diff --git a/.rubocop.yml b/.rubocop.yml index 6c6eece28..9ceee0624 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,6 +1,9 @@ +inherit_from: .rubocop_todo.yml + require: - rubocop-packaging - rubocop-rails + - rubocop-rspec AllCops: TargetRubyVersion: 2.7 @@ -65,3 +68,8 @@ Rails/RedundantPresenceValidationOnBelongsTo: Lint/MissingSuper: Exclude: - 'app/components/**/*' + +RSpec/DescribeClass: + Exclude: + - 'spec/views/**/*' + - 'spec/tasks/**/*' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml new file mode 100644 index 000000000..67cb502df --- /dev/null +++ b/.rubocop_todo.yml @@ -0,0 +1,192 @@ +# This configuration was generated by +# `rubocop --auto-gen-config` +# on 2024-09-27 09:21:59 UTC using RuboCop version 1.66.1. +# The point is for the user to remove these configuration records +# one by one as the offenses are removed from the code base. +# Note that changes in the inspected code, or installation of new +# versions of RuboCop, may require this file to be generated again. + +# Offense count: 12 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns. +# URISchemes: http, https +Layout/LineLength: + Exclude: + - 'spec/features/admin/evaluation_spec.rb' + - 'spec/integrations/structure_spec.rb' + - 'spec/models/restitution/controle/comprehension_consigne_spec.rb' + - 'spec/models/restitution/controle/perseverance_spec.rb' + - 'spec/models/restitution/inventaire/perseverance_spec.rb' + - 'spec/models/restitution/inventaire/vigilance_controle_spec.rb' + - 'spec/models/restitution/maintenance/score_vocabulaire_spec.rb' + - 'spec/models/restitution/tri/comprehension_consigne_spec.rb' + +# Offense count: 7 +# This cop supports unsafe autocorrection (--autocorrect-all). +RSpec/BeEq: + Exclude: + - 'spec/models/question_glisser_deposer_spec.rb' + +# Offense count: 6 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: NegatedMatcher. +RSpec/ChangeByZero: + Exclude: + - 'spec/models/fabrique_evenement_spec.rb' + +# Offense count: 616 +# Configuration parameters: Prefixes, AllowedPatterns. +# Prefixes: when, with, without +RSpec/ContextWording: + Enabled: false + +# Offense count: 145 +# Configuration parameters: CountAsOne. +RSpec/ExampleLength: + Max: 38 + +# Offense count: 1 +# This cop supports safe autocorrection (--autocorrect). +RSpec/ExpectActual: + Exclude: + - 'spec/models/structure_spec.rb' + +# Offense count: 1 +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: method_call, block +RSpec/ExpectChange: + Exclude: + - 'spec/models/question_glisser_deposer_spec.rb' + +# Offense count: 4 +RSpec/ExpectInHook: + Exclude: + - 'spec/features/admin/campagne_spec.rb' + - 'spec/models/restitution/inventaire/rapidite_spec.rb' + +# Offense count: 12 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: implicit, each, example +RSpec/HookArgument: + Exclude: + - 'spec/models/question_glisser_deposer_spec.rb' + +# Offense count: 64 +# Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns. +RSpec/IndexedLet: + Enabled: false + +# Offense count: 7 +# Configuration parameters: AssignmentOnly. +RSpec/InstanceVariable: + Exclude: + - 'spec/controllers/eva/devise/session_controller_spec.rb' + - 'spec/models/restitution/inventaire_spec.rb' + +# Offense count: 113 +RSpec/LetSetup: + Enabled: false + +# Offense count: 124 +# Configuration parameters: EnforcedStyle. +# SupportedStyles: have_received, receive +RSpec/MessageSpies: + Enabled: false + +# Offense count: 277 +RSpec/MultipleExpectations: + Max: 22 + +# Offense count: 206 +# Configuration parameters: AllowSubject. +RSpec/MultipleMemoizedHelpers: + Max: 22 + +# Offense count: 103 +# Configuration parameters: EnforcedStyle, IgnoreSharedExamples. +# SupportedStyles: always, named_only +RSpec/NamedSubject: + Enabled: false + +# Offense count: 114 +# Configuration parameters: AllowedGroups. +RSpec/NestedGroups: + Max: 7 + +# Offense count: 13 +# Configuration parameters: AllowedPatterns. +# AllowedPatterns: ^expect_, ^assert_ +RSpec/NoExpectationExample: + Exclude: + - 'spec/features/nouvelle_structure_spec.rb' + - 'spec/models/restitution/inventaire/organisation_methode_spec.rb' + +# Offense count: 3 +RSpec/OverwritingSetup: + Exclude: + - 'spec/jobs/notification_admin_comptes_en_attente_job_spec.rb' + - 'spec/models/restitution/bienvenue_spec.rb' + - 'spec/models/restitution/illettrisme/nombre_reponses_spec.rb' + +# Offense count: 2 +RSpec/RepeatedExampleGroupBody: + Exclude: + - 'spec/models/restitution/maintenance/temps_non_mots_spec.rb' + +# Offense count: 2 +RSpec/RepeatedExampleGroupDescription: + Exclude: + - 'spec/models/statistiques_structure_spec.rb' + +# Offense count: 9 +# Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata. +# Include: **/*_spec.rb +RSpec/SpecFilePathFormat: + Exclude: + - 'spec/controllers/eva/devise/session_controller_spec.rb' + - 'spec/controllers/evaluations_controller_spec.rb' + - 'spec/controllers/evenements_controller_spec.rb' + - 'spec/integrations/standardisateur_spec.rb' + - 'spec/jobs/structure/assigne_job_spec.rb' + - 'spec/mailers/structure_spec.rb' + - 'spec/models/donnees_sociodemographique_spec.rb' + - 'spec/models/restitution/objet_trouves_spec.rb' + - 'spec/models/restitution/securite/nombre_dangers_bien_identifies_avant_aide_1_spec.rb' + +# Offense count: 102 +RSpec/StubbedMock: + Enabled: false + +# Offense count: 12 +RSpec/SubjectDeclaration: + Exclude: + - 'spec/models/restitution/competences_transversales/interpreteur_spec.rb' + - 'spec/models/restitution/illettrisme/interpreteur_niveau1_spec.rb' + - 'spec/models/restitution/illettrisme/interpreteur_scores_spec.rb' + - 'spec/models/restitution/illettrisme/synthetiseur_spec.rb' + - 'spec/models/restitution/standardisateur_fige_spec.rb' + - 'spec/models/restitution/standardisateur_glissant_spec.rb' + +# Offense count: 1 +# Configuration parameters: EnforcedStyle, AllowedPatterns. +# SupportedStyles: snake_case, camelCase +RSpec/VariableName: + Exclude: + - 'spec/requests/evaluations_spec.rb' + +# Offense count: 74 +# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames. +RSpec/VerifiedDoubles: + Exclude: + - 'spec/controllers/structures_controller_spec.rb' + - 'spec/features/admin/evaluation_spec.rb' + - 'spec/helpers/application_helper_spec.rb' + - 'spec/models/campagne_spec.rb' + - 'spec/models/restitution/completude_spec.rb' + - 'spec/models/restitution/globale_spec.rb' + - 'spec/models/restitution/scores_niveau2_spec.rb' + - 'spec/models/situation_configuration_spec.rb' + - 'spec/tasks/ajoute_evenements_termines_spec.rb' + - 'spec/tasks/recalcule_metriques_spec.rb' diff --git a/spec/controllers/api/evaluations_controller_spec.rb b/spec/controllers/api/evaluations_controller_spec.rb index 9c55c50fd..7b2e5a20f 100644 --- a/spec/controllers/api/evaluations_controller_spec.rb +++ b/spec/controllers/api/evaluations_controller_spec.rb @@ -18,13 +18,13 @@ it 'ajoute bien une evaluation à la création' do expect do post :create, params: evaluation_params - end.to change { Evaluation.count }.by(1) + end.to change(Evaluation, :count).by(1) end it "lorsqu'on crée une evaluation, on crée un bénéficiaire" do expect do post :create, params: evaluation_params - end.to change { Beneficiaire.count }.by(1) + end.to change(Beneficiaire, :count).by(1) end end @@ -39,7 +39,7 @@ evaluation = create :evaluation expect do put :update, params: { id: evaluation.id, nom: nom } - end.to change { Beneficiaire.count }.by(0) + end.not_to(change(Beneficiaire, :count)) expect(response).to have_http_status(:success) end end diff --git a/spec/controllers/eva/devise/session_controller_spec.rb b/spec/controllers/eva/devise/session_controller_spec.rb index a953c26ec..b67ad323b 100644 --- a/spec/controllers/eva/devise/session_controller_spec.rb +++ b/spec/controllers/eva/devise/session_controller_spec.rb @@ -5,6 +5,7 @@ describe Eva::Devise::SessionsController, type: :controller do let!(:compte) { create :compte_admin } let!(:campagne) { create :campagne, compte: compte, code: 'CODECAMPAGNE' } + describe 'POST connexion_espace_jeu' do context 'quand on passe un code campagne valide' do it "redirige vers l'espace jeu" do diff --git a/spec/features/admin/campagne_spec.rb b/spec/features/admin/campagne_spec.rb index fb173565e..bf947075d 100644 --- a/spec/features/admin/campagne_spec.rb +++ b/spec/features/admin/campagne_spec.rb @@ -48,6 +48,7 @@ context 'quelque soit le rôle' do let!(:evaluation) { create :evaluation, campagne: campagne } let!(:evaluation_conseiller) { create :evaluation, campagne: ma_campagne } + before { visit admin_campagnes_path } it "affiche le nombre d'évaluation par campagne" do @@ -207,7 +208,7 @@ end it "soft_delete la campagne mais garde l'association avec l'evaluation" do - expect(campagne.deleted_at).not_to be nil + expect(campagne.deleted_at).not_to be_nil expect(evaluation.campagne_id).to eq campagne.id end end diff --git a/spec/features/admin/compte_spec.rb b/spec/features/admin/compte_spec.rb index f30394952..c3b3c7270 100644 --- a/spec/features/admin/compte_spec.rb +++ b/spec/features/admin/compte_spec.rb @@ -16,6 +16,7 @@ describe 'index' do let(:compte_connecte) { compte_superadmin } + before { visit admin_comptes_path } it { expect(page).to have_content 'moi@structure' } @@ -311,6 +312,7 @@ end it { expect(page).to have_content(/nouvel-email@exemple.fr/) } + it do expect(page).to have_content(/Consultez votre boîte de réception,/) end @@ -336,7 +338,7 @@ context "quand je suis sur la show d'un autre compte" do before { visit admin_compte_path(collegue) } - it { expect(page).to_not have_content(/Confirmez votre adresse email/) } + it { expect(page).not_to have_content(/Confirmez votre adresse email/) } end context "quand l'email du compte d'un collègue a été modifié" do diff --git a/spec/features/admin/dashboard_spec.rb b/spec/features/admin/dashboard_spec.rb index abdfa26af..74dc2576a 100644 --- a/spec/features/admin/dashboard_spec.rb +++ b/spec/features/admin/dashboard_spec.rb @@ -97,7 +97,7 @@ it "affiche l'étape valider son email" do visit admin_path expect(compte.confirmed?).to be false - expect(compte.unconfirmed_email).to be nil + expect(compte.unconfirmed_email).to be_nil expect(page).not_to have_content('Testez votre campagne') expect(page).to have_content('Confirmez votre adresse email') expect(page).not_to have_content('Testez votre campagne') @@ -157,10 +157,9 @@ before do compte.update(mode_tutoriel: false) compte.validation_en_attente! + visit admin_path end - before { visit admin_path } - it do expect(page).to have_content("Elle va bientôt vous permettre d'utiliser eva") infos_support = diff --git a/spec/features/admin/evaluation_spec.rb b/spec/features/admin/evaluation_spec.rb index 9e7a49e22..e89af8afe 100644 --- a/spec/features/admin/evaluation_spec.rb +++ b/spec/features/admin/evaluation_spec.rb @@ -163,11 +163,9 @@ before do competences = [[Competence::ORGANISATION_METHODE, Competence::NIVEAU_4]] - allow(restitution_globale).to receive(:niveaux_competences).and_return(competences) interpretations = [[Competence::ORGANISATION_METHODE, 4.0]] - allow(restitution_globale).to receive(:interpretations_competences_transversales) - .and_return(interpretations) - allow(restitution_globale).to receive(:structure).and_return('structure') + allow(restitution_globale).to receive_messages(niveaux_competences: competences, + interpretations_competences_transversales: interpretations, structure: 'structure') allow(restitution_globale).to receive(:synthese) allow(restitution_globale).to receive(:synthese_pre_positionnement) allow(restitution_globale).to receive(:synthese_positionnement) @@ -305,7 +303,7 @@ it do within('#action_items_sidebar_section') { click_on 'Supprimer' } - expect(evaluation.reload.deleted?).to eq true + expect(evaluation.reload.deleted?).to be true expect(page.current_url).to eql(admin_campagne_url(ma_campagne)) end end @@ -324,7 +322,7 @@ find('a.lien-supprimer').click end expect(page).not_to have_content(mon_collegue.email) - expect(evaluation.reload.responsable_suivi).to eq nil + expect(evaluation.reload.responsable_suivi).to be_nil end end @@ -341,7 +339,7 @@ find('a.lien-supprimer').click end expect(page).not_to have_content(mon_collegue.email) - expect(evaluation.reload.responsable_suivi).to eq nil + expect(evaluation.reload.responsable_suivi).to be_nil end end end diff --git a/spec/features/admin/parcours_type_spec.rb b/spec/features/admin/parcours_type_spec.rb index 483d8f8f4..fbc91442e 100644 --- a/spec/features/admin/parcours_type_spec.rb +++ b/spec/features/admin/parcours_type_spec.rb @@ -28,7 +28,7 @@ end it do - expect { click_on 'Créer' }.to(change { ParcoursType.count }) + expect { click_on 'Créer' }.to(change(ParcoursType, :count)) expect(ParcoursType.last.description).to eq('Ma description') end end diff --git a/spec/features/admin/question_clic_dans_image_spec.rb b/spec/features/admin/question_clic_dans_image_spec.rb index 4c8fa86a0..6aa3c8235 100644 --- a/spec/features/admin/question_clic_dans_image_spec.rb +++ b/spec/features/admin/question_clic_dans_image_spec.rb @@ -51,7 +51,7 @@ end it 'créé une nouvelle question' do - expect { click_on 'Créer' }.to(change { Question.count }) + expect { click_on 'Créer' }.to(change(Question, :count)) expect(Question.first.transcriptions).to be_empty end end @@ -94,7 +94,7 @@ end it do - expect(Question.first.illustration.attached?).to eq true + expect(Question.first.illustration.attached?).to be true end end @@ -110,7 +110,7 @@ it do question = Question.first - expect(question.zone_cliquable.attached?).to eq true + expect(question.zone_cliquable.attached?).to be true expect(question.errors[:zone_cliquable]).to be_empty end end @@ -168,10 +168,10 @@ end it "supprime l'illustration" do - expect(question.illustration.attached?).to eq true + expect(question.illustration.attached?).to be true click_on 'Enregistrer' question.reload - expect(question.illustration.attached?).to eq false + expect(question.illustration.attached?).to be false end end @@ -188,12 +188,12 @@ it "supprime l'audio" do expect( Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? - ).to eq true + ).to be true click_on 'Enregistrer' question.reload expect( Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? - ).to eq false + ).to be false end end @@ -210,12 +210,12 @@ it "supprime l'audio" do expect( Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? - ).to eq true + ).to be true click_on 'Enregistrer' question.reload expect( Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? - ).to eq false + ).to be false end end end diff --git a/spec/features/admin/question_glisser_deposer_spec.rb b/spec/features/admin/question_glisser_deposer_spec.rb index 4cbb1f0d5..6d8493902 100644 --- a/spec/features/admin/question_glisser_deposer_spec.rb +++ b/spec/features/admin/question_glisser_deposer_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe 'Admin - Question Glisser Deposer', type: :feature do - before(:each) { se_connecter_comme_superadmin } + before { se_connecter_comme_superadmin } describe 'show' do let!(:question) do @@ -13,7 +13,7 @@ create :transcription, question_id: question.id, ecrit: 'Comment ça va ?' end - before(:each) { visit admin_question_glisser_deposer_path(question) } + before { visit admin_question_glisser_deposer_path(question) } it 'affiche le libellé de la question et la transcription associée' do expect(page).to have_content 'Libellé de la question' @@ -29,7 +29,7 @@ create :transcription, question_id: question.id, ecrit: 'Comment ça va ?' end - before(:each) { visit admin_questions_glisser_deposer_path } + before { visit admin_questions_glisser_deposer_path } it do expect(page).to have_content 'Comment ça va ?' @@ -37,24 +37,24 @@ end describe 'création' do - before(:each) do + before do visit new_admin_question_glisser_deposer_path end context 'sans transcriptions' do - before(:each) do + before do fill_in :question_glisser_deposer_libelle, with: 'Question' fill_in :question_glisser_deposer_nom_technique, with: 'question' end it 'créé une nouvelle question' do - expect { click_on 'Créer' }.to(change { Question.count }) + expect { click_on 'Créer' }.to(change(Question, :count)) expect(Question.first.transcriptions).to be_empty end end context 'quand une transcription pour intitule est ajouté' do - before(:each) do + before do fill_in :question_glisser_deposer_libelle, with: 'Question' fill_in :question_glisser_deposer_nom_technique, with: 'question' fill_in :question_glisser_deposer_transcriptions_attributes_0_ecrit, with: 'Intitulé' @@ -68,7 +68,7 @@ end context 'quand une transcription pour modalité réponse est ajoutée' do - before(:each) do + before do fill_in :question_glisser_deposer_libelle, with: 'Question' fill_in :question_glisser_deposer_nom_technique, with: 'question' fill_in :question_glisser_deposer_transcriptions_attributes_1_ecrit, with: 'Consigne' @@ -82,7 +82,7 @@ end context 'quand une illustration est ajoutée' do - before(:each) do + before do fill_in :question_glisser_deposer_libelle, with: 'Question' fill_in :question_glisser_deposer_nom_technique, with: 'question' attach_file(:question_glisser_deposer_illustration, @@ -91,7 +91,7 @@ end it do - expect(Question.first.illustration.attached?).to eq true + expect(Question.first.illustration.attached?).to be true end end end @@ -113,7 +113,7 @@ end context "quand l'admin supprime l'écrit d'une transcription et qu'il n'y a pas d'audio" do - before(:each) do + before do visit edit_admin_question_glisser_deposer_path(question) fill_in :question_glisser_deposer_transcriptions_attributes_0_ecrit, with: nil end @@ -126,21 +126,21 @@ end context "quand l'admin coche supprimer l'illustration" do - before(:each) do + before do visit edit_admin_question_glisser_deposer_path(question) check 'question_glisser_deposer_supprimer_illustration' end it "supprime l'illustration" do - expect(question.illustration.attached?).to eq true + expect(question.illustration.attached?).to be true click_on 'Enregistrer' question.reload - expect(question.illustration.attached?).to eq false + expect(question.illustration.attached?).to be false end end context "quand l'admin coche supprimer l'audio de l'intitulé" do - before(:each) do + before do Question.first.transcriptions.find_by(categorie: :intitule) .update(audio: Rack::Test::UploadedFile.new( Rails.root.join('spec/support/alcoolique.mp3') @@ -152,17 +152,17 @@ it "supprime l'audio" do expect( Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? - ).to eq true + ).to be true click_on 'Enregistrer' question.reload expect( Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? - ).to eq false + ).to be false end end context "quand l'admin coche supprimer l'audio de la consigne" do - before(:each) do + before do Question.first.transcriptions.find_by(categorie: :modalite_reponse) .update(audio: Rack::Test::UploadedFile.new( Rails.root.join('spec/support/alcoolique.mp3') @@ -174,12 +174,12 @@ it "supprime l'audio" do expect( Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? - ).to eq true + ).to be true click_on 'Enregistrer' question.reload expect( Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? - ).to eq false + ).to be false end end end diff --git a/spec/features/admin/question_qcm_spec.rb b/spec/features/admin/question_qcm_spec.rb index 79e1c1946..eebeb5817 100644 --- a/spec/features/admin/question_qcm_spec.rb +++ b/spec/features/admin/question_qcm_spec.rb @@ -32,7 +32,7 @@ end it 'créé une nouvelle question' do - expect { click_on 'Créer' }.to(change { Question.count }) + expect { click_on 'Créer' }.to(change(Question, :count)) expect(Question.first.transcriptions).to be_empty end end @@ -74,7 +74,7 @@ end it do - expect(Question.first.illustration.attached?).to eq true + expect(Question.first.illustration.attached?).to be true end end end @@ -115,10 +115,10 @@ end it "supprime l'illustration" do - expect(question.illustration.attached?).to eq true + expect(question.illustration.attached?).to be true click_on 'Enregistrer' question.reload - expect(question.illustration.attached?).to eq false + expect(question.illustration.attached?).to be false end end @@ -135,12 +135,12 @@ it "supprime l'audio" do expect( Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? - ).to eq true + ).to be true click_on 'Enregistrer' question.reload expect( Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? - ).to eq false + ).to be false end end @@ -157,12 +157,12 @@ it "supprime l'audio" do expect( Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? - ).to eq true + ).to be true click_on 'Enregistrer' question.reload expect( Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? - ).to eq false + ).to be false end end end diff --git a/spec/features/admin/questionnaire_spec.rb b/spec/features/admin/questionnaire_spec.rb index 40692df45..3f67a0cc8 100644 --- a/spec/features/admin/questionnaire_spec.rb +++ b/spec/features/admin/questionnaire_spec.rb @@ -21,7 +21,7 @@ end it do - expect { click_on 'Créer' }.to(change { Questionnaire.count }) + expect { click_on 'Créer' }.to(change(Questionnaire, :count)) expect(page).to have_content 'Evaluation Formation' end end diff --git a/spec/features/admin/reset_mot_de_passe_spec.rb b/spec/features/admin/reset_mot_de_passe_spec.rb index 2c90aa5de..cb43392a3 100644 --- a/spec/features/admin/reset_mot_de_passe_spec.rb +++ b/spec/features/admin/reset_mot_de_passe_spec.rb @@ -9,7 +9,7 @@ click_on 'Renvoyer les instructions de confirmation' end - it { expect(page.has_css?('#error_explanation')).to eq false } + it { expect(page.has_css?('#error_explanation')).to be false } end describe 'page modification du mot de passe' do @@ -24,7 +24,7 @@ click_on 'Valider mon nouveau mot de passe' end - it { expect(page.has_css?('#error_explanation')).to eq false } + it { expect(page.has_css?('#error_explanation')).to be false } end context 'avec un token invalide' do diff --git a/spec/features/admin/restitution_spec.rb b/spec/features/admin/restitution_spec.rb index 414a6c7d6..56b4f1391 100644 --- a/spec/features/admin/restitution_spec.rb +++ b/spec/features/admin/restitution_spec.rb @@ -61,6 +61,7 @@ end before { visit admin_restitution_path(partie) } + it { expect(page).to have_content('Nombre De Bonnes Réponses Numératie') } end @@ -75,8 +76,8 @@ it do within('#action_items_sidebar_section') { click_on 'Supprimer' } - expect(partie.reload.deleted?).to eq true - expect(evenements.first.reload.deleted?).to eq true + expect(partie.reload.deleted?).to be true + expect(evenements.first.reload.deleted?).to be true within('#main_content') { expect(page).to have_content 'John Doe' } end end diff --git a/spec/features/admin/session_spec.rb b/spec/features/admin/session_spec.rb index 28f6a9c55..9d45d2d5e 100644 --- a/spec/features/admin/session_spec.rb +++ b/spec/features/admin/session_spec.rb @@ -4,7 +4,7 @@ describe 'Session', type: :feature do describe 'Connexion Espace Pro' do - context 'Quand tout va bien' do + context 'quand tout va bien' do let!(:compte) { create :compte } it "Se connect à l'application" do @@ -23,7 +23,7 @@ end end - context 'Quand mon compte anlci a un mot de passe faible car les règles ont été remforcées' do + context 'quand mon compte anlci a un mot de passe faible car les règles ont été remforcées' do let!(:compte) do compte = create :compte, role: :superadmin # rubocop:disable Rails/SkipsModelValidations @@ -76,7 +76,7 @@ end end - context 'Quand mon compte est confirmé et existe' do + context 'quand mon compte est confirmé et existe' do let!(:compte_confirme) { create :compte, confirmed_at: Time.zone.now } it 'me connecte à mon espace pro' do @@ -87,7 +87,7 @@ end describe 'Connexion Espace Jeu' do - context 'Quand le code de campagne est invalide' do + context 'quand le code de campagne est invalide' do before do visit new_compte_session_path fill_in :code, with: 'invalide' diff --git a/spec/features/admin/situation_spec.rb b/spec/features/admin/situation_spec.rb index e2f4d6e29..ff41d7b0f 100644 --- a/spec/features/admin/situation_spec.rb +++ b/spec/features/admin/situation_spec.rb @@ -26,6 +26,6 @@ fill_in :situation_nom_technique, with: 'inventaire' end - it { expect { click_on 'Créer' }.to(change { Situation.count }) } + it { expect { click_on 'Créer' }.to(change(Situation, :count)) } end end diff --git a/spec/features/admin/structure_administrative_spec.rb b/spec/features/admin/structure_administrative_spec.rb index 3436569d4..2c2fc9deb 100644 --- a/spec/features/admin/structure_administrative_spec.rb +++ b/spec/features/admin/structure_administrative_spec.rb @@ -4,10 +4,10 @@ describe 'Admin - Structure administrative', type: :feature do let(:compte_courant) { create(:compte_superadmin) } - before { connecte(compte_courant) } - let!(:structure) { create :structure_administrative, :avec_admin, nom: 'Ma structure' } + before { connecte(compte_courant) } + describe 'index' do before { visit admin_structures_administratives_path } diff --git a/spec/features/admin/structure_locale_spec.rb b/spec/features/admin/structure_locale_spec.rb index eab1e1544..9dd1aa40e 100644 --- a/spec/features/admin/structure_locale_spec.rb +++ b/spec/features/admin/structure_locale_spec.rb @@ -85,6 +85,7 @@ describe 'avec un compte sans structure' do let(:compte) { create(:compte_conseiller, structure: nil) } + before { connecte(compte) } describe 'create' do diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 6b191a3d7..a427655c4 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -52,8 +52,7 @@ allow(ENV).to receive(:fetch).with('PROTOCOLE_SERVEUR').and_return('https') allow(ENV).to receive(:fetch).with('HOTE_STOCKAGE').and_return('stockage.eva.beta.gouv.fr') - allow(fichier).to receive(:filename).and_return('fichier.jpg') - allow(fichier).to receive(:key).and_return('ma_cle') + allow(fichier).to receive_messages(filename: 'fichier.jpg', key: 'ma_cle') end context 'en environnement de production' do diff --git a/spec/helpers/evaluation_helper_spec.rb b/spec/helpers/evaluation_helper_spec.rb index 8572723d5..99438064c 100644 --- a/spec/helpers/evaluation_helper_spec.rb +++ b/spec/helpers/evaluation_helper_spec.rb @@ -8,11 +8,11 @@ let(:profil_autre) { :profil_autre } it 'Retourne true si le profil renseigné est un niveau bas' do - expect(niveau_bas?(:profil1)).to eq true + expect(niveau_bas?(:profil1)).to be true end it "Retourne false si le profil renseigné n'est pas un niveau bas" do - expect(niveau_bas?(:profil_autre)).to eq false + expect(niveau_bas?(:profil_autre)).to be false end end end diff --git a/spec/integrations/ability_spec.rb b/spec/integrations/ability_spec.rb index 74d350846..f72a3f341 100644 --- a/spec/integrations/ability_spec.rb +++ b/spec/integrations/ability_spec.rb @@ -4,7 +4,7 @@ require 'cancan/matchers' describe Ability do - subject(:ability) { Ability.new(compte) } + subject(:ability) { described_class.new(compte) } let(:compte_superadmin) { create :compte_superadmin } let(:compte_charge_mission_regionale) do @@ -223,9 +223,11 @@ context 'Compte conseiller sans structure' do let(:compte) { create :compte_conseiller, structure: nil } + it { - is_expected.to be_able_to(:read, ActiveAdmin::Page.new(:admin, 'recherche_structure', {})) + expect(subject).to be_able_to(:read, ActiveAdmin::Page.new(:admin, 'recherche_structure', {})) } + it { is_expected.to be_able_to(:create, StructureLocale.new) } end @@ -288,9 +290,12 @@ it { is_expected.to be_able_to(:read, Actualite.new) } it { is_expected.to be_able_to(:read, ActiveAdmin::Page.new(:admin, 'Aide', {})) } it { is_expected.to be_able_to(:read, ActiveAdmin::Page.new(:admin, 'Dashboard', {})) } + it { - is_expected.not_to be_able_to(:read, ActiveAdmin::Page.new(:admin, 'recherche_structure', {})) + expect(subject).not_to be_able_to(:read, + ActiveAdmin::Page.new(:admin, 'recherche_structure', {})) } + it { is_expected.not_to be_able_to(:read, Beneficiaire) } context 'peut consulter les campagnes de ma structure' do diff --git a/spec/integrations/anonymisation/compte_spec.rb b/spec/integrations/anonymisation/compte_spec.rb index 6aa5a146c..d206a3256 100644 --- a/spec/integrations/anonymisation/compte_spec.rb +++ b/spec/integrations/anonymisation/compte_spec.rb @@ -12,7 +12,7 @@ end it 'anonymise le compte' do - Anonymisation::Compte.new(compte).anonymise + described_class.new(compte).anonymise compte.reload expect(compte.anonymise_le).not_to be_nil diff --git a/spec/integrations/anonymisation/structure_spec.rb b/spec/integrations/anonymisation/structure_spec.rb index 6325fb900..9ef9f6275 100644 --- a/spec/integrations/anonymisation/structure_spec.rb +++ b/spec/integrations/anonymisation/structure_spec.rb @@ -11,7 +11,7 @@ end it 'anonymise une structure' do - Anonymisation::Structure.new(structure).anonymise + described_class.new(structure).anonymise structure.reload expect(structure.anonymise_le).not_to be_nil @@ -32,7 +32,7 @@ end it 'anonymise une structure' do - Anonymisation::Structure.new(structure).anonymise + described_class.new(structure).anonymise structure.reload expect(structure.code_postal).to eql('non_communique') diff --git a/spec/integrations/campagne_spec.rb b/spec/integrations/campagne_spec.rb index 83f4fd29e..617e7972d 100644 --- a/spec/integrations/campagne_spec.rb +++ b/spec/integrations/campagne_spec.rb @@ -12,8 +12,8 @@ it 'supprime les dépendances' do expect do campagne.destroy - end.to change { described_class.count }.by(-1) - .and change { SituationConfiguration.count }.by(-1) + end.to change(described_class, :count).by(-1) + .and change(SituationConfiguration, :count).by(-1) end end @@ -66,7 +66,7 @@ it "crée la campagne dans l'ordre des situations optionnelles" do expect do campagne - end.to change { described_class.count }.by(1) + end.to change(described_class, :count).by(1) campagne.reload situations_configurations = campagne.situations_configurations.includes(:situation) @@ -81,7 +81,7 @@ it 'utilise le questionnaire livraison avec redaction' do expect do campagne - end.to change { described_class.count }.by(1) + end.to change(described_class, :count).by(1) campagne.reload situations_configurations = campagne.situations_configurations @@ -103,7 +103,7 @@ it 'utilise le questionnaire sociodemographique_autopositionnement' do expect do campagne - end.to change { described_class.count }.by(1) + end.to change(described_class, :count).by(1) campagne.reload diff --git a/spec/integrations/fabrique_restitution_spec.rb b/spec/integrations/fabrique_restitution_spec.rb index 70447b125..c5f52f15c 100644 --- a/spec/integrations/fabrique_restitution_spec.rb +++ b/spec/integrations/fabrique_restitution_spec.rb @@ -23,7 +23,7 @@ let!(:fin) { create(:evenement_fin_situation, partie: partie, position: 3) } it 'trie les événéments par position' do - restitution = FabriqueRestitution.instancie(partie) + restitution = described_class.instancie(partie) expect(restitution.evenements).to eq [demarrage, reponse1, reponse2, fin] end end @@ -39,14 +39,14 @@ end it 'trie les événéments par date' do - restitution = FabriqueRestitution.instancie(partie) + restitution = described_class.instancie(partie) expect(restitution.evenements).to eq [demarrage, reponse, fin] end end end it "instancie les restitution des parties de l'évaluation" do - restitutions = FabriqueRestitution.restitution_globale(evaluation).restitutions + restitutions = described_class.restitution_globale(evaluation).restitutions expect(restitutions.map(&:partie)).to eq [partie] end @@ -58,7 +58,7 @@ create(:evenement_demarrage, partie: partie_intrue) end - it { expect(FabriqueRestitution.restitution_globale(evaluation).restitutions.count).to eq 1 } + it { expect(described_class.restitution_globale(evaluation).restitutions.count).to eq 1 } end context "quand il n'y a pas d'évenement pour une partie, n'instancie pas la restitution" do @@ -70,7 +70,7 @@ end it do - restitutions = FabriqueRestitution.restitution_globale(evaluation).restitutions + restitutions = described_class.restitution_globale(evaluation).restitutions expect(restitutions.map(&:partie)).to eq [partie] end end @@ -92,7 +92,7 @@ end it 'utilise la première partie pour la restitution globale' do - restitutions = FabriqueRestitution.restitution_globale(evaluation).restitutions + restitutions = described_class.restitution_globale(evaluation).restitutions expect(restitutions[1].partie).to eq partie1 end end @@ -104,7 +104,7 @@ end it 'utilise cette partie pour la restitution globale' do - restitutions = FabriqueRestitution.restitution_globale(evaluation).restitutions + restitutions = described_class.restitution_globale(evaluation).restitutions expect(restitutions[1].partie).to eq partie2 end end @@ -116,7 +116,7 @@ end it 'utilise la première partie pour la restitution globale' do - restitutions = FabriqueRestitution.restitution_globale(evaluation).restitutions + restitutions = described_class.restitution_globale(evaluation).restitutions expect(restitutions[1].partie).to eq partie1 end end diff --git a/spec/integrations/situation_configuration_spec.rb b/spec/integrations/situation_configuration_spec.rb index de64dcf10..6fcb8c0a0 100644 --- a/spec/integrations/situation_configuration_spec.rb +++ b/spec/integrations/situation_configuration_spec.rb @@ -17,11 +17,11 @@ describe '#ids_situations' do it "retourne les ids des situations d'une campagne pour les noms techniques" do - expect(SituationConfiguration.ids_situations(campagne.id, ['livraison'])) + expect(described_class.ids_situations(campagne.id, ['livraison'])) .to eql([livraison.id]) - expect(SituationConfiguration.ids_situations(campagne.id, %w[livraison maintenance])) + expect(described_class.ids_situations(campagne.id, %w[livraison maintenance])) .to eql([livraison.id, maintenance.id]) - expect(SituationConfiguration.ids_situations(campagne.id, ['controle'])).to eql([]) + expect(described_class.ids_situations(campagne.id, ['controle'])).to eql([]) end end end diff --git a/spec/integrations/structure_spec.rb b/spec/integrations/structure_spec.rb index 0fe2f373e..4734d0f7d 100644 --- a/spec/integrations/structure_spec.rb +++ b/spec/integrations/structure_spec.rb @@ -8,7 +8,7 @@ let!(:structure) { create :structure_locale } context 'sans aucune campagne' do - it { expect(Structure.sans_campagne.count).to eq 1 } + it { expect(described_class.sans_campagne.count).to eq 1 } end context 'avec au moins une campagne' do @@ -17,7 +17,7 @@ create :campagne, compte: compte end - it { expect(Structure.sans_campagne.count).to eq 0 } + it { expect(described_class.sans_campagne.count).to eq 0 } end end @@ -32,13 +32,18 @@ cree_evaluations_pour_structure(structure_utilisatrice) end - it { expect(Structure.pas_vraiment_utilisatrices).to include structure_pas_utilisatrice } - it { expect(Structure.pas_vraiment_utilisatrices).not_to include structure_utilisatrice } + it { + expect(described_class.pas_vraiment_utilisatrices).to include structure_pas_utilisatrice + } + + it { + expect(described_class.pas_vraiment_utilisatrices).not_to include structure_utilisatrice + } end context "quand ma structure n'a pas de campagne" do it do - expect(Structure.pas_vraiment_utilisatrices).not_to include(structure_pas_utilisatrice) + expect(described_class.pas_vraiment_utilisatrices).not_to include(structure_pas_utilisatrice) end end end @@ -52,8 +57,8 @@ cree_evaluations_pour_structure structure_activee, nombre_evaluations: 4 end - it { expect(Structure.non_activees).to include structure_non_activee } - it { expect(Structure.non_activees).not_to include structure_activee } + it { expect(described_class.non_activees).to include structure_non_activee } + it { expect(described_class.non_activees).not_to include structure_activee } end describe '.activees' do @@ -63,7 +68,7 @@ cree_evaluations_pour_structure structure_activee, nombre_evaluations: 4 end - it { expect(Structure.activees).to include structure_activee } + it { expect(described_class.activees).to include structure_activee } end describe '.inactives' do @@ -83,8 +88,8 @@ ) end - it { expect(Structure.inactives).to include structure_inactivee } - it { expect(Structure.inactives).not_to include structure_activee } + it { expect(described_class.inactives).to include structure_inactivee } + it { expect(described_class.inactives).not_to include structure_activee } end describe '.abandonnistes' do @@ -98,7 +103,7 @@ ) end - it { expect(Structure.abandonnistes).to include structure_abandonnee } + it { expect(described_class.abandonnistes).to include structure_abandonnee } end describe '.avec_nombre_evaluations_et_date_derniere_evaluation' do @@ -114,8 +119,8 @@ end let(:structures) do - Structure.avec_nombre_evaluations_et_date_derniere_evaluation - .order(:created_at) + described_class.avec_nombre_evaluations_et_date_derniere_evaluation + .order(:created_at) end it do diff --git a/spec/jobs/anonymisation_beneficiaires_job_spec.rb b/spec/jobs/anonymisation_beneficiaires_job_spec.rb index 808b20f0b..890bf1b18 100644 --- a/spec/jobs/anonymisation_beneficiaires_job_spec.rb +++ b/spec/jobs/anonymisation_beneficiaires_job_spec.rb @@ -8,7 +8,7 @@ ancienne_evaluation = create :evaluation, created_at: 2.years.ago, beneficiaire: beneficiaire evaluation_recente = create :evaluation, created_at: 11.months.ago, beneficiaire: beneficiaire - AnonymisationBeneficiairesJob.perform_now + described_class.perform_now ancienne_evaluation.reload evaluation_recente.reload @@ -22,7 +22,7 @@ ancienne_evaluation = create :evaluation, created_at: 2.years.ago, beneficiaire: beneficiaire evaluation_recente = create :evaluation, created_at: 16.months.ago, beneficiaire: beneficiaire - AnonymisationBeneficiairesJob.perform_now + described_class.perform_now ancienne_evaluation.reload evaluation_recente.reload @@ -39,7 +39,7 @@ evaluation_recente = create :evaluation, created_at: 16.months.ago, beneficiaire: beneficiaire, anonymise_le: date_anonymisation - AnonymisationBeneficiairesJob.perform_now + described_class.perform_now ancienne_evaluation.reload evaluation_recente.reload diff --git a/spec/jobs/anonymisation_evaluations_job_spec.rb b/spec/jobs/anonymisation_evaluations_job_spec.rb index d9910670e..8fac1a783 100644 --- a/spec/jobs/anonymisation_evaluations_job_spec.rb +++ b/spec/jobs/anonymisation_evaluations_job_spec.rb @@ -10,7 +10,7 @@ created_at: 2.years.ago, nom: 'deja anonymise' - AnonymisationEvaluationsJob.perform_now + described_class.perform_now ancienne_evaluation.reload evaluation_recente.reload diff --git a/spec/jobs/notification_admin_comptes_en_attente_job_spec.rb b/spec/jobs/notification_admin_comptes_en_attente_job_spec.rb index cb9e6ff1f..511391b8e 100644 --- a/spec/jobs/notification_admin_comptes_en_attente_job_spec.rb +++ b/spec/jobs/notification_admin_comptes_en_attente_job_spec.rb @@ -10,7 +10,7 @@ it "envoie un mail hebdomadairement pour relancer l'admin" do expect do - NotificationAdminComptesEnAttenteJob.perform_now + described_class.perform_now end.to change { ActionMailer::Base.deliveries.count }.by(1) end end diff --git a/spec/jobs/persiste_metriques_partie_job_spec.rb b/spec/jobs/persiste_metriques_partie_job_spec.rb index 064345b23..e3eed7631 100644 --- a/spec/jobs/persiste_metriques_partie_job_spec.rb +++ b/spec/jobs/persiste_metriques_partie_job_spec.rb @@ -10,7 +10,7 @@ it "persiste les métriques d'une partie" do expect(FabriqueRestitution).to receive(:instancie).with(partie).and_return restitution expect(restitution).to receive(:persiste) - expect { PersisteMetriquesPartieJob.perform_now(partie) } + expect { described_class.perform_now(partie) } .to have_enqueued_job(PersisteRestitutionJob).exactly(1) end end diff --git a/spec/jobs/persiste_restitution_job_spec.rb b/spec/jobs/persiste_restitution_job_spec.rb index a2c9d025f..b0577652a 100644 --- a/spec/jobs/persiste_restitution_job_spec.rb +++ b/spec/jobs/persiste_restitution_job_spec.rb @@ -11,6 +11,6 @@ .with(evaluation) .and_return restitution expect(restitution).to receive(:persiste) - PersisteRestitutionJob.perform_now(evaluation) + described_class.perform_now(evaluation) end end diff --git a/spec/jobs/relance_structure_sans_campagne_job_spec.rb b/spec/jobs/relance_structure_sans_campagne_job_spec.rb index a9de8943e..b83eab830 100644 --- a/spec/jobs/relance_structure_sans_campagne_job_spec.rb +++ b/spec/jobs/relance_structure_sans_campagne_job_spec.rb @@ -10,7 +10,7 @@ context "quand la structure n'a pas de campagne" do it 'envoie un email pour relancer uniquement les admins' do expect do - RelanceStructureSansCampagneJob.perform_now(compte_admin.structure_id) + described_class.perform_now(compte_admin.structure_id) end.to change { ActionMailer::Base.deliveries.count }.by(2) end end @@ -20,8 +20,8 @@ it "n'envoie pas de mail pour relancer l'admin" do expect do - RelanceStructureSansCampagneJob.perform_now(compte_admin.structure_id) - end.to change { ActionMailer::Base.deliveries.count }.by(0) + described_class.perform_now(compte_admin.structure_id) + end.not_to(change { ActionMailer::Base.deliveries.count }) end end end diff --git a/spec/jobs/relance_utilisateur_pour_non_activation_job_spec.rb b/spec/jobs/relance_utilisateur_pour_non_activation_job_spec.rb index 8236d941f..9cf14f990 100644 --- a/spec/jobs/relance_utilisateur_pour_non_activation_job_spec.rb +++ b/spec/jobs/relance_utilisateur_pour_non_activation_job_spec.rb @@ -8,7 +8,7 @@ context "quand le compte n'a pas de campagne" do it "envoie un email pour relancer l'utilisateur" do expect do - RelanceUtilisateurPourNonActivationJob.perform_now(compte.id) + described_class.perform_now(compte.id) end.to change { ActionMailer::Base.deliveries.count }.by(2) end end @@ -18,7 +18,7 @@ it "envoie un email pour relancer l'utilisateur" do expect do - RelanceUtilisateurPourNonActivationJob.perform_now(compte.id) + described_class.perform_now(compte.id) end.to change { ActionMailer::Base.deliveries.count }.by(2) end end @@ -30,8 +30,8 @@ it 'ne fais rien' do expect do - RelanceUtilisateurPourNonActivationJob.perform_now(compte.id) - end.to change { ActionMailer::Base.deliveries.count }.by(0) + described_class.perform_now(compte.id) + end.not_to(change { ActionMailer::Base.deliveries.count }) end end @@ -44,8 +44,8 @@ it 'ne fais rien' do expect do - RelanceUtilisateurPourNonActivationJob.perform_now(compte.id) - end.to change { ActionMailer::Base.deliveries.count }.by(0) + described_class.perform_now(compte.id) + end.not_to(change { ActionMailer::Base.deliveries.count }) end end @@ -53,8 +53,8 @@ it do id_compte_supprime = 1 expect do - RelanceUtilisateurPourNonActivationJob.perform_now(id_compte_supprime) - end.to change { ActionMailer::Base.deliveries.count }.by(0) + described_class.perform_now(id_compte_supprime) + end.not_to(change { ActionMailer::Base.deliveries.count }) end end end diff --git a/spec/jobs/structure/assigne_job_spec.rb b/spec/jobs/structure/assigne_job_spec.rb index e4a106152..85fde3079 100644 --- a/spec/jobs/structure/assigne_job_spec.rb +++ b/spec/jobs/structure/assigne_job_spec.rb @@ -14,7 +14,7 @@ mock_reponse_typhoeus('https://geo.api.gouv.fr/regions/11', { nom: 'Île-de-France' }) - Structure::AssigneRegionJob.perform_now + described_class.perform_now end it { expect(structure.reload.region).to eq 'Île-de-France' } diff --git a/spec/lib/generateur_aleatoire_spec.rb b/spec/lib/generateur_aleatoire_spec.rb index 52b36bb16..4b8a18eab 100644 --- a/spec/lib/generateur_aleatoire_spec.rb +++ b/spec/lib/generateur_aleatoire_spec.rb @@ -5,23 +5,23 @@ describe GenerateurAleatoire do describe '#majuscules' do it 'permet de choisir la longueur' do - chaine_generee = GenerateurAleatoire.majuscules 15 + chaine_generee = described_class.majuscules 15 expect(chaine_generee.size).to eq 15 end it 'génère des résultats différents à chaque appel' do - generation1 = GenerateurAleatoire.majuscules 10 - generation2 = GenerateurAleatoire.majuscules 10 + generation1 = described_class.majuscules 10 + generation2 = described_class.majuscules 10 expect(generation1).not_to eq generation2 end it 'contient uniquement des lettres majuscules' do - chaine_generee = GenerateurAleatoire.majuscules 20 + chaine_generee = described_class.majuscules 20 expect(chaine_generee.upcase).to eq chaine_generee end it 'ne contient pas de lettre en double' do - chaine_generee = GenerateurAleatoire.majuscules 26 + chaine_generee = described_class.majuscules 26 expect(chaine_generee.chars.uniq.size).to eq 26 end end diff --git a/spec/lib/importeur_commentaires_spec.rb b/spec/lib/importeur_commentaires_spec.rb index 4cf60419c..93447b769 100644 --- a/spec/lib/importeur_commentaires_spec.rb +++ b/spec/lib/importeur_commentaires_spec.rb @@ -19,8 +19,8 @@ it do expect(logger).to receive(:info) .with('Importe : mon-conseiller@milo.fr,Mon utilisation,') - expect { ImporteurCommentaires.importe(ligne, evabot) } - .to(change { ActiveAdmin::Comment.count }) + expect { described_class.importe(ligne, evabot) } + .to(change(ActiveAdmin::Comment, :count)) commentaire = ActiveAdmin::Comment.last expect(commentaire.resource).to eq structure expect(commentaire.body).to eq 'utilisation_eva : Mon utilisation' @@ -29,7 +29,7 @@ context 'importe les notes' do let(:ligne) { { notes: 'Mes notes', mail: 'mon-conseiller@milo.fr' } } - before { ImporteurCommentaires.importe(ligne, evabot) } + before { described_class.importe(ligne, evabot) } it { expect(ActiveAdmin::Comment.last.body).to eq 'notes : Mes notes' } end @@ -39,17 +39,17 @@ it do expect(logger).to receive(:info).exactly(0).times - expect { ImporteurCommentaires.importe(ligne, evabot) } - .not_to(change { ActiveAdmin::Comment.count }) + expect { described_class.importe(ligne, evabot) } + .not_to(change(ActiveAdmin::Comment, :count)) end end context 'ne duplique pas les commentaires pour permettre de réimporter si besoin' do - before { ImporteurCommentaires.importe(ligne, evabot) } + before { described_class.importe(ligne, evabot) } it do - expect { ImporteurCommentaires.importe(ligne, evabot) } - .not_to(change { ActiveAdmin::Comment.count }) + expect { described_class.importe(ligne, evabot) } + .not_to(change(ActiveAdmin::Comment, :count)) end end end @@ -60,8 +60,8 @@ it do expect(logger).to receive(:warn) .with('Commentaire ignoré pour le compte inconnu : inconnu@milo.fr,Mon usage,une note') - expect { ImporteurCommentaires.importe(ligne, evabot) } - .not_to(change { ActiveAdmin::Comment.count }) + expect { described_class.importe(ligne, evabot) } + .not_to(change(ActiveAdmin::Comment, :count)) end end end diff --git a/spec/lib/importeur_telephone_spec.rb b/spec/lib/importeur_telephone_spec.rb index e5d49addb..e1e2bde5f 100644 --- a/spec/lib/importeur_telephone_spec.rb +++ b/spec/lib/importeur_telephone_spec.rb @@ -16,7 +16,7 @@ it do expect(logger).to receive(:info) .with('Importe : conseiller@eva.fr,01-02-03-04-05') - ImporteurTelephone.importe(ligne) + described_class.importe(ligne) expect(compte.reload.telephone).to eq '01-02-03-04-05' end end @@ -27,7 +27,7 @@ it do expect(logger).to receive(:warn) .with('conseiller@eva.fr: téléphone 01 01 01 02 02 déjà présent; 01-02-03-04-05 ignoré') - ImporteurTelephone.importe(ligne) + described_class.importe(ligne) expect(compte.reload.telephone).to eq '01 01 01 02 02' end end @@ -39,7 +39,7 @@ it do expect(logger).to receive(:warn) .with('Téléphone ignoré pour le compte inconnu : inconnu@eva.fr - 02 03 04 05 06') - ImporteurTelephone.importe(ligne) + described_class.importe(ligne) end end end diff --git a/spec/mailers/compte_mailer_spec.rb b/spec/mailers/compte_mailer_spec.rb index 611630156..4c278d7ad 100644 --- a/spec/mailers/compte_mailer_spec.rb +++ b/spec/mailers/compte_mailer_spec.rb @@ -8,7 +8,7 @@ structure = StructureLocale.new nom: 'Ma Super Structure', code_postal: '75012' compte = Compte.new prenom: 'Paule', email: 'debut@test.com', structure: structure - email = CompteMailer.with(compte: compte).nouveau_compte + email = described_class.with(compte: compte).nouveau_compte assert_emails 1 do email.deliver_now @@ -39,8 +39,8 @@ email: 'debut@test.com', structure: structure, id: SecureRandom.uuid - email = CompteMailer.with(compte: compte, compte_admin: admin) - .alerte_admin + email = described_class.with(compte: compte, compte_admin: admin) + .alerte_admin assert_emails 1 do email.deliver_now @@ -61,7 +61,7 @@ describe 'relance' do let(:structure) { StructureLocale.new nom: 'Ma Super Structure', code_postal: '75012' } let(:compte) { Compte.new prenom: 'Paule', email: 'debut@test.com', structure: structure } - let(:mail) { CompteMailer.with(compte: compte).relance } + let(:mail) { described_class.with(compte: compte).relance } it 'renders the headers' do expect(mail.subject).to eq( diff --git a/spec/mailers/structure_spec.rb b/spec/mailers/structure_spec.rb index 16a8d5aca..a526322bf 100644 --- a/spec/mailers/structure_spec.rb +++ b/spec/mailers/structure_spec.rb @@ -9,7 +9,7 @@ describe '#nouvelle_structure' do it "envoie un email pour informer de la création d'une structure" do - email = StructureMailer.with(compte: compte, structure: structure).nouvelle_structure + email = described_class.with(compte: compte, structure: structure).nouvelle_structure assert_emails 1 do email.deliver_now @@ -29,7 +29,7 @@ describe '#relance_creation_campagne' do it 'envoie un email de relance pour inciter à créer une campagne' do - email = StructureMailer.with(compte_admin: compte).relance_creation_campagne + email = described_class.with(compte_admin: compte).relance_creation_campagne assert_emails 1 do email.deliver_now diff --git a/spec/models/campagne_spec.rb b/spec/models/campagne_spec.rb index b5dde6920..80d34b10d 100644 --- a/spec/models/campagne_spec.rb +++ b/spec/models/campagne_spec.rb @@ -20,12 +20,14 @@ end it "Ne retourne pas d'erreur PostgreSQL" do - expect(campagne.save).to eq false + expect(campagne.save).to be false end end describe 'scopes' do describe '.de_la_structure' do + subject(:campagnes) { described_class.de_la_structure(compte.structure) } + let(:compte) { create :compte } let(:autre_compte) { create :compte } let(:autre_campagne) { create :campagne, compte: autre_compte } @@ -42,8 +44,6 @@ created_at: Time.zone.local(2020, 1, 1, 12, 0, 20) end - subject(:campagnes) { described_class.de_la_structure(compte.structure) } - it "retourne les campagnes d'une structure par ordre d'activité" do expect(campagnes.all.map(&:libelle)).to eql ['active', 'moins active', 'non active'] end @@ -59,7 +59,7 @@ end describe '#questionnaire_pour' do - let(:campagne) { Campagne.new } + let(:campagne) { described_class.new } let(:situation) { Situation.new } def bouchonne_config_situation(situation_configuration) @@ -69,6 +69,7 @@ def bouchonne_config_situation(situation_configuration) context 'sans configuration pour la situation' do let(:questionnaire_par_default) { double } + before do bouchonne_config_situation(nil) allow(situation).to receive(:questionnaire).and_return(questionnaire_par_default) @@ -88,7 +89,7 @@ def bouchonne_config_situation(situation_configuration) end describe '#avec_competences_transversales?' do - let(:campagne) { Campagne.new } + let(:campagne) { described_class.new } let(:maintenance) { create :situation, nom_technique: :maintenance } context 'sans situation' do @@ -120,6 +121,7 @@ def bouchonne_config_situation(situation_configuration) describe '#genere_code_unique' do let(:compte) { create :compte } let(:campagne) { build :campagne, compte: compte, code: nil } + before do allow(GenerateurAleatoire).to receive(:majuscules).with(3).and_return 'XXX' end diff --git a/spec/models/choix_spec.rb b/spec/models/choix_spec.rb index c45f27c1c..2ffc76138 100644 --- a/spec/models/choix_spec.rb +++ b/spec/models/choix_spec.rb @@ -22,7 +22,7 @@ describe 'validations' do let(:choix) do - Choix.new(intitule: 'intitule', type_choix: :bon, nom_technique: 'nom_technique') + described_class.new(intitule: 'intitule', type_choix: :bon, nom_technique: 'nom_technique') end it 'ne valide pas un audio de type wav' do @@ -31,7 +31,7 @@ expect(choix.valid?).to be(false) expect(choix.errors[:audio]).to include('doit être un fichier MP3 ou MP4') choix.save - expect(choix.audio).to_not be_attached + expect(choix.audio).not_to be_attached end it 'valide un audio de type mp3' do diff --git a/spec/models/compte_spec.rb b/spec/models/compte_spec.rb index b031b381f..8360264e6 100644 --- a/spec/models/compte_spec.rb +++ b/spec/models/compte_spec.rb @@ -22,13 +22,14 @@ context 'quand un compte a été soft-delete' do let(:compte) { build :compte, email: 'mon-email-supprime@example.com' } + before do autre_compte = create :compte, email: 'mon-email-supprime@example.com' autre_compte.destroy end it "Peut ré-utiliser l'adresse email d'un compte effacé" do - expect(compte.save).to eq true + expect(compte.save).to be true end end @@ -57,7 +58,7 @@ end describe "validation DNS de l'email" do - let(:compte) { Compte.new email: 'email@example.com' } + let(:compte) { described_class.new email: 'email@example.com' } before do allow(compte).to receive(:email_changed?).and_return(true) @@ -71,32 +72,34 @@ end context "quand l'email est invalide" do - before { allow(Truemail).to receive(:valid?).with('email@example.com').and_return(false) } - - before { compte.valid? } + before do + allow(Truemail).to receive(:valid?).with('email@example.com').and_return(false) + compte.valid? + end it { expect(compte.errors[:email]).to include(I18n.t('errors.messages.invalid')) } end context "quand l'email du compte n'est pas modifié" do - before { allow(compte).to receive(:email_changed?).and_return(false) } - - before { compte.valid? } + before do + allow(compte).to receive(:email_changed?).and_return(false) + compte.valid? + end it { expect(Truemail).not_to have_received(:valid?).with('email@example.com') } end end describe '#au_moins_admin?' do - it { expect(Compte.new(role: 'superadmin').au_moins_admin?).to be(true) } - it { expect(Compte.new(role: 'admin').au_moins_admin?).to be(true) } - it { expect(Compte.new(role: 'compte_generique').au_moins_admin?).to be(true) } - it { expect(Compte.new(role: 'conseiller').au_moins_admin?).to be(false) } + it { expect(described_class.new(role: 'superadmin').au_moins_admin?).to be(true) } + it { expect(described_class.new(role: 'admin').au_moins_admin?).to be(true) } + it { expect(described_class.new(role: 'compte_generique').au_moins_admin?).to be(true) } + it { expect(described_class.new(role: 'conseiller').au_moins_admin?).to be(false) } end describe '#rejoindre_structure' do let(:structure) { Structure.new } - let(:compte) { Compte.new statut_validation: nil, role: nil } + let(:compte) { described_class.new statut_validation: nil, role: nil } before do allow(compte).to receive(:autres_admins?).and_return(true) @@ -110,7 +113,7 @@ describe "verifie la présence d'un admin" do let(:structure) { Structure.new } - let(:compte) { Compte.new role: 'admin', structure: structure } + let(:compte) { described_class.new role: 'admin', structure: structure } before do allow(compte).to receive(:verifie_dns_email).and_return(true) @@ -164,7 +167,7 @@ describe '#assigne_role_admin_si_pas_d_admin' do let(:structure) { Structure.new } - let(:compte) { Compte.new role: 'conseiller' } + let(:compte) { described_class.new role: 'conseiller' } context 'quand il y a un autre admins dans la structure' do before do diff --git a/spec/models/donnees_sociodemographique_spec.rb b/spec/models/donnees_sociodemographique_spec.rb index a85b0312b..693c8c9a6 100644 --- a/spec/models/donnees_sociodemographique_spec.rb +++ b/spec/models/donnees_sociodemographique_spec.rb @@ -4,25 +4,28 @@ describe DonneeSociodemographique, type: :model do it { is_expected.to belong_to(:evaluation) } + it do subject.evaluation = create(:evaluation) - is_expected.to validate_uniqueness_of(:evaluation_id).case_insensitive + expect(subject).to validate_uniqueness_of(:evaluation_id).case_insensitive end it do genres = DonneeSociodemographique::GENRES.zip(DonneeSociodemographique::GENRES).to_h - is_expected.to define_enum_for(:genre).with_values(genres) - .backed_by_column_of_type(:string) + expect(subject).to define_enum_for(:genre).with_values(genres) + .backed_by_column_of_type(:string) end + it do niveaux_etudes = DonneeSociodemographique::NIVEAUX_ETUDES .zip(DonneeSociodemographique::NIVEAUX_ETUDES).to_h - is_expected.to define_enum_for(:dernier_niveau_etude).with_values(niveaux_etudes) - .backed_by_column_of_type(:string) + expect(subject).to define_enum_for(:dernier_niveau_etude).with_values(niveaux_etudes) + .backed_by_column_of_type(:string) end + it do situations = DonneeSociodemographique::SITUATIONS.zip(DonneeSociodemographique::SITUATIONS).to_h - is_expected.to define_enum_for(:derniere_situation).with_values(situations) - .backed_by_column_of_type(:string) + expect(subject).to define_enum_for(:derniere_situation).with_values(situations) + .backed_by_column_of_type(:string) end end diff --git a/spec/models/evaluation_spec.rb b/spec/models/evaluation_spec.rb index 86858b7f5..b18a90c5e 100644 --- a/spec/models/evaluation_spec.rb +++ b/spec/models/evaluation_spec.rb @@ -8,11 +8,11 @@ it { is_expected.to validate_presence_of :statut } it { is_expected.to belong_to :campagne } it { is_expected.to belong_to(:responsable_suivi).optional } - it { should accept_nested_attributes_for :beneficiaire } + it { is_expected.to accept_nested_attributes_for :beneficiaire } it { is_expected.to have_one :conditions_passation } - it { should accept_nested_attributes_for :conditions_passation } + it { is_expected.to accept_nested_attributes_for :conditions_passation } it { is_expected.to have_one :donnee_sociodemographique } - it { should accept_nested_attributes_for :donnee_sociodemographique } + it { is_expected.to accept_nested_attributes_for :donnee_sociodemographique } describe 'scopes' do describe '.des_12_derniers_mois' do @@ -20,7 +20,7 @@ Timecop.freeze(Time.zone.local(2023, 1, 10, 12, 0, 0)) do Timecop.freeze(Time.zone.local(2023, 1, 1, 0, 0, 0)) { create(:evaluation) } - expect(Evaluation.des_12_derniers_mois.count).to eq 0 + expect(described_class.des_12_derniers_mois.count).to eq 0 end end @@ -28,7 +28,7 @@ Timecop.freeze(Time.zone.local(2023, 1, 10, 12, 0, 0)) do Timecop.freeze(Time.zone.local(2022, 12, 31, 23, 59, 59)) { create(:evaluation) } - expect(Evaluation.des_12_derniers_mois.count).to eq 1 + expect(described_class.des_12_derniers_mois.count).to eq 1 end end @@ -36,7 +36,7 @@ Timecop.freeze(Time.zone.local(2023, 1, 10, 12, 0, 0)) do Timecop.freeze(Time.zone.local(2022, 1, 1, 0, 0, 0)) { create(:evaluation) } - expect(Evaluation.des_12_derniers_mois.count).to eq 1 + expect(described_class.des_12_derniers_mois.count).to eq 1 end end @@ -44,7 +44,7 @@ Timecop.freeze(Time.zone.local(2023, 1, 10, 12, 0, 0)) do Timecop.freeze(Time.zone.local(2021, 12, 31, 23, 59, 59)) { create(:evaluation) } - expect(Evaluation.des_12_derniers_mois.count).to eq 0 + expect(described_class.des_12_derniers_mois.count).to eq 0 end end end @@ -109,7 +109,7 @@ before { evaluation.enregistre_mise_en_action(false) } it 'met à jour la réponse mais pas la date de mise en action' do - expect(evaluation.reload.mise_en_action.effectuee).to eq false + expect(evaluation.reload.mise_en_action.effectuee).to be false expect(evaluation.reload.mise_en_action.repondue_le).to eq date_mise_en_action end end @@ -122,13 +122,13 @@ Timecop.freeze(date_du_jour) do evaluation.enregistre_mise_en_action(true) end - expect(evaluation.mise_en_action.effectuee).to eq true + expect(evaluation.mise_en_action.effectuee).to be true expect(evaluation.mise_en_action.repondue_le).to eq date_du_jour end it 'créé et enregistre false en réponse' do evaluation.enregistre_mise_en_action(false) - expect(evaluation.mise_en_action.effectuee).to eq false + expect(evaluation.mise_en_action.effectuee).to be false end end end @@ -137,20 +137,20 @@ context "quand aucune mise en action n'est associée à l'évaluation" do let!(:evaluation) { create :evaluation } - it { expect(evaluation.a_mise_en_action?).to eq false } + it { expect(evaluation.a_mise_en_action?).to be false } end context "quand une mise en action est associée à l'évaluation" do context 'quand la mise en action a été effectué' do let!(:evaluation) { create :evaluation, :avec_mise_en_action } - it { expect(evaluation.a_mise_en_action?).to eq true } + it { expect(evaluation.a_mise_en_action?).to be true } end context "quand la mise en action n'a pas été effectué" do let!(:evaluation) { create :evaluation, :avec_mise_en_action, effectuee: false } - it { expect(evaluation.reload.a_mise_en_action?).to eq true } + it { expect(evaluation.reload.a_mise_en_action?).to be true } end end end diff --git a/spec/models/evenement_spec.rb b/spec/models/evenement_spec.rb index 6f79a2fc9..6258ce7bc 100644 --- a/spec/models/evenement_spec.rb +++ b/spec/models/evenement_spec.rb @@ -17,12 +17,12 @@ describe '#fin_situation?' do it "retourne true quand le nom de l'évènement est 'finSituation'" do - evenement = Evenement.new nom: 'finSituation' + evenement = described_class.new nom: 'finSituation' expect(evenement.fin_situation?).to be true end it "retourne false quand le nom de l'évènement n'est pas 'finSituation'" do - evenement = Evenement.new nom: 'autre' + evenement = described_class.new nom: 'autre' expect(evenement.fin_situation?).to be false end end diff --git a/spec/models/fabrique_evenement_spec.rb b/spec/models/fabrique_evenement_spec.rb index b90c88edb..1d0ddd46e 100644 --- a/spec/models/fabrique_evenement_spec.rb +++ b/spec/models/fabrique_evenement_spec.rb @@ -25,7 +25,7 @@ describe '#call' do it 'crée une partie et un évènement' do expect do - FabriqueEvenement.new(parametres).call + described_class.new(parametres).call end.to change(Partie, :count) .by(1) .and change(Evenement, :count) @@ -33,7 +33,7 @@ end it "retourne l'évènement" do - expect(FabriqueEvenement.new(parametres).call).to be_an_instance_of Evenement + expect(described_class.new(parametres).call).to be_an_instance_of Evenement end context "quand l'évènement est une fin de situation" do @@ -41,7 +41,7 @@ it 'programme un job pour assigner les métriques à la partie' do expect do - FabriqueEvenement.new(parametres).call + described_class.new(parametres).call end.to have_enqueued_job(PersisteMetriquesPartieJob).exactly(1) end end @@ -51,7 +51,7 @@ it 'ne programme pas de job pour assigner les métriques à la partie' do expect do - FabriqueEvenement.new(parametres).call + described_class.new(parametres).call end.to have_enqueued_job(PersisteMetriquesPartieJob).exactly(0) end end @@ -65,7 +65,7 @@ it 'crée un évènement' do expect do - FabriqueEvenement.new(parametres).call + described_class.new(parametres).call end.to change(Partie, :count) .by(0) .and change(Evenement, :count) @@ -89,7 +89,7 @@ it 'ne crée rien' do expect do - expect(FabriqueEvenement.new(parametres_invalide).call).to be_nil + expect(described_class.new(parametres_invalide).call).to be_nil end.to change(Partie, :count) .by(0) .and change(Evenement, :count) @@ -112,9 +112,9 @@ end it 'ne crée rien' do - FabriqueEvenement.new(parametres).call + described_class.new(parametres).call expect do - expect(FabriqueEvenement.new(parametres_invalide).call).to be_nil + expect(described_class.new(parametres_invalide).call).to be_nil end.to change(Partie, :count) .by(0) .and change(Evenement, :count) @@ -136,7 +136,7 @@ it 'la partie est quand même créée' do expect do - expect(FabriqueEvenement.new(parametres_invalide).call.persisted?).to be false + expect(described_class.new(parametres_invalide).call.persisted?).to be false end.to change(Partie, :count) .by(1) .and change(Evenement, :count) @@ -145,12 +145,12 @@ it 'ne persiste pas les métriques de la partie' do expect do - FabriqueEvenement.new(parametres_invalide).call + described_class.new(parametres_invalide).call end.not_to have_enqueued_job(PersisteMetriquesPartieJob) end it "retourne une instance d'évènement" do - expect(FabriqueEvenement.new(parametres_invalide).call.class).to eq Evenement + expect(described_class.new(parametres_invalide).call.class).to eq Evenement end end end diff --git a/spec/models/geoloc_helper_spec.rb b/spec/models/geoloc_helper_spec.rb index bbe766030..65eaa5b80 100644 --- a/spec/models/geoloc_helper_spec.rb +++ b/spec/models/geoloc_helper_spec.rb @@ -3,9 +3,10 @@ require 'rails_helper' describe GeolocHelper, type: :model do - it { expect(GeolocHelper.cherche_region(nil)).to be(nil) } - it { expect(GeolocHelper.cherche_region('99999')).to be(nil) } - it { expect(GeolocHelper.cherche_region('non_communique')).to be(nil) } + it { expect(described_class.cherche_region(nil)).to be_nil } + it { expect(described_class.cherche_region('99999')).to be_nil } + it { expect(described_class.cherche_region('non_communique')).to be_nil } + it "retourne la region d'un code postal" do mock_reponse_typhoeus('https://geo.api.gouv.fr/departements/45', { codeRegion: 24 }) @@ -13,13 +14,13 @@ mock_reponse_typhoeus('https://geo.api.gouv.fr/regions/24', { nom: 'Centre-Val de Loire' }) - expect(GeolocHelper.cherche_region('45300')).to eql('Centre-Val de Loire') + expect(described_class.cherche_region('45300')).to eql('Centre-Val de Loire') end it 'retourne nil quand il trouve le département, mais pas la région' do mock_reponse_typhoeus('https://geo.api.gouv.fr/departements/45', { codeRegion: 24 }) - expect(GeolocHelper.cherche_region('45300')).to be_nil + expect(described_class.cherche_region('45300')).to be_nil end end diff --git a/spec/models/mise_en_action/questionnaire_spec.rb b/spec/models/mise_en_action/questionnaire_spec.rb index 9ae614e44..f8a24ef26 100644 --- a/spec/models/mise_en_action/questionnaire_spec.rb +++ b/spec/models/mise_en_action/questionnaire_spec.rb @@ -7,7 +7,7 @@ context 'quand le nom est remediation' do it 'récupére la question et les réponses associées' do question = 'Vers quel dispositif de remédiation cette personne a-t-elle été orientée ?' - questionnaire = MiseEnAction::Questionnaire.new(:remediation) + questionnaire = described_class.new(:remediation) expect(questionnaire.question).to eq(question) expect(questionnaire.reponses.values).to eq(%w[formation_competences_de_base formation_metier @@ -19,7 +19,7 @@ context 'quand le nom est difficulte' do it 'récupére la question et les réponses associées' do question = 'Quelle difficulté avez-vous rencontré ?' - questionnaire = MiseEnAction::Questionnaire.new(:difficulte) + questionnaire = described_class.new(:difficulte) expect(questionnaire.question).to eq(question) expect(questionnaire.reponses.values).to eq(%w[aucune_offre_formation offre_formation_inaccessible diff --git a/spec/models/mise_en_action_spec.rb b/spec/models/mise_en_action_spec.rb index a93c084ef..9bb368e7a 100644 --- a/spec/models/mise_en_action_spec.rb +++ b/spec/models/mise_en_action_spec.rb @@ -4,15 +4,16 @@ describe MiseEnAction, type: :model do it { is_expected.to belong_to(:evaluation) } + it do subject.evaluation = create(:evaluation, :avec_mise_en_action) - is_expected.to validate_uniqueness_of(:evaluation_id).case_insensitive + expect(subject).to validate_uniqueness_of(:evaluation_id).case_insensitive end it "valide que effectuee n'est pas vide" do - should_not allow_value(nil).for(:effectuee) - should allow_value(true).for(:effectuee) - should allow_value(false).for(:effectuee) + expect(subject).not_to allow_value(nil).for(:effectuee) + expect(subject).to allow_value(true).for(:effectuee) + expect(subject).to allow_value(false).for(:effectuee) end describe '#effectuee_avec_remediation?' do diff --git a/spec/models/parcours_type_spec.rb b/spec/models/parcours_type_spec.rb index 0ef52fb75..fcb4fc7df 100644 --- a/spec/models/parcours_type_spec.rb +++ b/spec/models/parcours_type_spec.rb @@ -10,12 +10,12 @@ it 'retourne false lorsque la configuration du parcours type ne contient pas la livraison' do parcours_type_sans_livraison = create :parcours_type - expect(parcours_type_sans_livraison.option_redaction?).to eq(false) + expect(parcours_type_sans_livraison.option_redaction?).to be(false) end it 'retourne true lorsque la configuration du parcours type contient la livraison' do parcours_type_avec_livraison = create :parcours_type, :competences_de_base - expect(parcours_type_avec_livraison.option_redaction?).to eq(true) + expect(parcours_type_avec_livraison.option_redaction?).to be(true) end it do diff --git a/spec/models/prise_en_main_spec.rb b/spec/models/prise_en_main_spec.rb index 8c23bb9a2..0f9007930 100644 --- a/spec/models/prise_en_main_spec.rb +++ b/spec/models/prise_en_main_spec.rb @@ -7,9 +7,9 @@ let(:nombre_campagnes) { 1 } let(:nombre_evaluations) { 1 } let(:prise_en_main) do - PriseEnMain.new compte: compte, - nombre_campagnes: nombre_campagnes, - nombre_evaluations: nombre_evaluations + described_class.new compte: compte, + nombre_campagnes: nombre_campagnes, + nombre_evaluations: nombre_evaluations end describe '#etape_en_cours' do @@ -17,7 +17,7 @@ it { expect(prise_en_main.etape_en_cours).to eq 'rejoindre_structure' } end - context 'Quand le compte a rejoint une structure' do + context 'quand le compte a rejoint une structure' do let(:structure) { Structure.new } before do diff --git a/spec/models/question_glisser_deposer_spec.rb b/spec/models/question_glisser_deposer_spec.rb index 8a2c93acf..4cbb1f0d5 100644 --- a/spec/models/question_glisser_deposer_spec.rb +++ b/spec/models/question_glisser_deposer_spec.rb @@ -2,74 +2,184 @@ require 'rails_helper' -describe QuestionGlisserDeposer, type: :model do - it { is_expected.to have_many(:reponses).with_foreign_key(:question_id) } - it { is_expected.to have_many_attached(:zones_depot_url) } - - let(:question) do - create(:question_glisser_deposer, - illustration: Rack::Test::UploadedFile.new( - Rails.root.join('spec/support/programme_tele.png') - )) - end - let!(:modalite) do - create(:transcription, :avec_audio, question_id: question.id, - categorie: :modalite_reponse) +describe 'Admin - Question Glisser Deposer', type: :feature do + before(:each) { se_connecter_comme_superadmin } + + describe 'show' do + let!(:question) do + create :question_glisser_deposer, libelle: 'Libellé de la question' + end + let!(:transcription) do + create :transcription, question_id: question.id, ecrit: 'Comment ça va ?' + end + + before(:each) { visit admin_question_glisser_deposer_path(question) } + + it 'affiche le libellé de la question et la transcription associée' do + expect(page).to have_content 'Libellé de la question' + expect(page).to have_content 'Comment ça va ?' + end end - let!(:reponse1) do - create(:choix, :avec_illustration, :bon, question_id: question.id, position_client: 2) + + describe 'index' do + let!(:question) do + create :question_glisser_deposer + end + let!(:transcription) do + create :transcription, question_id: question.id, ecrit: 'Comment ça va ?' + end + + before(:each) { visit admin_questions_glisser_deposer_path } + + it do + expect(page).to have_content 'Comment ça va ?' + end end - let!(:reponse2) { create(:choix, :avec_illustration, :bon, question_id: question.id) } - let(:json) { question.as_json } - - describe '#as_json' do - it 'serialise les champs' do - expect(json.keys).to match_array(%w[id intitule audio_url nom_technique - description illustration modalite_reponse type - reponsesNonClassees]) - expect(json['type']).to eql('glisser-deposer-billets') - expect(json['modalite_reponse']).to eql(modalite.ecrit) - expect(json['illustration']).to eql(Rails.application.routes.url_helpers.url_for( - question.illustration - )) - end - - describe 'les reponsesNonClassees' do + + describe 'création' do + before(:each) do + visit new_admin_question_glisser_deposer_path + end + + context 'sans transcriptions' do + before(:each) do + fill_in :question_glisser_deposer_libelle, with: 'Question' + fill_in :question_glisser_deposer_nom_technique, with: 'question' + end + + it 'créé une nouvelle question' do + expect { click_on 'Créer' }.to(change { Question.count }) + expect(Question.first.transcriptions).to be_empty + end + end + + context 'quand une transcription pour intitule est ajouté' do + before(:each) do + fill_in :question_glisser_deposer_libelle, with: 'Question' + fill_in :question_glisser_deposer_nom_technique, with: 'question' + fill_in :question_glisser_deposer_transcriptions_attributes_0_ecrit, with: 'Intitulé' + click_on 'Créer' + end + + it do + expect(Question.first.transcriptions.count).to eq 1 + expect(Question.first.transcription_intitule&.ecrit).to eq 'Intitulé' + end + end + + context 'quand une transcription pour modalité réponse est ajoutée' do + before(:each) do + fill_in :question_glisser_deposer_libelle, with: 'Question' + fill_in :question_glisser_deposer_nom_technique, with: 'question' + fill_in :question_glisser_deposer_transcriptions_attributes_1_ecrit, with: 'Consigne' + click_on 'Créer' + end + it do - expect(json['reponsesNonClassees'].size).to eql(2) - expect(json['reponsesNonClassees'].first['illustration']).to_not be(nil) - expect(json['reponsesNonClassees'].first['position']).to eql(1) - expect(json['reponsesNonClassees'].first['position_client']).to eql(2) + expect(Question.first.transcriptions.count).to eq 1 + expect(Question.first.transcription_modalite_reponse&.ecrit).to eq 'Consigne' + end + end + + context 'quand une illustration est ajoutée' do + before(:each) do + fill_in :question_glisser_deposer_libelle, with: 'Question' + fill_in :question_glisser_deposer_nom_technique, with: 'question' + attach_file(:question_glisser_deposer_illustration, + Rails.root.join('spec/support/programme_tele.png')) + click_on 'Créer' + end + + it do + expect(Question.first.illustration.attached?).to eq true end end end - describe 'validations' do - let(:question) do - build(:question_glisser_deposer) + describe 'modification' do + let!(:question) do + create :question_glisser_deposer, + illustration: Rack::Test::UploadedFile.new( + Rails.root.join('spec/support/programme_tele.png') + ) + end + let!(:transcription) do + create :transcription, question_id: question.id, ecrit: 'Comment ça va ?' + end + + let!(:modalite_reponse) do + create :transcription, :avec_audio, question_id: question.id, ecrit: 'Comment ça va ?', + categorie: :modalite_reponse + end + + context "quand l'admin supprime l'écrit d'une transcription et qu'il n'y a pas d'audio" do + before(:each) do + visit edit_admin_question_glisser_deposer_path(question) + fill_in :question_glisser_deposer_transcriptions_attributes_0_ecrit, with: nil + end + + it 'supprime la transcription' do + expect(Question.first.transcriptions.count).to eq 2 + click_on 'Enregistrer' + expect(Question.first.transcriptions.count).to eq 1 + end end - context 'avec un attachment au format svg' do - it 'est valide' do - question.zones_depot_url.attach( - io: Rails.root.join('spec/support/accessibilite-sans-reponse.svg').open, - filename: 'valid.svg', - content_type: 'image/svg+xml' - ) - expect(question).to be_valid + context "quand l'admin coche supprimer l'illustration" do + before(:each) do + visit edit_admin_question_glisser_deposer_path(question) + check 'question_glisser_deposer_supprimer_illustration' + end + + it "supprime l'illustration" do + expect(question.illustration.attached?).to eq true + click_on 'Enregistrer' + question.reload + expect(question.illustration.attached?).to eq false end end - context "avec un attachement d'un autre format" do - it "n'est pas valide" do - question.zones_depot_url.attach( - io: Rails.root.join('spec/support/programme_tele.png').open, - filename: 'invalid.png', - content_type: 'image/png' - ) - expect(question).not_to be_valid - erreur = question.errors[:zones_depot_url] - expect(erreur).to include("n'est pas un format de fichier valide") + context "quand l'admin coche supprimer l'audio de l'intitulé" do + before(:each) do + Question.first.transcriptions.find_by(categorie: :intitule) + .update(audio: Rack::Test::UploadedFile.new( + Rails.root.join('spec/support/alcoolique.mp3') + )) + visit edit_admin_question_glisser_deposer_path(question) + check 'question_glisser_deposer_supprimer_audio_intitule' + end + + it "supprime l'audio" do + expect( + Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? + ).to eq true + click_on 'Enregistrer' + question.reload + expect( + Question.first.transcriptions.find_by(categorie: :intitule).audio.attached? + ).to eq false + end + end + + context "quand l'admin coche supprimer l'audio de la consigne" do + before(:each) do + Question.first.transcriptions.find_by(categorie: :modalite_reponse) + .update(audio: Rack::Test::UploadedFile.new( + Rails.root.join('spec/support/alcoolique.mp3') + )) + visit edit_admin_question_glisser_deposer_path(question) + check 'question_glisser_deposer_supprimer_audio_modalite_reponse' + end + + it "supprime l'audio" do + expect( + Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? + ).to eq true + click_on 'Enregistrer' + question.reload + expect( + Question.first.transcriptions.find_by(categorie: :modalite_reponse).audio.attached? + ).to eq false end end end diff --git a/spec/models/question_spec.rb b/spec/models/question_spec.rb index 583f90795..afd634463 100644 --- a/spec/models/question_spec.rb +++ b/spec/models/question_spec.rb @@ -66,7 +66,7 @@ end it "retourne l'url de l'audio de l'intitulé dans le champ audio_url" do - expect(question.transcription_intitule.complete?).to eq true + expect(question.transcription_intitule.complete?).to be true expect(question.json_audio_fields).to eq( { 'audio_url' => question.transcription_intitule.audio_url } ) @@ -82,8 +82,8 @@ end it "retourne l'url de l'audio de l'intitulé dans le champ intitule_audio" do - expect(question.transcription_intitule.complete?).to eq false - expect(question.json_audio_fields['audio_url']).to eq(nil) + expect(question.transcription_intitule.complete?).to be false + expect(question.json_audio_fields['audio_url']).to be_nil expect(question.json_audio_fields['intitule_audio']).to eq( question.transcription_intitule.audio_url ) @@ -96,7 +96,7 @@ end it "retourne l'url de l'audio de la modalité de réponse dans le champ intitule_audio" do - expect(question.transcription_modalite_reponse.complete?).to eq true + expect(question.transcription_modalite_reponse.complete?).to be true expect(question.json_audio_fields).to eq( { 'audio_url' => question.transcription_modalite_reponse.audio_url } ) diff --git a/spec/models/questionnaire_spec.rb b/spec/models/questionnaire_spec.rb index 5a9ce133a..61b0d3aaf 100644 --- a/spec/models/questionnaire_spec.rb +++ b/spec/models/questionnaire_spec.rb @@ -12,15 +12,17 @@ describe '#livraison_sans_redaction?' do context 'quand le questionnaire est livraison sans rédaction' do let(:questionnaire) do - Questionnaire.new nom_technique: Questionnaire::LIVRAISON_SANS_REDACTION + described_class.new nom_technique: Questionnaire::LIVRAISON_SANS_REDACTION end + it { expect(questionnaire.livraison_sans_redaction?).to be(true) } end context "quand le questionnaire n'est pas livraison sans rédaction" do let(:questionnaire) do - Questionnaire.new nom_technique: Questionnaire::LIVRAISON_AVEC_REDACTION + described_class.new nom_technique: Questionnaire::LIVRAISON_AVEC_REDACTION end + it { expect(questionnaire.livraison_sans_redaction?).to be(false) } end end diff --git a/spec/models/restitution/avec_entrainement_spec.rb b/spec/models/restitution/avec_entrainement_spec.rb index 6a4900a5f..84940a384 100644 --- a/spec/models/restitution/avec_entrainement_spec.rb +++ b/spec/models/restitution/avec_entrainement_spec.rb @@ -4,7 +4,7 @@ describe Restitution::AvecEntrainement do let(:campagne) { Campagne.new } - let(:restitution) { Restitution::AvecEntrainement.new campagne, evenements } + let(:restitution) { described_class.new campagne, evenements } describe '#evenements_situation et #evenements_entrainement' do context "ignore les évenements d'entrainement même s'ils ont la même date" do diff --git a/spec/models/restitution/cafe_de_la_place_spec.rb b/spec/models/restitution/cafe_de_la_place_spec.rb index ce4b70751..1bb232c97 100644 --- a/spec/models/restitution/cafe_de_la_place_spec.rb +++ b/spec/models/restitution/cafe_de_la_place_spec.rb @@ -113,8 +113,8 @@ context 'quand un parcours haut est indeterminé' do before do - allow(restitution).to receive(:parcours_haut).and_return Competence::NIVEAU_INDETERMINE - allow(restitution).to receive(:parcours_bas).and_return Competence::PROFIL_3 + allow(restitution).to receive_messages(parcours_haut: Competence::NIVEAU_INDETERMINE, + parcours_bas: Competence::PROFIL_3) end it 'retourne le profil du parcours bas' do diff --git a/spec/models/restitution/competence/profil_evacob_spec.rb b/spec/models/restitution/competence/profil_evacob_spec.rb index 1253cc7fe..b2225264e 100644 --- a/spec/models/restitution/competence/profil_evacob_spec.rb +++ b/spec/models/restitution/competence/profil_evacob_spec.rb @@ -25,32 +25,32 @@ it 'a le niveau 1' do expect(partie).to receive(:metriques).and_return({ 'score_lecture' => 6 }) - expect(competence_lecture_bas.niveau).to eql(:profil1) + expect(competence_lecture_bas.niveau).to be(:profil1) end it 'a le niveau 2 bas' do expect(partie).to receive(:metriques).and_return({ 'score_lecture' => 7 }) - expect(competence_lecture_bas.niveau).to eql(:profil2) + expect(competence_lecture_bas.niveau).to be(:profil2) end it 'a le niveau 2 haut' do expect(partie).to receive(:metriques).and_return({ 'score_lecture' => 10 }) - expect(competence_lecture_bas.niveau).to eql(:profil2) + expect(competence_lecture_bas.niveau).to be(:profil2) end it 'a le niveau 3 bas' do expect(partie).to receive(:metriques).and_return({ 'score_lecture' => 11 }) - expect(competence_lecture_bas.niveau).to eql(:profil3) + expect(competence_lecture_bas.niveau).to be(:profil3) end it 'a le niveau 3 haut' do expect(partie).to receive(:metriques).and_return({ 'score_lecture' => 14 }) - expect(competence_lecture_bas.niveau).to eql(:profil3) + expect(competence_lecture_bas.niveau).to be(:profil3) end it 'a le niveau 4' do expect(partie).to receive(:metriques).and_return({ 'score_lecture' => 15 }) - expect(competence_lecture_bas.niveau).to eql(:profil4) + expect(competence_lecture_bas.niveau).to be(:profil4) end end diff --git a/spec/models/restitution/completude_spec.rb b/spec/models/restitution/completude_spec.rb index ab8c90bb8..66234a2ea 100644 --- a/spec/models/restitution/completude_spec.rb +++ b/spec/models/restitution/completude_spec.rb @@ -4,7 +4,7 @@ describe Restitution::Completude do let(:completude) do - Restitution::Completude.new(evaluation, restitutions) + described_class.new(evaluation, restitutions) end describe '#calcule' do diff --git a/spec/models/restitution/controle/comparaison_tri_spec.rb b/spec/models/restitution/controle/comparaison_tri_spec.rb index 623581b74..d0bb5fab4 100644 --- a/spec/models/restitution/controle/comparaison_tri_spec.rb +++ b/spec/models/restitution/controle/comparaison_tri_spec.rb @@ -7,8 +7,7 @@ let(:restitution_hors_4_premiers) { double } before do - allow(restitution).to receive(:abandon?).and_return(false) - allow(restitution).to receive(:evenements).and_return([1, 2, 3, 4]) + allow(restitution).to receive_messages(abandon?: false, evenements: [1, 2, 3, 4]) allow(restitution).to receive(:enleve_premiers_evenements_pieces) .with(4).and_return(restitution_hors_4_premiers) end diff --git a/spec/models/restitution/controle/comprehension_consigne_spec.rb b/spec/models/restitution/controle/comprehension_consigne_spec.rb index e70ed1d3b..f3684a7cf 100644 --- a/spec/models/restitution/controle/comprehension_consigne_spec.rb +++ b/spec/models/restitution/controle/comprehension_consigne_spec.rb @@ -6,50 +6,40 @@ let(:restitution) { double } it 'a terminé en moins de 15 erreurs ou de ratées: niveau 4' do - allow(restitution).to receive(:termine?).and_return(true) - allow(restitution).to receive(:nombre_bien_placees).and_return(36) - allow(restitution).to receive(:nombre_loupees).and_return(14) + allow(restitution).to receive_messages(termine?: true, nombre_bien_placees: 36, + nombre_loupees: 14) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_4) end it 'a terminé en plus de 15 loupés: niveau 1' do - allow(restitution).to receive(:termine?).and_return(true) - allow(restitution).to receive(:nombre_loupees).and_return(16) - allow(restitution).to receive(:nombre_bien_placees).and_return(44) + allow(restitution).to receive_messages(termine?: true, nombre_loupees: 16, + nombre_bien_placees: 44) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_1) end it 'a réécouté la consigne, a fait des erreurs en triant 10 biscuits et abandon: niveau 1' do - allow(restitution).to receive(:termine?).and_return(false) - allow(restitution).to receive(:abandon?).and_return(true) - allow(restitution).to receive(:nombre_rejoue_consigne).and_return(1) - allow(restitution).to receive(:nombre_loupees).and_return(8) - allow(restitution).to receive(:nombre_bien_placees).and_return(1) + allow(restitution).to receive_messages(termine?: false, abandon?: true, + nombre_rejoue_consigne: 1, nombre_loupees: 8, nombre_bien_placees: 1) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_1) end it "a réécouté la consigne, pas d'erreur et abandon : indéterminé" do - allow(restitution).to receive(:termine?).and_return(false) - allow(restitution).to receive(:abandon?).and_return(true) - allow(restitution).to receive(:nombre_bien_placees).and_return(9) - allow(restitution).to receive(:nombre_rejoue_consigne).and_return(1) - allow(restitution).to receive(:nombre_loupees).and_return(0) + allow(restitution).to receive_messages(termine?: false, abandon?: true, nombre_bien_placees: 9, + nombre_rejoue_consigne: 1, nombre_loupees: 0) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_INDETERMINE) end it 'en abandonnant après > 10 biscuits: niveau indeterminé' do - allow(restitution).to receive(:termine?).and_return(false) - allow(restitution).to receive(:abandon?).and_return(true) - allow(restitution).to receive(:nombre_loupees).and_return(22) - allow(restitution).to receive(:nombre_bien_placees).and_return(1) + allow(restitution).to receive_messages(termine?: false, abandon?: true, nombre_loupees: 22, + nombre_bien_placees: 1) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_INDETERMINE) diff --git a/spec/models/restitution/controle/perseverance_spec.rb b/spec/models/restitution/controle/perseverance_spec.rb index 14757aa40..a08e492e6 100644 --- a/spec/models/restitution/controle/perseverance_spec.rb +++ b/spec/models/restitution/controle/perseverance_spec.rb @@ -6,10 +6,9 @@ let(:restitution) { double } def pour(termine: nil, nombre_pieces: nil, nombre_bien_placees: nil) - allow(restitution).to receive(:termine?).and_return(termine) - allow(restitution).to receive(:nombre_bien_placees).and_return(nombre_bien_placees) evenements_pieces = Array.new(nombre_pieces) if nombre_pieces - allow(restitution).to receive(:evenements_pieces).and_return(evenements_pieces) + allow(restitution).to receive_messages(termine?: termine, + nombre_bien_placees: nombre_bien_placees, evenements_pieces: evenements_pieces) described_class.new(restitution) end diff --git a/spec/models/restitution/evacob/score_module_spec.rb b/spec/models/restitution/evacob/score_module_spec.rb index 8417f024f..404a227d0 100644 --- a/spec/models/restitution/evacob/score_module_spec.rb +++ b/spec/models/restitution/evacob/score_module_spec.rb @@ -44,13 +44,13 @@ end let(:evenements_reponses) { [reponse_parcours_haut] } - it { expect(metrique_score_reponse_orientation).to eq(nil) } + it { expect(metrique_score_reponse_orientation).to be_nil } end context 'sans réponse' do let(:evenements_reponses) { [] } - it { expect(metrique_score_reponse_orientation).to eq(nil) } + it { expect(metrique_score_reponse_orientation).to be_nil } end end @@ -139,8 +139,8 @@ let(:evenements_reponses) { [] } it 'retourne nil' do - expect(calcul_metrique).to eq(nil) - expect(calcule_pourcentage).to eq(nil) + expect(calcul_metrique).to be_nil + expect(calcule_pourcentage).to be_nil end end end diff --git a/spec/models/restitution/export_positionnement_spec.rb b/spec/models/restitution/export_positionnement_spec.rb index 33a7ec662..1e71debe9 100644 --- a/spec/models/restitution/export_positionnement_spec.rb +++ b/spec/models/restitution/export_positionnement_spec.rb @@ -3,15 +3,15 @@ require 'rails_helper' describe Restitution::ExportPositionnement do + subject(:response_service) do + described_class.new(partie: partie) + end + let(:situation) { create(:situation) } let(:evaluation) { create :evaluation } let(:question) { create(:question) } let!(:partie) { create :partie, evaluation: evaluation, situation: situation } - subject(:response_service) do - described_class.new(partie: partie) - end - describe '#to_xls' do it 'génére un fichier xls avec les entêtes sur chaque colonnes' do xls = response_service.to_xls @@ -66,9 +66,9 @@ expect(question2[0]).to eq('LOdi4') expect(question2[1]).to eq(intitule_question2) expect(question2[2]).to eq('Le chat de Mme Coupin') - expect(question2[3]).to eq(nil) - expect(question2[4]).to eq(nil) - expect(question2[5]).to eq(nil) + expect(question2[3]).to be_nil + expect(question2[4]).to be_nil + expect(question2[5]).to be_nil end end diff --git a/spec/models/restitution/globale_spec.rb b/spec/models/restitution/globale_spec.rb index abb52e507..a4481a73b 100644 --- a/spec/models/restitution/globale_spec.rb +++ b/spec/models/restitution/globale_spec.rb @@ -4,8 +4,8 @@ describe Restitution::Globale do let(:restitution_globale) do - Restitution::Globale.new restitutions: restitutions, - evaluation: evaluation + described_class.new restitutions: restitutions, + evaluation: evaluation end let(:evaluation) { double } @@ -164,6 +164,7 @@ describe '#interpretations' do let(:restitutions) { [] } + context 'pre-positionnement' do let(:interpreteur_niveau1) do double( @@ -207,8 +208,8 @@ let(:numeratie) { double } before do - allow(restitution_globale).to receive(:litteratie).and_return(litteratie) - allow(restitution_globale).to receive(:numeratie).and_return(litteratie) + allow(restitution_globale).to receive_messages(litteratie: litteratie, + numeratie: litteratie) end it do diff --git a/spec/models/restitution/illettrisme/interpreteur_niveau1_spec.rb b/spec/models/restitution/illettrisme/interpreteur_niveau1_spec.rb index 4a5c20590..f3a0e929f 100644 --- a/spec/models/restitution/illettrisme/interpreteur_niveau1_spec.rb +++ b/spec/models/restitution/illettrisme/interpreteur_niveau1_spec.rb @@ -5,7 +5,7 @@ describe Restitution::Illettrisme::InterpreteurNiveau1 do let(:interpreteur_score) { double } let(:subject) do - Restitution::Illettrisme::InterpreteurNiveau1.new interpreteur_score + described_class.new interpreteur_score end describe '#interpretations_cefr' do diff --git a/spec/models/restitution/illettrisme/interpreteur_scores_spec.rb b/spec/models/restitution/illettrisme/interpreteur_scores_spec.rb index d7aa4d594..b4dbef3e7 100644 --- a/spec/models/restitution/illettrisme/interpreteur_scores_spec.rb +++ b/spec/models/restitution/illettrisme/interpreteur_scores_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Restitution::Illettrisme::InterpreteurScores do - let(:subject) { Restitution::Illettrisme::InterpreteurScores.new scores_standardises } + let(:subject) { described_class.new scores_standardises } context 'pour des compétences de niveau 2' do let(:competences) { %i[score_ccf score_memorisation] } @@ -19,6 +19,7 @@ context 'competence <= à -1' do let(:scores_standardises) { { score_ccf: -1, score_memorisation: -4 } } + it do expect(subject.interpretations(competences)) .to eq([{ score_ccf: :palier0 }, { score_memorisation: :palier0 }]) @@ -27,6 +28,7 @@ context '-1 < competence <= à 0' do let(:scores_standardises) { { score_ccf: -0.99, score_memorisation: 0 } } + it do expect(subject.interpretations(competences)) .to eq([{ score_ccf: :palier1 }, { score_memorisation: :palier1 }]) @@ -35,6 +37,7 @@ context 'competence > à 0' do let(:scores_standardises) { { score_ccf: 0.1 } } + it do expect(subject.interpretations(competences)) .to eq([{ score_ccf: :palier2 }, { score_memorisation: nil }]) diff --git a/spec/models/restitution/illettrisme/score_metacompetence_spec.rb b/spec/models/restitution/illettrisme/score_metacompetence_spec.rb index 1a9136aa9..a297ce4a5 100644 --- a/spec/models/restitution/illettrisme/score_metacompetence_spec.rb +++ b/spec/models/restitution/illettrisme/score_metacompetence_spec.rb @@ -14,6 +14,7 @@ before do nombre_bonnes_reponse_est 0 end + it { expect(score).to eq(0) } end @@ -22,7 +23,8 @@ nombre_bonnes_reponse_est 1 temps_moyen_bonnes_reponses_est 0 end - it { expect(score).to eq(nil) } + + it { expect(score).to be_nil } end context 'divise le nombre de bonnes réponses par le temps moyen' do @@ -30,6 +32,7 @@ nombre_bonnes_reponse_est 3 temps_moyen_bonnes_reponses_est 2 end + it { expect(score).to eq(1.5) } end diff --git a/spec/models/restitution/illettrisme/synthetiseur_spec.rb b/spec/models/restitution/illettrisme/synthetiseur_spec.rb index 02721aee9..5d732ff06 100644 --- a/spec/models/restitution/illettrisme/synthetiseur_spec.rb +++ b/spec/models/restitution/illettrisme/synthetiseur_spec.rb @@ -8,8 +8,7 @@ context 'quand la restitution détecte un illettrisme potentiel' do before do - allow(algo).to receive(:indetermine?).and_return(false) - allow(algo).to receive(:illettrisme_potentiel?).and_return(true) + allow(algo).to receive_messages(indetermine?: false, illettrisme_potentiel?: true) end it { expect(described_class.calcule_synthese(algo)).to eq 'illettrisme_potentiel' } @@ -17,9 +16,8 @@ context "quand la restitution détecte un socle cléa en cours d'aquisition" do before do - allow(algo).to receive(:indetermine?).and_return(false) - allow(algo).to receive(:illettrisme_potentiel?).and_return(false) - allow(algo).to receive(:socle_clea?).and_return(true) + allow(algo).to receive_messages(indetermine?: false, illettrisme_potentiel?: false, + socle_clea?: true) end it { expect(described_class.calcule_synthese(algo)).to eq 'socle_clea' } @@ -28,9 +26,8 @@ context 'quand la restitution détecte un niveau intermédiaire' do before do allow(algo).to receive(:indetermine?).and_return(false) - allow(algo).to receive(:illettrisme_potentiel?).and_return(false) - allow(algo).to receive(:socle_clea?).and_return(false) - allow(algo).to receive(:aberrant?).and_return(false) + allow(algo).to receive_messages(illettrisme_potentiel?: false, socle_clea?: false, + aberrant?: false) allow(algo).to receive(:indetermine?).and_return(false) end @@ -39,10 +36,8 @@ context 'quand la restitution détecte un niveau aberrant' do before do - allow(algo).to receive(:indetermine?).and_return(false) - allow(algo).to receive(:illettrisme_potentiel?).and_return(false) - allow(algo).to receive(:socle_clea?).and_return(false) - allow(algo).to receive(:aberrant?).and_return(true) + allow(algo).to receive_messages(indetermine?: false, illettrisme_potentiel?: false, + socle_clea?: false, aberrant?: true) end it { expect(described_class.calcule_synthese(algo)).to eq 'aberrant' } @@ -50,13 +45,11 @@ context "quand la restitution n'a pas de score" do before do - allow(algo).to receive(:illettrisme_potentiel?).and_return(false) - allow(algo).to receive(:socle_clea?).and_return(false) - allow(algo).to receive(:aberrant?).and_return(false) - allow(algo).to receive(:indetermine?).and_return(true) + allow(algo).to receive_messages(illettrisme_potentiel?: false, socle_clea?: false, + aberrant?: false, indetermine?: true) end - it { expect(described_class.calcule_synthese(algo)).to eq nil } + it { expect(described_class.calcule_synthese(algo)).to be_nil } end context 'quand la restitution détecte un niveau indetermine' do @@ -64,7 +57,7 @@ allow(algo).to receive(:indetermine?).and_return(true) end - it { expect(described_class.calcule_synthese(algo)).to eq nil } + it { expect(described_class.calcule_synthese(algo)).to be_nil } end end @@ -168,11 +161,12 @@ describe 'Evaluation pré-positionnement' do let(:interpreteur_pre_positionnement) { double } let(:subject) do - Restitution::Illettrisme::Synthetiseur.new interpreteur_pre_positionnement, nil, nil + described_class.new interpreteur_pre_positionnement, nil, nil end + describe '#positionnement_litteratie' do it 'ne retourne rien' do - expect(subject.positionnement_litteratie).to eq nil + expect(subject.positionnement_litteratie).to be_nil end end end @@ -180,7 +174,7 @@ describe 'Evaluation positionnement Littératie' do let(:interpreteur_positionnement) { double } let(:subject) do - Restitution::Illettrisme::Synthetiseur.new nil, interpreteur_positionnement, nil + described_class.new nil, interpreteur_positionnement, nil end describe '#synthese' do @@ -199,14 +193,14 @@ def synthese(profil) it { expect(synthese(:profil4)).to eq 'socle_clea' } it { expect(synthese(:profil_4h_plus_plus)).to eq 'socle_clea' } it { expect(synthese(:profil_aberrant)).to eq 'aberrant' } - it { expect(synthese(:indetermine)).to eq nil } + it { expect(synthese(:indetermine)).to be_nil } end end describe 'Evaluation positionnement Numératie' do let(:interpreteur_numeratie) { double } let(:subject) do - Restitution::Illettrisme::Synthetiseur.new nil, nil, interpreteur_numeratie + described_class.new nil, nil, interpreteur_numeratie end describe '#synthese' do @@ -223,7 +217,7 @@ def synthese(profil) it { expect(synthese(:profil2)).to eq 'illettrisme_potentiel' } it { expect(synthese(:profil3)).to eq 'ni_ni' } it { expect(synthese(:profil4)).to eq 'socle_clea' } - it { expect(synthese(:indetermine)).to eq nil } + it { expect(synthese(:indetermine)).to be_nil } end end @@ -231,8 +225,8 @@ def synthese(profil) let(:interpreteur_positionnement) { double } let(:interpreteur_pre_positionnement) { double } let(:subject) do - Restitution::Illettrisme::Synthetiseur.new interpreteur_pre_positionnement, - interpreteur_positionnement, nil + described_class.new interpreteur_pre_positionnement, + interpreteur_positionnement, nil end before do @@ -265,9 +259,9 @@ def synthese(profil) let(:interpreteur_positionnement) { double } let(:interpreteur_numeratie) { double } let(:subject) do - Restitution::Illettrisme::Synthetiseur.new nil, - interpreteur_positionnement, - interpreteur_numeratie + described_class.new nil, + interpreteur_positionnement, + interpreteur_numeratie end before do diff --git a/spec/models/restitution/illettrisme/temps_bonnes_reponses_spec.rb b/spec/models/restitution/illettrisme/temps_bonnes_reponses_spec.rb index f765515e1..fa9310d74 100644 --- a/spec/models/restitution/illettrisme/temps_bonnes_reponses_spec.rb +++ b/spec/models/restitution/illettrisme/temps_bonnes_reponses_spec.rb @@ -31,6 +31,7 @@ date: Time.zone.local(2019, 10, 9, 10, 1, 22)) ] end + it { expect(temps_bonnes_reponses_numeratie).to eq([1]) } end @@ -44,6 +45,7 @@ date: Time.zone.local(2019, 10, 9, 10, 1, 22)) ] end + it { expect(temps_bonnes_reponses_numeratie).to eq([]) } end @@ -61,6 +63,7 @@ date: Time.zone.local(2019, 10, 9, 10, 1, 22)) ] end + it { expect(temps_bonnes_reponses_numeratie).to eq([]) } end @@ -71,6 +74,7 @@ date: Time.zone.local(2019, 10, 9, 10, 1, 21)) ] end + it { expect(temps_bonnes_reponses_numeratie).to eq([]) } end end diff --git a/spec/models/restitution/inventaire/perseverance_spec.rb b/spec/models/restitution/inventaire/perseverance_spec.rb index e4706160b..aa5018ff5 100644 --- a/spec/models/restitution/inventaire/perseverance_spec.rb +++ b/spec/models/restitution/inventaire/perseverance_spec.rb @@ -10,9 +10,8 @@ def pour(reussite: nil, nombre_essais: nil, minutes: nil, erreurs: nil) expect(restitution).to receive(:reussite?).and_return(reussite) essai = double allow(essai).to receive(:nombre_erreurs).and_return(erreurs) - allow(restitution).to receive(:essais_verifies).and_return([essai]) - allow(restitution).to receive(:nombre_essais_validation).and_return(nombre_essais) - allow(restitution).to receive(:temps_total).and_return(secondes) + allow(restitution).to receive_messages(essais_verifies: [essai], + nombre_essais_validation: nombre_essais, temps_total: secondes) described_class.new(restitution) end diff --git a/spec/models/restitution/inventaire/vigilance_controle_spec.rb b/spec/models/restitution/inventaire/vigilance_controle_spec.rb index 31dc69b4b..4ccc01e71 100644 --- a/spec/models/restitution/inventaire/vigilance_controle_spec.rb +++ b/spec/models/restitution/inventaire/vigilance_controle_spec.rb @@ -16,9 +16,8 @@ end let(:essai_reussite) do essai = double - allow(essai).to receive(:nombre_erreurs).and_return(0) - allow(essai).to receive(:nombre_de_non_remplissage).and_return(0) - allow(essai).to receive(:nombre_erreurs_sauf_de_non_remplissage).and_return(0) + allow(essai).to receive_messages(nombre_erreurs: 0, nombre_de_non_remplissage: 0, + nombre_erreurs_sauf_de_non_remplissage: 0) essai end @@ -28,58 +27,47 @@ def essai_avec_que_erreurs_de_non_remplissage(nombre_erreurs) def essai_avec_erreurs(nombre_erreurs, nombre_erreurs_de_non_remplissage = 0) essai = double - allow(essai).to receive(:nombre_erreurs).and_return(nombre_erreurs) - allow(essai).to receive(:nombre_erreurs_sauf_de_non_remplissage) - .and_return(nombre_erreurs - nombre_erreurs_de_non_remplissage) - allow(essai).to receive(:nombre_de_non_remplissage) - .and_return(nombre_erreurs_de_non_remplissage) + allow(essai).to receive_messages(nombre_erreurs: nombre_erreurs, + nombre_erreurs_sauf_de_non_remplissage: nombre_erreurs - nombre_erreurs_de_non_remplissage, nombre_de_non_remplissage: nombre_erreurs_de_non_remplissage) essai end it 'Réussite au 1er essai: niveau 4' do - allow(restitution).to receive(:reussite?).and_return(true) - allow(restitution).to receive(:nombre_essais_validation).and_return(1) - allow(restitution).to receive(:essais_verifies).and_return([essai_reussite]) + allow(restitution).to receive_messages(reussite?: true, nombre_essais_validation: 1, + essais_verifies: [essai_reussite]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_4) end it 'Réussite au 2eme essai lorsque le 1er essai comporte 7 non remplissages: niveau 4' do - allow(restitution).to receive(:reussite?).and_return(true) - allow(restitution).to receive(:nombre_essais_validation).and_return(2) - allow(restitution).to receive(:essais_verifies).and_return([essai_de_prise_en_main, double]) + allow(restitution).to receive_messages(reussite?: true, nombre_essais_validation: 2, + essais_verifies: [essai_de_prise_en_main, double]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_4) end it 'Réussite au 2eme essai lorsque le 1er essai comporte 8 non remplissages: niveau 4' do - allow(restitution).to receive(:reussite?).and_return(true) - allow(restitution).to receive(:nombre_essais_validation).and_return(2) - allow(restitution).to receive(:essais_verifies) - .and_return([essai_de_prise_en_main_vide, double]) + allow(restitution).to receive_messages(reussite?: true, nombre_essais_validation: 2, + essais_verifies: [essai_de_prise_en_main_vide, double]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_4) end it 'Réussite avec des essais ne comprenant que des erreurs de non remplissage: niveau 3' do - allow(restitution).to receive(:reussite?).and_return(true) - allow(restitution).to receive(:nombre_essais_validation).and_return(9) - allow(restitution).to receive(:essais_verifies).and_return( - [ - essai_de_prise_en_main, - essai_avec_que_erreurs_de_non_remplissage(7), - essai_avec_que_erreurs_de_non_remplissage(6), - essai_avec_que_erreurs_de_non_remplissage(5), - essai_avec_que_erreurs_de_non_remplissage(4), - essai_avec_que_erreurs_de_non_remplissage(3), - essai_avec_que_erreurs_de_non_remplissage(2), - essai_avec_que_erreurs_de_non_remplissage(1), - essai_reussite - ] - ) + allow(restitution).to receive_messages(reussite?: true, nombre_essais_validation: 9, essais_verifies: [ + essai_de_prise_en_main, + essai_avec_que_erreurs_de_non_remplissage(7), + essai_avec_que_erreurs_de_non_remplissage(6), + essai_avec_que_erreurs_de_non_remplissage(5), + essai_avec_que_erreurs_de_non_remplissage(4), + essai_avec_que_erreurs_de_non_remplissage(3), + essai_avec_que_erreurs_de_non_remplissage(2), + essai_avec_que_erreurs_de_non_remplissage(1), + essai_reussite + ]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_3) @@ -87,19 +75,15 @@ def essai_avec_erreurs(nombre_erreurs, nombre_erreurs_de_non_remplissage = 0) it 'Réussite avec 2 erreurs rectifié en 2 essais et autres essais avec des erreurs de non remplissage: niveau 3' do - allow(restitution).to receive(:reussite?).and_return(true) - allow(restitution).to receive(:nombre_essais_validation).and_return(6) - allow(restitution).to receive(:essais_verifies).and_return( - [ - essai_de_prise_en_main, - essai_avec_que_erreurs_de_non_remplissage(7), - essai_avec_que_erreurs_de_non_remplissage(3), - essai_avec_erreurs(3, 1), - essai_avec_erreurs(2, 1), - essai_avec_que_erreurs_de_non_remplissage(1), - essai_reussite - ] - ) + allow(restitution).to receive_messages(reussite?: true, nombre_essais_validation: 6, essais_verifies: [ + essai_de_prise_en_main, + essai_avec_que_erreurs_de_non_remplissage(7), + essai_avec_que_erreurs_de_non_remplissage(3), + essai_avec_erreurs(3, 1), + essai_avec_erreurs(2, 1), + essai_avec_que_erreurs_de_non_remplissage(1), + essai_reussite + ]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_3) @@ -107,76 +91,58 @@ def essai_avec_erreurs(nombre_erreurs, nombre_erreurs_de_non_remplissage = 0) it 'Réussite avec 3 erreurs rectifié en 2 essais et autres essais avec des erreurs de non remplissage: niveau 2' do - allow(restitution).to receive(:reussite?).and_return(true) - allow(restitution).to receive(:nombre_essais_validation).and_return(6) - allow(restitution).to receive(:essais_verifies).and_return( - [ - essai_de_prise_en_main, - essai_avec_que_erreurs_de_non_remplissage(7), - essai_avec_que_erreurs_de_non_remplissage(3), - essai_avec_erreurs(4, 1), - essai_avec_erreurs(2, 1), - essai_avec_que_erreurs_de_non_remplissage(1), - essai_reussite - ] - ) + allow(restitution).to receive_messages(reussite?: true, nombre_essais_validation: 6, essais_verifies: [ + essai_de_prise_en_main, + essai_avec_que_erreurs_de_non_remplissage(7), + essai_avec_que_erreurs_de_non_remplissage(3), + essai_avec_erreurs(4, 1), + essai_avec_erreurs(2, 1), + essai_avec_que_erreurs_de_non_remplissage(1), + essai_reussite + ]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_2) end it 'Réussite au 5eme essai rectifié en 4 fois : niveau 2' do - allow(restitution).to receive(:reussite?).and_return(true) - allow(restitution).to receive(:nombre_essais_validation).and_return(5) - allow(restitution).to receive(:essais_verifies).and_return( - [ - essai_de_prise_en_main, - essai_avec_erreurs(3), - essai_avec_erreurs(2), - essai_avec_erreurs(1), - essai_reussite - ] - ) + allow(restitution).to receive_messages(reussite?: true, nombre_essais_validation: 5, essais_verifies: [ + essai_de_prise_en_main, + essai_avec_erreurs(3), + essai_avec_erreurs(2), + essai_avec_erreurs(1), + essai_reussite + ]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_2) end it 'Abandon sans essai' do - allow(restitution).to receive(:reussite?).and_return(false) - allow(restitution).to receive(:abandon?).and_return(true) - allow(restitution).to receive(:essais_verifies).and_return([]) + allow(restitution).to receive_messages(reussite?: false, abandon?: true, essais_verifies: []) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_INDETERMINE) end it 'Abandon avec 2 essais et les mêmes erreurs aux essais: niveau 1' do - allow(restitution).to receive(:reussite?).and_return(false) - allow(restitution).to receive(:abandon?).and_return(true) - allow(restitution).to receive(:essais_verifies).and_return( - [ - essai_de_prise_en_main, - essai_avec_erreurs(3), - essai_avec_erreurs(3) - ] - ) + allow(restitution).to receive_messages(reussite?: false, abandon?: true, essais_verifies: [ + essai_de_prise_en_main, + essai_avec_erreurs(3), + essai_avec_erreurs(3) + ]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_1) end it "Abandon avec 3 essais une correction d'erreur: niveau indéterminé" do - allow(restitution).to receive(:reussite?).and_return(false) - allow(restitution).to receive(:abandon?).and_return(true) - allow(restitution).to receive(:essais_verifies).and_return( - [ - essai_de_prise_en_main, - essai_avec_erreurs(3), - essai_avec_erreurs(3), - essai_avec_erreurs(2) - ] - ) + allow(restitution).to receive_messages(reussite?: false, abandon?: true, essais_verifies: [ + essai_de_prise_en_main, + essai_avec_erreurs(3), + essai_avec_erreurs(3), + essai_avec_erreurs(2) + ]) expect( described_class.new(restitution).niveau ).to eql(Competence::NIVEAU_INDETERMINE) diff --git a/spec/models/restitution/maintenance/score_vocabulaire_spec.rb b/spec/models/restitution/maintenance/score_vocabulaire_spec.rb index 4b95692fc..b7ae52fe8 100644 --- a/spec/models/restitution/maintenance/score_vocabulaire_spec.rb +++ b/spec/models/restitution/maintenance/score_vocabulaire_spec.rb @@ -36,10 +36,9 @@ def score_pour(nombre_francais, temps_francais, nombre_non_mots, temps_non_mots) let(:mock_metrique_temps) { double } it do - allow(standardisateur).to receive(:moyennes_metriques) - .and_return(temps_moyen_mots_francais: 2.7) - allow(standardisateur).to receive(:ecarts_types_metriques) - .and_return(temps_moyen_mots_francais: 0.5) + allow(standardisateur).to receive_messages( + moyennes_metriques: { temps_moyen_mots_francais: 2.7 }, ecarts_types_metriques: { temps_moyen_mots_francais: 0.5 } + ) allow(metrique_score_ccf).to receive(:standardisateur).and_return(standardisateur) diff --git a/spec/models/restitution/place_du_marche_spec.rb b/spec/models/restitution/place_du_marche_spec.rb index 4040a6b2b..0d32bfa9c 100644 --- a/spec/models/restitution/place_du_marche_spec.rb +++ b/spec/models/restitution/place_du_marche_spec.rb @@ -74,7 +74,7 @@ it 'retourne le score selon le niveau' do expect(restitution.score_pour(:N1)).to eq 3 expect(restitution.score_pour(:N2)).to eq(0.5) - expect(restitution.score_pour(:N3)).to eq(nil) + expect(restitution.score_pour(:N3)).to be_nil end end @@ -179,7 +179,7 @@ end it 'retourne nil' do - expect(restitution.niveau_numeratie).to eq nil + expect(restitution.niveau_numeratie).to be_nil end end diff --git a/spec/models/restitution/scores_niveau1_spec.rb b/spec/models/restitution/scores_niveau1_spec.rb index d7b1645c5..7381dd3ea 100644 --- a/spec/models/restitution/scores_niveau1_spec.rb +++ b/spec/models/restitution/scores_niveau1_spec.rb @@ -6,7 +6,7 @@ let(:scores_niveau2) { double } let(:scores_niveau1) do - Restitution::ScoresNiveau1.new(scores_niveau2) + described_class.new(scores_niveau2) end it 'à partir des score standardisés de niveau 2' do diff --git a/spec/models/restitution/scores_niveau2_spec.rb b/spec/models/restitution/scores_niveau2_spec.rb index 7cb730e76..712157379 100644 --- a/spec/models/restitution/scores_niveau2_spec.rb +++ b/spec/models/restitution/scores_niveau2_spec.rb @@ -12,7 +12,7 @@ context 'pas de partie' do it do - scores = Restitution::ScoresNiveau2.new([]) + scores = described_class.new([]) expect(scores.calcule).to eq({}) end @@ -22,8 +22,8 @@ let(:partie) { double(situation_id: situation_id) } it do - scores = Restitution::ScoresNiveau2.new([partie], - { situation_id => standardisateur }) + scores = described_class.new([partie], + { situation_id => standardisateur }) allow(partie).to receive(:metriques).and_return({ 'score_ccf' => 110 }) allow(standardisateur).to receive(:standardise).with(:score_ccf, 110).and_return(1.1) expect(scores.calcule).to eq(score_ccf: 1.1) @@ -35,8 +35,8 @@ let(:partie2) { double(situation_id: situation_id) } it do - scores = Restitution::ScoresNiveau2.new([partie1, partie2], - { situation_id => standardisateur }) + scores = described_class.new([partie1, partie2], + { situation_id => standardisateur }) allow(partie1).to receive(:metriques).and_return({ 'score_ccf' => 110 }) allow(partie2).to receive(:metriques).and_return({ 'score_ccf' => 120 }) @@ -52,8 +52,8 @@ let(:partie2) { double(situation_id: situation_id) } it do - scores = Restitution::ScoresNiveau2.new([partie1, partie2], - { situation_id => standardisateur }) + scores = described_class.new([partie1, partie2], + { situation_id => standardisateur }) allow(partie1).to receive(:metriques) .and_return({ 'score_ccf' => 110, 'score_memorisation' => 120 }) allow(partie2).to receive(:metriques).and_return({ 'score_numeratie' => 130 }) diff --git a/spec/models/restitution/scores_standardises_spec.rb b/spec/models/restitution/scores_standardises_spec.rb index 4aaefa2d8..34b65bc44 100644 --- a/spec/models/restitution/scores_standardises_spec.rb +++ b/spec/models/restitution/scores_standardises_spec.rb @@ -7,7 +7,7 @@ let(:scores) { double } let(:scores_standardises) do - Restitution::ScoresStandardises.new(scores) + described_class.new(scores) end context 'pas de scores' do diff --git a/spec/models/restitution/tri/comparaison_tri_spec.rb b/spec/models/restitution/tri/comparaison_tri_spec.rb index 8e1b0abb5..f9838c0b4 100644 --- a/spec/models/restitution/tri/comparaison_tri_spec.rb +++ b/spec/models/restitution/tri/comparaison_tri_spec.rb @@ -5,8 +5,7 @@ describe Restitution::Tri::ComparaisonTri do def pour(termine: nil, erreurs: nil) restitution = double - allow(restitution).to receive(:termine?).and_return(termine) - allow(restitution).to receive(:nombre_mal_placees).and_return(erreurs) + allow(restitution).to receive_messages(termine?: termine, nombre_mal_placees: erreurs) described_class.new(restitution) end diff --git a/spec/models/restitution/tri/comprehension_consigne_spec.rb b/spec/models/restitution/tri/comprehension_consigne_spec.rb index c4476514a..8266bf823 100644 --- a/spec/models/restitution/tri/comprehension_consigne_spec.rb +++ b/spec/models/restitution/tri/comprehension_consigne_spec.rb @@ -6,12 +6,10 @@ let(:restitution) { double } def pour(termine: nil, jouees: nil, erreurs: nil, relectures: nil) - allow(restitution).to receive(:termine?).and_return(termine) bien_placees = jouees || 0 bien_placees -= erreurs if erreurs - allow(restitution).to receive(:nombre_bien_placees).and_return(bien_placees) - allow(restitution).to receive(:nombre_mal_placees).and_return(erreurs) - allow(restitution).to receive(:nombre_rejoue_consigne).and_return(relectures) + allow(restitution).to receive_messages(termine?: termine, nombre_bien_placees: bien_placees, + nombre_mal_placees: erreurs, nombre_rejoue_consigne: relectures) described_class.new(restitution) end diff --git a/spec/models/restitution/tri/perseverance_spec.rb b/spec/models/restitution/tri/perseverance_spec.rb index 2536410db..dfc662e5e 100644 --- a/spec/models/restitution/tri/perseverance_spec.rb +++ b/spec/models/restitution/tri/perseverance_spec.rb @@ -6,9 +6,8 @@ let(:restitution) { double } def pour(termine: nil, secondes: nil, erreurs: nil) - allow(restitution).to receive(:termine?).and_return(termine) - allow(restitution).to receive(:nombre_mal_placees).and_return(erreurs) - allow(restitution).to receive(:temps_total).and_return(secondes) + allow(restitution).to receive_messages(termine?: termine, nombre_mal_placees: erreurs, + temps_total: secondes) described_class.new(restitution) end diff --git a/spec/models/restitution/tri/rapidite_spec.rb b/spec/models/restitution/tri/rapidite_spec.rb index 5f6a0b028..81b47211e 100644 --- a/spec/models/restitution/tri/rapidite_spec.rb +++ b/spec/models/restitution/tri/rapidite_spec.rb @@ -6,8 +6,7 @@ let(:restitution) { double } def pour(termine: nil, secondes: nil) - allow(restitution).to receive(:temps_total).and_return(secondes) - allow(restitution).to receive(:termine?).and_return(termine) + allow(restitution).to receive_messages(temps_total: secondes, termine?: termine) described_class.new(restitution) end diff --git a/spec/models/situation_configuration_spec.rb b/spec/models/situation_configuration_spec.rb index 96db89cc8..56cf9d91b 100644 --- a/spec/models/situation_configuration_spec.rb +++ b/spec/models/situation_configuration_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe SituationConfiguration do - it { should delegate_method(:livraison_sans_redaction?).to(:situation).allow_nil } + it { is_expected.to delegate_method(:livraison_sans_redaction?).to(:situation).allow_nil } it do expect(subject).to validate_uniqueness_of(:situation_id).scoped_to(%i[campagne_id diff --git a/spec/models/situation_spec.rb b/spec/models/situation_spec.rb index bd1a1fb5b..1868bce4b 100644 --- a/spec/models/situation_spec.rb +++ b/spec/models/situation_spec.rb @@ -6,5 +6,5 @@ it { is_expected.to validate_presence_of :libelle } it { is_expected.to validate_presence_of :nom_technique } it { is_expected.to validate_uniqueness_of :nom_technique } - it { should delegate_method(:livraison_sans_redaction?).to(:questionnaire).allow_nil } + it { is_expected.to delegate_method(:livraison_sans_redaction?).to(:questionnaire).allow_nil } end diff --git a/spec/models/source_aide_spec.rb b/spec/models/source_aide_spec.rb index 662cc039f..8084e5a13 100644 --- a/spec/models/source_aide_spec.rb +++ b/spec/models/source_aide_spec.rb @@ -15,7 +15,7 @@ let!(:source2) { create :source_aide, categorie: :prise_en_main } it do - expect(SourceAide.sources_par_categorie.to_a).to eql( + expect(described_class.sources_par_categorie.to_a).to eql( [ ['prise_en_main', [source1, source2]], ['animer_restituer', [source3]] diff --git a/spec/models/statistiques_structure_spec.rb b/spec/models/statistiques_structure_spec.rb index 07f331f04..3e17aa5cf 100644 --- a/spec/models/statistiques_structure_spec.rb +++ b/spec/models/statistiques_structure_spec.rb @@ -21,7 +21,7 @@ end end - let(:resultat) { StatistiquesStructure.new(structure).nombre_evaluations_des_12_derniers_mois } + let(:resultat) { described_class.new(structure).nombre_evaluations_des_12_derniers_mois } let(:mois_courant) { I18n.l(1.month.ago, format: '%B %Y') } @@ -71,10 +71,11 @@ let(:compte) { create :compte, structure: structure } let(:campagne) { create :campagne, compte: compte } - let(:resultat) { StatistiquesStructure.new(structure).repartition_evaluations } + let(:resultat) { described_class.new(structure).repartition_evaluations } context "quand l'évaluation appartient à la structure" do let(:synthese) { :ni_ni } + before do Timecop.freeze(1.month.ago) do create :evaluation, campagne: campagne, synthese_competences_de_base: synthese @@ -83,6 +84,7 @@ context 'avec une synthexe ni_ni' do let(:synthese) { :ni_ni } + it 'est prise en compte dans le calcul' do expect(resultat).to eq({ 'Niveau Intermédiaire' => 1 }) end @@ -90,6 +92,7 @@ context 'avec une synthexe ni_ni' do let(:synthese) { :socle_clea } + it 'est prise en compte dans le calcul' do expect(resultat).to eq({ 'Pas de difficultés repérées' => 1 }) end @@ -97,6 +100,7 @@ context 'avec une synthexe illettrisme_potentiel' do let(:synthese) { :illettrisme_potentiel } + it 'est prise en compte dans le calcul' do expect(resultat).to eq({ 'Illettrisme potentiel' => 1 }) end @@ -105,6 +109,7 @@ context "quand l'évaluation n'appartient pas à la structure" do let(:autre_campagne) { create :campagne } + before do create :evaluation, campagne: autre_campagne, synthese_competences_de_base: :ni_ni end @@ -151,13 +156,13 @@ end let(:resultat) do - StatistiquesStructure.new(structure) - .correlation_entre_niveau_illettrisme_et_genre(:illettrisme_potentiel) + described_class.new(structure) + .correlation_entre_niveau_illettrisme_et_genre(:illettrisme_potentiel) end context "quand la structure n'a pas de données sociodémographiques" do it 'ne renvoie rien' do - expect(resultat).to be(nil) + expect(resultat).to be_nil end end diff --git a/spec/models/structure_spec.rb b/spec/models/structure_spec.rb index badbf0977..080f74b1a 100644 --- a/spec/models/structure_spec.rb +++ b/spec/models/structure_spec.rb @@ -21,7 +21,7 @@ end it "Peut ré-utiliser le nom d'une structure effacé" do - expect(structure.save).to eq true + expect(structure.save).to be true end end @@ -35,7 +35,7 @@ def mock_geo_api(departement, code_region, region) describe 'géolocalisation à la validation' do describe "pour n'importe quel code postal" do - let(:structure) { Structure.new code_postal: '75012' } + let(:structure) { described_class.new code_postal: '75012' } before do Geocoder::Lookup::Test.add_stub( @@ -51,11 +51,11 @@ def mock_geo_api(departement, code_region, region) expect(structure.region).to eql('Île-de-France') end - it { expect(Structure.geocoder_options[:params]).to include(countrycodes: 'fr') } + it { expect(described_class.geocoder_options[:params]).to include(countrycodes: 'fr') } end describe 'si ma structure a un code postal commençant par 988' do - let(:structure) { Structure.new code_postal: '98850' } + let(:structure) { described_class.new code_postal: '98850' } before do Geocoder::Lookup::Test.add_stub( @@ -75,7 +75,7 @@ def mock_geo_api(departement, code_region, region) end describe 'si ma structure a un code postal commençant par 20' do - let(:structure) { Structure.new code_postal: '20090' } + let(:structure) { described_class.new code_postal: '20090' } before do Geocoder::Lookup::Test.add_stub( @@ -91,7 +91,7 @@ def mock_geo_api(departement, code_region, region) end context 'quand ma structure a déjà une région' do - let(:structure) { Structure.new code_postal: '20114', region: 'Corse' } + let(:structure) { described_class.new code_postal: '20114', region: 'Corse' } before do structure.code_postal = '61000' diff --git a/spec/models/transcription_spec.rb b/spec/models/transcription_spec.rb index c56581d32..28c33e488 100644 --- a/spec/models/transcription_spec.rb +++ b/spec/models/transcription_spec.rb @@ -7,14 +7,15 @@ it { is_expected.to define_enum_for(:categorie).with_values(%i[intitule modalite_reponse]) } describe 'validations' do - let(:transcription) { Transcription.new } + let(:transcription) { described_class.new } + it 'ne valide pas un audio de type wav' do transcription.audio.attach(io: Rails.root.join('spec/support/bravo.wav').open, filename: 'bravo.wav') expect(transcription.valid?).to be(false) expect(transcription.errors[:audio]).to include('doit être un fichier MP3 ou MP4') transcription.save - expect(transcription.audio).to_not be_attached + expect(transcription.audio).not_to be_attached end it 'valide un audio de type mp3' do @@ -27,7 +28,7 @@ end describe '.complete?' do - let(:transcription) { Transcription.new } + let(:transcription) { described_class.new } context 'quand il y a un écrit et un audio' do it 'retourne true' do diff --git a/spec/requests/evaluations_spec.rb b/spec/requests/evaluations_spec.rb index 46c037af9..bdd95e2c4 100644 --- a/spec/requests/evaluations_spec.rb +++ b/spec/requests/evaluations_spec.rb @@ -53,7 +53,7 @@ conditions_passation = ConditionsPassation.last expect(conditions_passation.user_agent).to eq unUserAgent expect(conditions_passation.materiel_utilise).to eq 'desktop' - expect(conditions_passation.modele_materiel).to eq nil + expect(conditions_passation.modele_materiel).to be_nil expect(conditions_passation.nom_navigateur).to eq 'Firefox' expect(conditions_passation.version_navigateur).to eq '104.0' expect(conditions_passation.hauteur_fenetre_navigation).to eq 10 @@ -70,7 +70,7 @@ end end - context 'Quand le code campagne est inconnu' do + context 'quand le code campagne est inconnu' do let(:payload_invalide) { { nom: '', code_campagne: 'ETE190' } } before { post '/api/evaluations', params: payload_invalide } @@ -84,7 +84,7 @@ end end - context 'Quand une requête est invalide' do + context 'quand une requête est invalide' do let(:payload_invalide) { { nom: '', code_campagne: '' } } before { post '/api/evaluations', params: payload_invalide } @@ -98,7 +98,7 @@ end end - context 'Quand une requête est vide' do + context 'quand une requête est vide' do let(:payload_invalide) { {} } before { post '/api/evaluations', params: payload_invalide } @@ -116,7 +116,7 @@ describe 'PATCH /evaluations/:id' do let!(:evaluation) { create :evaluation, email: 'monemail@eva.fr', nom: 'James' } - context 'Quand une requête est invalide pour un enum de données sociodémographiques' do + context 'quand une requête est invalide pour un enum de données sociodémographiques' do let(:params) do { donnee_sociodemographique_attributes: { @@ -229,7 +229,7 @@ expect do post ajouter_responsable_suivi_admin_evaluation_path(evaluation), params: { responsable_suivi_id: nil } - end.to_not(change { evaluation.reload.responsable_suivi }) + end.not_to(change { evaluation.reload.responsable_suivi }) end end @@ -243,7 +243,7 @@ patch renseigner_qualification_admin_evaluation_path(evaluation), params: { effectuee: true, qualification: remediation } evaluation.reload - expect(evaluation.mise_en_action.effectuee).to eq true + expect(evaluation.mise_en_action.effectuee).to be true expect(evaluation.mise_en_action.remediation).to eq remediation end @@ -251,7 +251,7 @@ patch renseigner_qualification_admin_evaluation_path(evaluation), params: { effectuee: true, qualification: indetermine } evaluation.reload - expect(evaluation.mise_en_action.effectuee).to eq true + expect(evaluation.mise_en_action.effectuee).to be true expect(evaluation.mise_en_action.remediation).to eq indetermine end @@ -259,7 +259,7 @@ patch renseigner_qualification_admin_evaluation_path(evaluation), params: { effectuee: false, qualification: difficulte } evaluation.reload - expect(evaluation.mise_en_action.effectuee).to eq false + expect(evaluation.mise_en_action.effectuee).to be false expect(evaluation.mise_en_action.difficulte).to eq difficulte end @@ -267,7 +267,7 @@ patch renseigner_qualification_admin_evaluation_path(evaluation), params: { effectuee: false, qualification: indetermine } evaluation.reload - expect(evaluation.mise_en_action.effectuee).to eq false + expect(evaluation.mise_en_action.effectuee).to be false expect(evaluation.mise_en_action.difficulte).to eq indetermine end end diff --git a/spec/requests/evenements_spec.rb b/spec/requests/evenements_spec.rb index 28c281193..3b42cc69e 100644 --- a/spec/requests/evenements_spec.rb +++ b/spec/requests/evenements_spec.rb @@ -32,7 +32,7 @@ } end - context 'Quand une requête est valide' do + context 'quand une requête est valide' do it 'Crée un événement et une partie' do post '/api/evenements', params: payload_valide @@ -47,7 +47,7 @@ end end - context 'Quand une requête est invalide' do + context 'quand une requête est invalide' do before { post '/api/evenements', params: payload_invalide } it 'retourne une 422' do diff --git a/spec/tasks/ajoute_evenements_termines_spec.rb b/spec/tasks/ajoute_evenements_termines_spec.rb index c82e01546..2578a1460 100644 --- a/spec/tasks/ajoute_evenements_termines_spec.rb +++ b/spec/tasks/ajoute_evenements_termines_spec.rb @@ -22,7 +22,7 @@ end it do - expect { subject.invoke }.to(change { Evenement.count }) + expect { subject.invoke }.to(change(Evenement, :count)) evenement = Evenement.order(:created_at).last expect(evenement.nom).to eq 'finSituation' @@ -35,7 +35,7 @@ let!(:evenements) { [create(:evenement_fin_situation, partie: partie)] } it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end @@ -46,7 +46,7 @@ end it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end end @@ -58,7 +58,7 @@ let!(:evenements) { [] } it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end end diff --git a/spec/tasks/date_evenements_fin_spec.rb b/spec/tasks/date_evenements_fin_spec.rb index 4324e5810..9657396e8 100644 --- a/spec/tasks/date_evenements_fin_spec.rb +++ b/spec/tasks/date_evenements_fin_spec.rb @@ -14,9 +14,10 @@ end let!(:evenements) { [evenement_precedent, evenement_fin] } - before { allow(logger).to receive :info } - - before { subject.invoke } + before do + allow(logger).to receive :info + subject.invoke + end context 'événement avec date unique' do let(:date_fin) { 1.day.ago.beginning_of_day } diff --git a/spec/tasks/supprime_evenements_apres_la_fin_spec.rb b/spec/tasks/supprime_evenements_apres_la_fin_spec.rb index ae7619047..20a393648 100644 --- a/spec/tasks/supprime_evenements_apres_la_fin_spec.rb +++ b/spec/tasks/supprime_evenements_apres_la_fin_spec.rb @@ -15,7 +15,7 @@ let!(:evenements) { [create(:evenement_fin_situation, partie: partie)] } it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end @@ -28,7 +28,7 @@ it do expect(logger).to receive(:info).exactly(3).times - expect { subject.invoke }.to(change { Evenement.count }.by(-2)) + expect { subject.invoke }.to(change(Evenement, :count).by(-2)) expect(Evenement.last.nom).to eq 'finSituation' end end @@ -41,7 +41,7 @@ end it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end @@ -54,7 +54,7 @@ end it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end @@ -62,7 +62,7 @@ let!(:evenements) { [create(:evenement_piece_bien_placee, partie: partie)] } it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end @@ -74,7 +74,7 @@ end it do - expect { subject.invoke }.not_to(change { Evenement.count }) + expect { subject.invoke }.not_to(change(Evenement, :count)) end end end diff --git a/spec/tasks/supprime_evenements_en_doubles_spec.rb b/spec/tasks/supprime_evenements_en_doubles_spec.rb index e154f9725..4fbdce479 100644 --- a/spec/tasks/supprime_evenements_en_doubles_spec.rb +++ b/spec/tasks/supprime_evenements_en_doubles_spec.rb @@ -15,8 +15,8 @@ let!(:evenements) { [create(:evenement_fin_situation, partie: partie)] } it do - expect(logger).to receive(:info).exactly(1).times - expect { subject.invoke }.to_not(change { Evenement.count }) + expect(logger).to receive(:info).once + expect { subject.invoke }.not_to(change(Evenement, :count)) end end @@ -28,7 +28,7 @@ create(:evenement_piece_bien_placee, partie: partie2, position: 1)] end - it { expect { subject.invoke }.to_not(change { Evenement.count }) } + it { expect { subject.invoke }.not_to(change(Evenement, :count)) } end context 'avec deux événements en double dans la même partie' do @@ -44,8 +44,8 @@ end it do - expect(logger).to receive(:info).exactly(2).times - expect { subject.invoke }.to(change { Evenement.count }.by(-1)) + expect(logger).to receive(:info).twice + expect { subject.invoke }.to(change(Evenement, :count).by(-1)) end end end diff --git a/spec/views/admin/campagnes/parcours.html.arb_spec.rb b/spec/views/admin/campagnes/parcours.html.arb_spec.rb index c2ff54c0f..9118675b4 100644 --- a/spec/views/admin/campagnes/parcours.html.arb_spec.rb +++ b/spec/views/admin/campagnes/parcours.html.arb_spec.rb @@ -3,7 +3,11 @@ require 'rails_helper' describe 'admin/campagnes/_programme.html.arb' do - before { assign(:campagne, Campagne.new(parcours_type: parcours_type)) } + before do + assign(:campagne, Campagne.new(parcours_type: parcours_type)) + assign(:situations_configurations, [situation_configuration_maintenance]) + render + end let(:parcours_type) { nil } let(:maintenance) do @@ -12,9 +16,6 @@ libelle: 'Maintenance' end let(:situation_configuration_maintenance) { SituationConfiguration.new(situation: maintenance) } - before { assign(:situations_configurations, [situation_configuration_maintenance]) } - - before { render } it { expect(rendered).to match(/Maintenance/) }