Skip to content

Commit

Permalink
🐛 Ne renvoie pas d'erreur quand il n'y a pas de transcription pour in…
Browse files Browse the repository at this point in the history
…titule ni écrit ni audio
  • Loading branch information
marouria authored and Guitguitou committed Sep 18, 2024
1 parent 9fb091b commit 123cfdb
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 35 deletions.
16 changes: 6 additions & 10 deletions app/models/question_glisser_deposer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,14 @@ def base_json
end

def audio_fields
fields = { 'audio_url' => audio_principal }
if transcription_intitule&.ecrit.blank? && transcription_intitule&.audio_url
fields['intitule_audio'] = transcription_intitule&.audio_url
end
fields
end
return { 'audio_url' => transcription_intitule.audio_url } if transcription_intitule&.complete?

def audio_principal
return unless transcription_intitule.complete? || transcription_modalite_reponse.complete?
return transcription_intitule.audio_url if transcription_intitule.complete?
if transcription_modalite_reponse&.complete?
return { 'audio_url' => transcription_modalite_reponse.audio_url,
'intitule_url' => transcription_intitule&.audio_url }
end

transcription_modalite_reponse.audio_url
{}
end

def reponses_fields
Expand Down
86 changes: 61 additions & 25 deletions spec/models/question_glisser_deposer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,32 @@
describe QuestionGlisserDeposer, type: :model do
it { is_expected.to have_many(:reponses).with_foreign_key(:question_id) }

describe '#as_json' do
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)
end
let!(:reponse1) do
create(:choix, :avec_illustration, :bon, question_id: question.id, position_client: 2)
end
let!(:reponse2) { create(:choix, :avec_illustration, :bon, question_id: question.id) }
let!(:intitule) do
create(:transcription, :avec_audio, question_id: question.id,
ecrit: 'Mon Intitulé')
end
let(:json) { question.as_json }
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)
end
let!(:reponse1) do
create(:choix, :avec_illustration, :bon, question_id: question.id, position_client: 2)
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])
reponsesNonClassees intitule_url])
expect(json['type']).to eql('glisser-deposer-billets')
expect(json['intitule']).to eql('Mon Intitulé')
expect(json['modalite_reponse']).to eql(modalite.ecrit)
expect(json['illustration']).to eql(Rails.application.routes.url_helpers.url_for(
question.illustration
))
expect(json['audio_url']).to eql(Rails.application.routes.url_helpers.url_for(
intitule.audio
))
end

describe 'les reponsesNonClassees' do
Expand All @@ -50,4 +42,48 @@
end
end
end

describe 'les audios' do
context 'quand il y a une modalité de réponse compléte' do
context 'avec un intitulé complet' do
let!(:intitule) do
create(:transcription, :avec_audio, question_id: question.id,
ecrit: 'Mon Intitulé')
end
it do
expect(json['audio_url']).to eql(Rails.application.routes.url_helpers.url_for(
intitule.audio
))
expect(json['intitule']).to eql('Mon Intitulé')
expect(json['intitule_url']).to eql(nil)
end
end

context 'sans intitulé' do
it do
expect(json['audio_url']).to eql(Rails.application.routes.url_helpers.url_for(
modalite.audio
))
expect(json['intitule']).to eql(nil)
expect(json['intitule_url']).to eql(nil)
end
end

context 'avec un intitulé incomplet' do
let!(:intitule) do
create(:transcription, :avec_audio, question_id: question.id,
ecrit: nil)
end
it do
expect(json['audio_url']).to eql(Rails.application.routes.url_helpers.url_for(
modalite.audio
))
expect(json['intitule']).to eql(nil)
expect(json['intitule_url']).to eql(Rails.application.routes.url_helpers.url_for(
intitule.audio
))
end
end
end
end
end

0 comments on commit 123cfdb

Please sign in to comment.