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);
        }
Example #4
0
 public void DeleteBook(Contract.Book book)
 {
     _bookList.ToList().Remove(book);
 }