public void AddAuthor_WithCorrectData_ShouldAddAuthorAndReturn201Created() { // Arrange var authors = new List<Author>(); // Act var mockContext = new Mock<IMoviesGalleryData>(); mockContext.Setup(r => r.Authors).Returns(this.mockContainer.AuthorRepositoryMock.Object); var controller = new AuthorsController(mockContext.Object); this.SetupController(controller); this.mockContainer.AuthorRepositoryMock.Setup(r => r.Add(It.IsAny<Author>())) .Callback((Author author) => { authors.Add(author); }); var authorModel = new AddAuthorInputModel() { Name = "TestAuthor", DateOfBirth = new DateTime(2000, 1, 1) }; var httpPostResponse = controller.PostAuthor(authorModel).ExecuteAsync(CancellationToken.None).Result; var result = httpPostResponse.Content.ReadAsAsync<ShortActorDataModel>().Result; // Assert mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(1, authors.Count); Assert.AreEqual(authorModel.Name, result.Name); }
public IHttpActionResult PostAuthor(AddAuthorInputModel authorModel) { if (authorModel == null) { return this.BadRequest("Model cannot be null"); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var author = new Author() { Name = authorModel.Name, DateOfBirth = authorModel.DateOfBirth, Biography = authorModel.Biography, HomeTown = authorModel.HomeTown }; this.MoviesGalleryData.Authors.Add(author); this.MoviesGalleryData.SaveChanges(); return this.Ok(new { author.Id, author.Name }); }