diff --git a/app/helpers/active_admin/views_helper.rb b/app/helpers/active_admin/views_helper.rb index 0f29b7635..b0ee1c355 100644 --- a/app/helpers/active_admin/views_helper.rb +++ b/app/helpers/active_admin/views_helper.rb @@ -7,5 +7,6 @@ module ViewsHelper include ErreurHelper include PriseEnMainHelper include TranscriptionHelper + include QuestionHelper end end diff --git a/app/helpers/question_helper.rb b/app/helpers/question_helper.rb new file mode 100644 index 000000000..a2f83145a --- /dev/null +++ b/app/helpers/question_helper.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module QuestionHelper + def type_clic(question) + question.clic_multiple? ? 'multiple' : 'simple' + end +end diff --git a/app/models/question_clic_dans_image.rb b/app/models/question_clic_dans_image.rb index 3a39ba182..211f31bbd 100644 --- a/app/models/question_clic_dans_image.rb +++ b/app/models/question_clic_dans_image.rb @@ -16,6 +16,17 @@ def as_json(_options = nil) json.merge!(json_audio_fields, additional_json_fields) end + def clic_multiple? + return false unless zone_cliquable.attached? + + svg_content = zone_cliquable.download + + doc = Nokogiri::XML(svg_content, nil, 'UTF-8') + elements_cliquables = doc.css('.bonne-reponse') + + elements_cliquables.size > 1 + end + private def base_json diff --git a/app/views/admin/questions_clic_dans_image/_show.html.arb b/app/views/admin/questions_clic_dans_image/_show.html.arb index 0f8fb3152..b9fbb1da5 100644 --- a/app/views/admin/questions_clic_dans_image/_show.html.arb +++ b/app/views/admin/questions_clic_dans_image/_show.html.arb @@ -34,6 +34,9 @@ panel 'Détails de la question' do row :audio_consigne do tag_audio(consigne) end + row :clic do + type_clic(question_clic_dans_image) + end row :created_at end end diff --git a/spec/models/question_clic_dans_image_spec.rb b/spec/models/question_clic_dans_image_spec.rb index eb83dc630..eeb1b5679 100644 --- a/spec/models/question_clic_dans_image_spec.rb +++ b/spec/models/question_clic_dans_image_spec.rb @@ -70,4 +70,32 @@ end end end + + describe '#clic_multiple?' do + context 'avec plusieurs éléments cliquables' do + let(:question) do + create(:question_clic_dans_image, + zone_cliquable: Rack::Test::UploadedFile.new( + Rails.root.join('spec/support/accessibilite-avec-reponse-multiple.svg') + )) + end + + it 'est clic simple' do + expect(question.clic_multiple?).to be true + end + end + + context 'avec un seul élément cliquable' do + let(:question) do + create(:question_clic_dans_image, + zone_cliquable: Rack::Test::UploadedFile.new( + Rails.root.join('spec/support/accessibilite-avec-reponse.svg') + )) + end + + it 'est clic multiple' do + expect(question.clic_multiple?).to be false + end + end + end end diff --git a/spec/support/accessibilite-avec-reponse-multiple.svg b/spec/support/accessibilite-avec-reponse-multiple.svg new file mode 100644 index 000000000..07289fcfc --- /dev/null +++ b/spec/support/accessibilite-avec-reponse-multiple.svg @@ -0,0 +1 @@ +