public async void HandleAddBookCommand_WithCorrectParameters_ShouldReturnNoErrors()
        {
            //Arrange
            TestBaseArrangements baseArrangements = new TestBaseArrangements();

            #region .:: Objects build ::.
            AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", Guid.NewGuid().ToString());
            Author         author         = new Author(Guid.NewGuid(), "Stephen King");
            Book           book           = new Book(Guid.NewGuid(), "Pet Sematary", 2013, 1, "9788581050393", author);
            #endregion

            #region .:: Mocks ::.
            baseArrangements.Mocker.GetMock <IAuthorRepository>()
            .Setup(b => b.GetAuthorById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Author>(author));

            baseArrangements.Mocker.GetMock <IBookRepository>()
            .Setup(b => b.AddBook(It.IsAny <Book>()))
            .Returns(() => Task.FromResult(book));
            #endregion

            var sut = baseArrangements.Mocker.CreateInstance <AddBookCommandHandler>();

            //Act
            AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken());

            //Assert
            baseArrangements.DomainNotifications.GetAll().Should().BeEmpty();
            baseArrangements.Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Once());
            baseArrangements.Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Once());
        }
Exemplo n.º 2
0
        public async void HandleAddBookCommand_WithInvalidGuid_ShouldReturnInvalidAuthorGuid(string authorId, string outputError)
        {
            //Arrange
            AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", authorId);
            var            sut            = Mocker.CreateInstance <AddBookCommandHandler>();

            //Act
            AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken());

            //Assert

            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == outputError);
            Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Never());
        }
Exemplo n.º 3
0
        public async void HandleAddBookCommand_WitInvalidAuthor_ShouldReturnInvalidAuthor()
        {
            //Arrange
            AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", Guid.NewGuid().ToString());
            var            sut            = Mocker.CreateInstance <AddBookCommandHandler>();


            Mocker.GetMock <IAuthorRepository>()
            .Setup(b => b.GetAuthorById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Author>(null));

            //Act
            AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken());

            //Assert
            Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Once());
            Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Never());
            DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.Contain(x => x == Messages.Book_AuthorShouldNotBeNull);
        }
        public async Task <IActionResult> AddBook(AddBookCommand command)
        {
            AddBookCommandResponseViewModel result = await _mediator.Send(command);

            return(await ReturnCommand(result));
        }