From e4a63db3969b2c7ffe73b44c111d4062e2a12e4d Mon Sep 17 00:00:00 2001 From: mendozagit Date: Fri, 23 Oct 2026 08:45:46 -0600 Subject: [PATCH] =?UTF-8?q?test(listen):=20esperar=20el=20diagn=C3=B3stico?= =?UTF-8?q?=20del=20acuse=20antes=20de=20afirmarlo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La API registra cada acuse al recibir la petición, pero el CLI escribe el diagnóstico cuando recibe la respuesta. Las pruebas esperaban solo a los acuses y a los sondeos y leían stderr de inmediato, así que en runners lentos el diagnóstico podía no estar escrito todavía. Ahora la prueba espera la línea del diagnóstico cuando debe aparecer. En el caso sin --verbose, deja que listen termine antes de afirmar que no aparece: el apagado espera a que terminen las entregas pendientes. --- .../Listen/ListenCommandTests.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/FiscalApi.Cli.Tests/Listen/ListenCommandTests.cs b/tests/FiscalApi.Cli.Tests/Listen/ListenCommandTests.cs index 703843d..379df3a 100644 --- a/tests/FiscalApi.Cli.Tests/Listen/ListenCommandTests.cs +++ b/tests/FiscalApi.Cli.Tests/Listen/ListenCommandTests.cs @@ -338,10 +338,16 @@ public async Task A_409_on_the_ack_is_reported_only_with_verbose(bool verbose) StartListen(verbose ? ["--verbose"] : []); await ExpectAsync(_api.WaitForAcksAsync(2)); + var diagnostic = $"Could not acknowledge delivery dlv_0001: {notAwaiting}"; + if (verbose) + { + await WaitForErrorAsync(diagnostic); + } - Assert.Equal(verbose, Error.Contains($"Could not acknowledge delivery dlv_0001: {notAwaiting}")); Assert.Equal(2, _api.Acks.Count); Assert.False(_run!.IsCompleted, "listen terminó por un acuse tardío."); + Assert.Equal(ExitCodes.Cancelled, await PressCtrlCAsync()); + Assert.Equal(verbose, Error.Contains(diagnostic)); } [Fact] @@ -355,7 +361,7 @@ public async Task Another_rejected_ack_is_reported_and_listen_goes_on() await ExpectAsync(_api.WaitForAcksAsync(2)); await ExpectAsync(_api.WaitForPollsAsync(3)); - Assert.Contains("Could not acknowledge delivery dlv_0001: No se encontró el recurso dlv_0001.", Error); + await WaitForErrorAsync("Could not acknowledge delivery dlv_0001: No se encontró el recurso dlv_0001."); Assert.False(_run!.IsCompleted, "listen terminó por un acuse rechazado."); } @@ -800,6 +806,9 @@ public async Task Invalid_options_are_usage_errors_without_calling_the_api(strin private static string EventLine(string type, string eventId, string suffix) => $@"(?m)^\d{{4}}-\d{{2}}-\d{{2}} \d{{2}}:\d{{2}}:\d{{2}} {Regex.Escape(type)} \[{Regex.Escape(eventId)}\]{Regex.Escape(suffix)}\r?$"; + private Task WaitForErrorAsync(string line) => + ExpectAsync(FakeListenerApi.WaitUntilAsync(() => Error.Contains(line, StringComparison.Ordinal), $"No llegó a stderr: {line}")); + private async Task ExpectAsync(Task condition) { try