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();
        }
Beispiel #2
0
        public IActionResult Post([FromBody] NewPersonDto dto)
        {
            var person = _personService.Add(dto.ToEntity());

            if (!person.IsValid())
            {
                return(BadRequest());
            }

            return(StatusCode(201, person.ToDto()));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            });
        }
Beispiel #7
0
        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);
        }