public async Task AddPersonAsync_WithCorrectInput_ReturnsOk() { var mockLogger = Mock.Of <ILogger <MaintenanceController> >(); var mockFaceClientService = new Mock <IFaceClientService>(); mockFaceClientService .Setup(service => service.CreatePersonAsync(It.IsNotNull <string>(), It.IsNotNull <string>())) .Returns(() => Task.FromResult(new Cloud.Models.Person { PersonId = $"{Guid.NewGuid()}" })); var dto = new NewPersonDto { FaceUrl = $"http://www.google.com", Name = $"{Guid.NewGuid()}" }; var controller = new MaintenanceController(mockFaceClientService.Object, mockLogger); var actionResult = await controller.AddPersonAsync(dto); Assert.NotNull(actionResult); var okObjectResult = Assert.IsAssignableFrom <OkObjectResult>(actionResult); var person = Assert.IsAssignableFrom <Cloud.Models.Person>(okObjectResult.Value); person.Should().NotBeNull(); person.PersonId.Should().NotBeNullOrWhiteSpace(); }
public IActionResult Post([FromBody] NewPersonDto dto) { var person = _personService.Add(dto.ToEntity()); if (!person.IsValid()) { return(BadRequest()); } return(StatusCode(201, person.ToDto())); }
public void Post_ShouldCallService_AndReturn201_WhenEverythingGoesRight() { var dto = new NewPersonDto { Name = "João", Email = "*****@*****.**", DateOfBirth = new DateTime(1970, 09, 16) }; var personMock = new Mock <Person>(); _serviceMock.Setup(x => x.Add(It.IsAny <Person>())).Returns(personMock.Object); personMock.Setup(x => x.IsValid()).Returns(true); var result = _controller.Post(dto); var objResult = Assert.IsType <ObjectResult>(result); Assert.Equal(201, objResult.StatusCode); }
public void Post_ShouldCallService_AndReturn400WithErrors_WhenValidationFails() { var dto = new NewPersonDto { Name = "João", Email = "*****@*****.**", DateOfBirth = new DateTime(1970, 09, 16) }; var personMock = new Mock <Person>(); _serviceMock.Setup(x => x.Add(It.IsAny <Person>())).Returns(personMock.Object); personMock.Setup(x => x.IsValid()).Returns(false); var result = _controller.Post(dto); var objResult = Assert.IsType <BadRequestResult>(result); Assert.Equal(400, objResult.StatusCode); }
public async Task <IActionResult> AddPersonAsync(NewPersonDto dto) { try { if (null == dto) { return(BadRequest(dto)); } var person = await _faceClientService.CreatePersonAsync(dto.Name, dto.FaceUrl); return(Ok(person)); } catch (Exception exception) { _logger.LogError(exception, "Failed to add person to cognitive servcices."); throw; } }
public async Task AddPersonAsync_WithFaceClientServiceFault_ThrowsException() { var mockLogger = Mock.Of <ILogger <MaintenanceController> >(); var mockFaceClientService = new Mock <IFaceClientService>(); mockFaceClientService .Setup(service => service.CreatePersonAsync(It.IsNotNull <string>(), It.IsNotNull <string>())) .Throws <NotImplementedException>(); var dto = new NewPersonDto { FaceUrl = $"http://www.google.com", Name = $"{Guid.NewGuid()}" }; var controller = new MaintenanceController(mockFaceClientService.Object, mockLogger); await Assert.ThrowsAsync <NotImplementedException>(async() => { await controller.AddPersonAsync(dto); }); }
private async Task <PersonDto> CreateNewPerson(string name, string email, DateTime dateOfBirth) { var dto = new NewPersonDto { Name = name, DateOfBirth = dateOfBirth, Email = email }; var response = await Server .CreateRequest("api/person") .And(req => req.Content = GenerateRequestContent(dto)) .PostAsync(); Assert.Equal(201, (int)response.StatusCode); var responseDto = JsonConvert.DeserializeObject <PersonDto>(await response.Content.ReadAsStringAsync()); Assert.NotNull(responseDto); Assert.Equal(name, responseDto.Name); return(responseDto); }