|
292 | 292 | end |
293 | 293 | end |
294 | 294 |
|
295 | | - describe '#external_data_status_message' do |
296 | | - let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :siret }]) } |
297 | | - let(:dossier) { create(:dossier, procedure:) } |
298 | | - let(:champ) { dossier.champs.first } |
299 | | - |
300 | | - context 'when fetched with a degraded-mode etablissement (API Entreprise was down)' do |
301 | | - before do |
302 | | - champ.update!(external_id: '44011762001530', external_state: 'fetched', etablissement: Etablissement.new(siret: '44011762001530')) |
303 | | - end |
304 | | - |
305 | | - it 'returns :technical_error so the user knows verification is postponed' do |
306 | | - expect(champ.external_data_status_message).to eq(:technical_error) |
307 | | - end |
308 | | - end |
309 | | - |
310 | | - context 'when fetched with a complete etablissement' do |
311 | | - before do |
312 | | - champ.update!(external_id: '44011762001530', external_state: 'fetched', etablissement: create(:etablissement)) |
313 | | - end |
314 | | - |
315 | | - it 'returns nil' do |
316 | | - expect(champ.external_data_status_message).to be_nil |
317 | | - end |
318 | | - end |
319 | | - end |
320 | | - |
321 | | - describe '#external_data_status_message (unit)' do |
322 | | - let(:champ) { Champs::SiretChamp.new } |
323 | | - |
324 | | - it 'returns nil when fetched' do |
325 | | - allow(champ).to receive_messages(pending?: false, external_error?: false, external_data_required_for_conditions?: false) |
326 | | - expect(champ.external_data_status_message).to be_nil |
327 | | - end |
328 | | - |
329 | | - it 'returns nil when pending (message already handled by InputStatusMessageComponent)' do |
330 | | - allow(champ).to receive_messages(pending?: true, external_error?: false, external_data_required_for_conditions?: false) |
331 | | - expect(champ.external_data_status_message).to be_nil |
332 | | - end |
333 | | - |
334 | | - it 'returns :technical_error on external_error with a non-404 code' do |
335 | | - allow(champ).to receive_messages( |
336 | | - pending?: false, external_error?: true, |
337 | | - external_data_required_for_conditions?: false, |
338 | | - fetch_external_data_exceptions: [ExternalDataException.new(error: 'x', code: 503)] |
339 | | - ) |
340 | | - expect(champ.external_data_status_message).to eq(:technical_error) |
341 | | - end |
342 | | - |
343 | | - it 'returns nil on a 404 (handled by the validation error)' do |
344 | | - allow(champ).to receive_messages( |
345 | | - pending?: false, external_error?: true, |
346 | | - external_data_required_for_conditions?: false, |
347 | | - fetch_external_data_exceptions: [ExternalDataException.new(error: 'x', code: 404)] |
348 | | - ) |
349 | | - expect(champ.external_data_status_message).to be_nil |
350 | | - end |
351 | | - |
352 | | - it 'returns nil when a technical retry was followed by a 404 (exceptions accumulate)' do |
353 | | - allow(champ).to receive_messages( |
354 | | - pending?: false, external_error?: true, |
355 | | - external_data_required_for_conditions?: false, |
356 | | - fetch_external_data_exceptions: [ |
357 | | - ExternalDataException.new(error: 'boom', code: 503), |
358 | | - ExternalDataException.new(error: 'NF', code: 404), |
359 | | - ] |
360 | | - ) |
361 | | - expect(champ.external_data_status_message).to be_nil |
362 | | - end |
363 | | - |
364 | | - it 'returns nil when external_data_required_for_conditions? is true' do |
365 | | - allow(champ).to receive_messages(external_data_required_for_conditions?: true) |
366 | | - expect(champ.external_data_status_message).to be_nil |
367 | | - end |
368 | | - end |
369 | | - |
370 | 295 | describe '#handle_exhausted_external_data_retries!' do |
371 | 296 | let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :siret }]) } |
372 | 297 | let(:dossier) { create(:dossier, procedure:) } |
|
0 commit comments