public async Task Post_HasValidationErrors_ReturnsBadRequestAndValidationError() { // Arrange var model = new Contract.Book { ISBN = "9780132350884", Author = "Robert C. Martin", Title = "Clean Code: A Handbook of Agile Software Craftsmanship", PageCount = 464 }; var validationResult = new ValidationResult(); const string expectedValidationMessage = "A book with the same ISBN already exists!"; validationResult.PropertyValidations.Add(nameof(Book.ISBN), new List <string> { expectedValidationMessage }); _booksService.Add(Arg.Any <Book>()).Returns(new OperationResult <Book> { Status = Status.ValidationError, ValidationResult = validationResult }); // Act var result = await _booksController.Post(model) as BadRequestObjectResult; var validation = (result.Value as IEnumerable <KeyValuePair <string, object> >).First(); // Assert Assert.AreEqual((int)HttpStatusCode.BadRequest, result.StatusCode); Assert.AreEqual(nameof(Book.ISBN), validation.Key); Assert.AreEqual(expectedValidationMessage, (validation.Value as string[])[0]); }
public async Task Put_BookNotFound_ReturnsNotFound() { // Arrange var model = new Contract.Book { ISBN = "9780132350884", Author = "Robert C. Martin", Title = "Clean Code: A Handbook of Agile Software Craftsmanship", PageCount = 464 }; _booksService.Update(Arg.Any <Book>()).Returns(new OperationResult <Book> { Status = Status.NotFound }); // Act var result = await _booksController.Put(model) as StatusCodeResult; // Assert Assert.AreEqual((int)HttpStatusCode.NotFound, result.StatusCode); }
public async Task Post_NoValidationError_ReturnsCreatedStatusCode() { // Arrange var model = new Contract.Book { ISBN = "9780132350884", Author = "Robert C. Martin", Title = "Clean Code: A Handbook of Agile Software Craftsmanship", PageCount = 464 }; _booksService.Add(Arg.Any <Book>()).Returns(new OperationResult <Book> { Status = Status.Success }); // Act var result = await _booksController.Post(model) as StatusCodeResult; // Assert Assert.AreEqual((int)HttpStatusCode.Created, result.StatusCode); }
public void DeleteBook(Contract.Book book) { _bookList.ToList().Remove(book); }