Skip to content

Commit

Permalink
👽️ Envoi l'audio de la consigne au client
Browse files Browse the repository at this point in the history
  • Loading branch information
marouria authored and cprodhomme committed Oct 21, 2024
1 parent 06c3ca3 commit a6ef0d5
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 28 deletions.
1 change: 1 addition & 0 deletions app/controllers/api/questionnaires_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def includes_association(type)
default_question_includes = [
{ transcription_intitule: :audio_attachment },
{ transcription_modalite_reponse: :audio_attachment },
{ transcription_consigne: :audio_attachment },
:illustration_attachment
]
default_question_includes.push(association_to_include).flatten
Expand Down
27 changes: 12 additions & 15 deletions app/models/question.rb
Original file line number Diff line number Diff line change
Expand Up @@ -58,18 +58,23 @@ def supprime_attachment
end

def json_audio_fields
return {} if sans_audios?
return { 'audio_url' => transcription_intitule.audio_url } if transcription_intitule&.complete?
if modalite_complete_sans_audio_intitule?
return { 'audio_url' => transcription_modalite_reponse.audio_url }
json = { 'consigne_audio' => transcription_consigne&.audio_url }
json['audio_url'] = audio_url
unless transcription_intitule&.complete?
json['intitule_audio'] =
transcription_intitule&.audio_url
end

{ 'audio_url' => transcription_modalite_reponse&.audio_url,
'intitule_audio' => transcription_intitule&.audio_url }
json
end

private

def audio_url
return transcription_intitule.audio_url if transcription_intitule&.complete?

transcription_modalite_reponse&.audio_url
end

def reject_transcriptions(attributes)
attributes['audio'].blank? && attributes['ecrit'].blank? if new_record?
end
Expand All @@ -83,12 +88,4 @@ def supprime_transcription
def supprime_illustration?
illustration.attached? && supprimer_illustration == '1'
end

def sans_audios?
transcription_intitule&.audio_url.blank? && transcription_modalite_reponse&.audio_url.blank?
end

def modalite_complete_sans_audio_intitule?
transcription_intitule&.audio_url.blank? && transcription_modalite_reponse&.complete?
end
end
2 changes: 1 addition & 1 deletion spec/models/question_clic_dans_image_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
json = question_clic_dans_image.as_json
expect(json.keys)
.to match_array(%w[description id intitule audio_url nom_technique type illustration
modalite_reponse zone_cliquable image_au_clic])
modalite_reponse zone_cliquable image_au_clic consigne_audio])
expect(json['type']).to eql('clic-dans-image')
expect(json['intitule']).to eql('Mon Intitulé')
expect(json['illustration']).to eql(Rails.application.routes.url_helpers.url_for(
Expand Down
3 changes: 2 additions & 1 deletion spec/models/question_glisser_deposer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
it 'serialise les champs' do
expect(json.keys).to match_array(%w[id intitule audio_url nom_technique
description illustration modalite_reponse type
reponsesNonClassees zone_depot_url])
reponsesNonClassees zone_depot_url consigne_audio
intitule_audio])
expect(json['type']).to eql('glisser-deposer')
expect(json['modalite_reponse']).to eql(modalite.ecrit)
expect(json['illustration']).to eql(Rails.application.routes.url_helpers.url_for(
Expand Down
2 changes: 1 addition & 1 deletion spec/models/question_qcm_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
json = question_qcm.as_json
expect(json.keys)
.to match_array(%w[choix description id intitule audio_url nom_technique type metacompetence
type_qcm illustration modalite_reponse])
type_qcm illustration modalite_reponse consigne_audio])
expect(json['type']).to eql('qcm')
expect(json['intitule']).to eql('Mon Intitulé')
expect(json['illustration']).to eql(Rails.application.routes.url_helpers.url_for(
Expand Down
2 changes: 1 addition & 1 deletion spec/models/question_saisie_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
it 'serialise les champs' do
expect(json.keys).to match_array(%w[id intitule audio_url nom_technique suffix_reponse
description illustration modalite_reponse type sous_type
placeholder reponse])
placeholder reponse consigne_audio])
expect(json['type']).to eql('saisie')
expect(json['sous_type']).to eql('redaction')
expect(json['placeholder']).to eql('écrivez ici')
Expand Down
24 changes: 15 additions & 9 deletions spec/models/question_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,8 @@

describe '#json_audio_fields' do
let(:question) { create :question }

context "quand la question n'a pas de transcriptions audios" do
it 'ne retourne rien' do
expect(question.json_audio_fields).to be_empty
end
let!(:transcription_consigne) do
create :transcription, question_id: question.id, categorie: :consigne
end

context 'quand la question a des transcriptions audios' do
Expand All @@ -69,8 +66,8 @@

it "retourne l'url de l'audio de l'intitulé dans le champ audio_url" do
expect(question.transcription_intitule.complete?).to be true
expect(question.json_audio_fields).to eq(
{ 'audio_url' => question.transcription_intitule.audio_url }
expect(question.json_audio_fields['audio_url']).to eq(
question.transcription_intitule.audio_url
)
end
end
Expand Down Expand Up @@ -99,8 +96,8 @@

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 be true
expect(question.json_audio_fields).to eq(
{ 'audio_url' => question.transcription_modalite_reponse.audio_url }
expect(question.json_audio_fields['audio_url']).to eq(
question.transcription_modalite_reponse.audio_url
)
end
end
Expand All @@ -123,6 +120,15 @@
expect(fields['intitule_audio']).to eq(question.transcription_intitule.audio_url)
end
end

it "retourne l'audio de la consigne" do
question.transcription_consigne.audio.attach(
io: Rails.root.join('spec/support/alcoolique.mp3').open, filename: 'alcoolique.mp3'
)
expect(question.json_audio_fields['consigne_audio']).to eq(
question.transcription_consigne.audio_url
)
end
end
end
end

0 comments on commit a6ef0d5

Please sign in to comment.