Example #1
0
        public void ReturnBookFromUser(Guid userAggregateRootId, Guid bookAggregateRootId)
        {
            ReturnBookCommand command = new ReturnBookCommand
            {
                UserAggregateRootId = userAggregateRootId,
                BookAggregateRootId = bookAggregateRootId
            };

            CommitCommand(command);
        }
        public void ReturnBookFromUser(long bookId, long userAccountId)
        {
            ReturnBookCommand command = new ReturnBookCommand
            {
                BookAggregateRootId        = bookId,
                UserAccountAggregateRootId = userAccountId
            };

            this.CommitCommand(command);
        }
        public Guid Return(Guid customerId, Guid bookId)
        {
            var command = new ReturnBookCommand
            {
                BookId     = bookId,
                CustomerId = customerId
            };

            _commandPublisher.Publish(command);
            return(command.CommandUniqueId);
        }
Example #4
0
        public void HandleCommand(ReturnBookCommand command)
        {
            User user = DomainRepository.Get <User>(command.UserAggregateRootId);
            Book book = DomainRepository.Get <Book>(command.BookAggregateRootId);

            user.ReturnBook(book);
            book.ReceiveStock(1);
            DomainRepository.Save(user);
            DomainRepository.Save(book);
            DomainRepository.Commit();
        }
 public bool Handle(ReturnBookCommand message)
 {
     using (IDomainRepository domainRepository = this.GetDomainRepository())
     {
         UserAccount user = domainRepository.Get <UserAccount>(message.UserAccountAggregateRootId);
         Book        book = domainRepository.Get <Book>(message.BookAggregateRootId);
         IUserAccountBookTransferService bookTransService = this.GetBookTransferService();
         bookTransService.ReturnBookFromUser(user, book);
         domainRepository.Save(user);
         domainRepository.Save(book);
         domainRepository.Commit();
         return(domainRepository.Committed);
     }
 }
Example #6
0
        public async void HandleReturnBookCommand_WithInvalidGuid_ShouldReturnInvalidLoanGuid(string loanId, string outputError)
        {
            //Arrange
            ReturnBookCommand returnBookCommand = new ReturnBookCommand(loanId);
            var sut = Mocker.CreateInstance <ReturnBookCommandHandler>();

            //Act
            ReturnBookCommandResponseViewModel result = await sut.Handle(returnBookCommand, new CancellationToken());

            //Assert

            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == outputError);
            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Never());
        }
Example #7
0
        public async Task Return_Book()
        {
            using (var context = GetContextWithData())
            {
                var handler = new ReturnBookCommandHandler(context);
                var command = new ReturnBookCommand
                {
                    Id = context.Books.First().Id
                };

                var returnedBook = await handler.Handle(command, CancellationToken.None);

                Assert.Null(returnedBook.Lender);
            }
        }
Example #8
0
        public async void HandleReturnBookCommand_WithInvalidLoan_ShouldReturnInvalidLoan()
        {
            //Arrange
            ReturnBookCommand returnBookCommand = new ReturnBookCommand(Guid.NewGuid().ToString());
            var sut = Mocker.CreateInstance <ReturnBookCommandHandler>();

            Mocker.GetMock <IBookLoanRepository>()
            .Setup(p => p.GetByLoanId(It.IsAny <Guid>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult <BookLoan>(null));

            //Act
            ReturnBookCommandResponseViewModel result = await sut.Handle(returnBookCommand, new CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == "Book loan not found");

            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Never());
        }
Example #9
0
        public async void HandleReturnBookCommand_WithValidInfos_ShouldReturnNoErrors()
        {
            //Arrange
            ReturnBookCommand returnBookCommand = new ReturnBookCommand(Guid.NewGuid().ToString());
            var sut = Mocker.CreateInstance <ReturnBookCommandHandler>();

            BookLoan bookLoan = BookLoanFactory.ReturnLoan();

            bookLoan.Book.WithBookSituation(BookSituationEnum.Lent);


            Mocker.GetMock <IBookLoanRepository>()
            .Setup(p => p.GetByLoanId(It.IsAny <Guid>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult <BookLoan>(bookLoan));

            //Act
            ReturnBookCommandResponseViewModel result = await sut.Handle(returnBookCommand, new CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().BeEmpty();

            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Once());
        }
        public async Task <IActionResult> ReturnBook([FromBody] ReturnBookCommand command)
        {
            RequestResult requestResult = await _orquestrator.SendCommand(command);

            return(await ReturnRequestResult(requestResult));
        }
Example #11
0
        public async Task <IActionResult> ReturnBook(ReturnBookCommand command)
        {
            var result = await _mediator.Send(command, new System.Threading.CancellationToken());

            return(await ReturnCommand(result));
        }
Example #12
0
 public ReturningBook(ReturnBookCommand command) => Command = command;