diff --git a/app/models/evenement_question.rb b/app/models/evenement_question.rb index 9c2c0c100..e79aadb66 100644 --- a/app/models/evenement_question.rb +++ b/app/models/evenement_question.rb @@ -3,7 +3,7 @@ class EvenementQuestion def initialize(question:, evenement: nil) @evenement = evenement || Evenement.new(donnees: {}) - @question = question + @question = question || Question.new(nom_technique: evenement.donnees['question']) end def score diff --git a/app/models/restitution/positionnement/export_litteratie.rb b/app/models/restitution/positionnement/export_litteratie.rb index c74581026..14cba0569 100644 --- a/app/models/restitution/positionnement/export_litteratie.rb +++ b/app/models/restitution/positionnement/export_litteratie.rb @@ -3,7 +3,9 @@ module Restitution module Positionnement - class ExportLitteratie + class ExportLitteratie + attr_reader :evenements_questions + def initialize(partie, onglet_xls) super() @partie = partie @@ -14,12 +16,14 @@ def initialize(partie, onglet_xls) questions = Question.where(nom_technique: evenements_reponses.map do |evenement| evenement.donnees['question'] end).order(:nom_technique) - @evenements_questions = questions.map do |question| - evenement = evenements_reponses.find do |e| - e.question_nom_technique == question.nom_technique + + @evenements_questions = evenements_reponses.map do |evenement| + question = questions.find do |question| + evenement.donnees['question'] == question.nom_technique end EvenementQuestion.new(question: question, evenement: evenement) end + @onglet_xls = onglet_xls @temps_par_question = Restitution::Metriques::TempsPasseParQuestion .new(@partie.evenements).calculer diff --git a/spec/models/restitution/positionnement/export_litteratie_spec.rb b/spec/models/restitution/positionnement/export_litteratie_spec.rb new file mode 100644 index 000000000..593107c4b --- /dev/null +++ b/spec/models/restitution/positionnement/export_litteratie_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Restitution::Positionnement::ExportLitteratie do + subject(:service) do + described_class.new(partie, onglet_xls) + end + + let(:questions) { [] } + let(:questionnaire) { create :questionnaire, questions: questions } + let(:situation) { create :situation, questionnaire: questionnaire } + let(:partie) { create :partie, situation: situation } + let(:export) { ImportExport::ExportXls.new } + let(:onglet_xls) do + entetes = ImportExport::Positionnement::ExportDonnees.new(partie).entetes + export.cree_worksheet_donnees(entetes) + end + let(:spreadsheet) { export.workbook } + let(:worksheet) { spreadsheet.worksheet(0) } + + describe '#new' do + it 'crée des évènements questions à partir des évènements' do + create :evenement_reponse, partie: partie, + donnees: { + question: 'LOdi1' + } + + evenements_questions = service.evenements_questions + + expect(evenements_questions.size).to eq(1) + expect(evenements_questions.first.nom_technique).to eq('LOdi1') + end + end +end