Ejemplo n.º 1
0
        public async Task GetPorNombreAsync_Flujo_OK()
        {
            // Arrange
            const string BUSQUEDA      = "argentin";
            const string NOM_ESPERADO  = "Argentina";
            const int    HAB_ESPERADOS = 4700001;

            _paisesLogger = _mockConfig.MockearPaisesControllerLoggerMock();
            _apiServer    = _mockConfig.MockearPaisesApiServerMock();
            _apiServer.Given(Request.Create()
                             .WithPath($"/name/{BUSQUEDA}"))
            .RespondWith(Response.Create()
                         .WithSuccess()
                         .WithBody(JsonSerializer.Serialize(new PaisDto[] { new PaisDto {
                                                                                Nombre = NOM_ESPERADO, Poblacion = HAB_ESPERADOS
                                                                            } }))
                         .WithHeader("Content-Type", "application/json;charset=utf-8")
                         );

            _factory = _mockConfig.Create();
            _client  = _factory.CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });

            //while (true)
            //    Thread.Sleep(1000);
            // Act
            var response = await _client.GetAsync($"/pais/nombre/{BUSQUEDA}");

            // Assert
            var respCode = response.StatusCode;
            var json     = await response.Content.ReadAsStringAsync();

            var resultado = JsonSerializer.Deserialize <PaisDto[]>(json);
            var unicoRdo  = resultado?.FirstOrDefault();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.True(resultado?.Length == 1);
            Assert.NotNull(unicoRdo);
            Assert.Equal(NOM_ESPERADO, unicoRdo.Nombre);
            Assert.Equal(HAB_ESPERADOS, unicoRdo.Poblacion);
            Assert.True(_apiServer.VerifyAll());
        }
Ejemplo n.º 2
0
        public async Task GetPorNombreAsync_Flujo_ErrorYEscribeLog()
        {
            // Arrange
            const HttpStatusCode ERROR_ESPERADO    = HttpStatusCode.InternalServerError;
            const string         CODIGO_VALIDACION = "E01";
            Func <string, bool>  ALGUNA_DESC_ERROR = (string msj) => !string.IsNullOrWhiteSpace(msj);

            _paisesLogger = _mockConfig.MockearPaisesControllerLoggerMock();
            _apiPaises    = _mockConfig.MockearApiPaises();
            _factory      = _mockConfig.Create();

            _client = _factory.CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });
            _apiPaises.Setup(s =>
                             s.BuscarPaisesPorNombreAsync("xxx"))
            .ThrowsAsync(new Exception("Excepción de prueba"))
            .Verifiable();

            _paisesLogger.SetupAnyLog();

            // Act
            var response = await _client.GetAsync($"/pais/nombre/xxx");

            // Assert
            var respCode = response.StatusCode;
            var json     = await response.Content.ReadAsStringAsync();

            var validacion = JsonSerializer.Deserialize <MensajeValidacion>(json, _jsonSettings);

            Assert.Equal(ERROR_ESPERADO, response.StatusCode);
            Assert.NotNull(validacion);
            Assert.Equal(CODIGO_VALIDACION, validacion.Mensaje);
            Assert.True(ALGUNA_DESC_ERROR(validacion.Descripcion));

            _apiPaises.Verify();
            _paisesLogger.VerifyAll();
        }