Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Permet l'enregistrement du questionnaire d'une situation d'une campagne #1472

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/admin/campagnes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
permit_params :libelle, :code, :compte,
:compte_id, :affiche_competences_fortes, :parcours_type_id, :type_programme,
options_personnalisation: [],
situations_configurations_attributes: %i[id situation_id _destroy]
situations_configurations_attributes: %i[id situation_id questionnaire_id _destroy]

config.sort_order = 'created_at_desc'

Expand Down
2 changes: 1 addition & 1 deletion spec/factories/questionnaire.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
sequence(:nom_technique) { |n| "questionnaire_#{n}" }

trait :livraison_avec_redaction do
libelle { 'Livraison (MES illettrisme 2)' }
libelle { 'Livraison avec rédaction' }
nom_technique { Questionnaire::LIVRAISON_AVEC_REDACTION }
end

Expand Down
70 changes: 51 additions & 19 deletions spec/features/admin/campagne_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,16 @@
let(:structure_conseiller) { create :structure_locale }
let(:compte_conseiller) { create :compte_admin, structure: structure_conseiller }
let!(:compte_connecte) { connecte(compte_conseiller) }
let!(:ma_campagne) do
create :campagne, libelle: 'Amiens 18 juin', code: 'A5RC8', compte: compte_connecte
end
let!(:campagne) do
autre_compte_conseiller = create :compte_admin, email: 'orga@eva.fr'
create :campagne, libelle: 'Rouen 30 mars', code: 'A5ROUEN', compte: autre_compte_conseiller
end
let!(:evaluation) { create :evaluation, campagne: campagne }
let!(:evaluation_conseiller) { create :evaluation, campagne: ma_campagne }

describe 'index' do
let!(:ma_campagne) do
create :campagne, libelle: 'Amiens 18 juin', code: 'A5RC8', compte: compte_connecte
end
let!(:campagne) do
autre_compte_conseiller = create :compte_admin, email: 'orga@eva.fr'
create :campagne, libelle: 'Rouen 30 mars', code: 'A5ROUEN', compte: autre_compte_conseiller
end

context 'en conseiller' do
before { visit admin_campagnes_path }

Expand Down Expand Up @@ -47,6 +46,8 @@
end

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
Expand Down Expand Up @@ -89,6 +90,10 @@
campagne = Campagne.order(:created_at).last
expect(campagne.code).to eq 'CODESUPERADMIN'
expect(campagne.compte).to eq compte_conseiller

situations_configurations = campagne.situations_configurations.includes(:situation)
expect(situations_configurations[0].situation).to eq situation_inventaire
expect(situations_configurations[1].situation).to eq situation_maintenance
end
end
end
Expand Down Expand Up @@ -143,39 +148,66 @@
end

describe 'modification' do
let!(:questionnaire_sans_livraison) { create :questionnaire, :livraison_sans_redaction }
let!(:questionnaire_avec_livraison) { create :questionnaire, :livraison_avec_redaction }
let!(:situation_livraison) do
create :situation_livraison, questionnaire: questionnaire_sans_livraison
end
let!(:parcours_type) do
parcours = create :parcours_type, nom_technique: :parcours_type
parcours.situations_configurations.create situation: situation_livraison
parcours
end
let!(:campagne) do
autre_compte_conseiller = create :compte_admin, email: 'orga@eva.fr'
create :campagne, libelle: 'Rouen 30 mars', code: 'A5ROUEN',
compte: autre_compte_conseiller, parcours_type: parcours_type
end

context 'en superadmin' do
before do
compte_conseiller.update(role: 'superadmin')
visit edit_admin_campagne_path(campagne)
end

context 'modifie la campagne et ses situations' do
let!(:situation) { create :situation_inventaire }

before do
fill_in :campagne_code, with: 'UNC0D3'
click_on 'Modifier la campagne'
select 'Livraison avec rédaction',
from: 'campagne_situations_configurations_attributes_0_questionnaire_id'
expect do
click_on 'Modifier la campagne'
end.to raise_error(Bullet::Notification::UnoptimizedQueryError,
/AVOID eager loading detected/)
end

it do
campagne = Campagne.order(:created_at).last
expect(campagne.code).to eq 'UNC0D3'

situations_configurations = campagne.situations_configurations.includes(:situation)
expect(situations_configurations[0].situation).to eq situation_livraison
expect(situations_configurations[0].questionnaire).to eq questionnaire_avec_livraison
end
end
end
end

describe 'suppression' do
before { evaluation.destroy }

context 'quand je supprime une campagne avec des évaluations associées' do
before { campagne.destroy }
let!(:campagne) do
autre_compte_conseiller = create :compte_admin, email: 'orga@eva.fr'
create :campagne, libelle: 'Rouen 30 mars', code: 'A5ROUEN', compte: autre_compte_conseiller
end
let!(:evaluation) { create :evaluation, campagne: campagne }

it 'soft_delete la campagne' do
expect(campagne.deleted_at).not_to be nil
context 'quand je supprime une campagne avec des évaluations associées déjà supprimée' do
before do
evaluation.destroy
campagne.destroy
end

it 'garde les évaluations soft_deleted associées en mémoire' do
it "soft_delete la campagne mais garde l'association avec l'evaluation" do
expect(campagne.deleted_at).not_to be nil
expect(evaluation.campagne_id).to eq campagne.id
end
end
Expand Down