public async Task Post_AuthorRequest_ResponseContainsExpectedAuthorDto() { // Arrange var expectedId = Guid.NewGuid(); var expectedAuthor = new Author { Id = expectedId, FirstName = $"Name{expectedId.ToString()}", LastName = "author last name", DateOfBirth = DateTime.Now }; var request = AuthorRequestFactory.Create(expectedAuthor.FirstName, expectedAuthor.LastName, expectedAuthor.DateOfBirth); A.CallTo(() => _authorRepositoryMock.CreateAsync(A <Author> .That.Matches(a => a.FirstName == expectedAuthor.FirstName))) .Returns(Task.FromResult(expectedAuthor)); using var content = HttpContentFactory.CreateStringContent(request); // Act using var response = await _client.PostAsync("api/authors", content); // Assert var authorResponse = await response.DeserializeToAsync <AuthorResponse>(); authorResponse.FirstName.Should().Be(expectedAuthor.FirstName); authorResponse.LastName.Should().Be(expectedAuthor.LastName); authorResponse.DateOfBirth.Should().Be(expectedAuthor.DateOfBirth); }
public async Task Post_AuthorRequest_StatusCodeIsCreated() { // Arrange var request = AuthorRequestFactory.Create("Mr", "Andersson", DateTime.Now); // Act using var content = HttpContentFactory.CreateStringContent(request); using var response = await _client.PostAsync("api/authors", content); // Assert response.StatusCode.Should().Be(HttpStatusCode.Created); }
public async Task Post_AuthorRequest_ResponseContainsCopyrightAndLocationHeaders() { // Arrange var expectedId = Guid.NewGuid(); var expectedLocation = $"{_baseUrl}/api/authors/{expectedId.ToString()}"; var request = AuthorRequestFactory.Create($"Name{expectedId.ToString()}", "Andersson", DateTime.Now); A.CallTo(() => _authorRepositoryMock.CreateAsync(A <Author> .That.Matches(a => a.FirstName == request.FirstName))) .Returns(Task.FromResult(new Author { Id = expectedId })); using var content = HttpContentFactory.CreateStringContent(request); // Act using var response = await _client.PostAsync("api/authors", content); // Assert response.Headers.Location.Should().Be(expectedLocation); response.Headers.GetValues(Constants.CopyrightHeader).ElementAt(0).Should().Be(Constants.CopyrightValue); }
public async Task Post_AuthorRequest_AuthorIsAdded() { // Arrange var request = AuthorRequestFactory.Create("Mr", "Andersson", DateTime.Now); using var content = HttpContentFactory.CreateStringContent(request); // Act using var response = await _client.PostAsync("api/authors", content); // Assert response.StatusCode.Should().Be(HttpStatusCode.Created); var authorResponse = await response.DeserializeToAsync <AuthorResponse>(); authorResponse.FirstName.Should().Be(request.FirstName); authorResponse.LastName.Should().Be(request.LastName); authorResponse.DateOfBirth.Should().Be(request.DateOfBirth); response.Headers.Location.Should().Be($"{_baseUrl}/api/authors/{authorResponse.Id.ToString()}"); response.Headers.GetValues(Constants.CopyrightHeader).ElementAt(0).Should().Be(Constants.CopyrightValue); await EnsureAuthorIsCorrectOnDatabaseAsync(authorResponse); }