async Task RequestLoanCommand_WithInvalidBook_ShoudlReturnBookNotFound()
        {
            //arrage
            RequestLoanCommand command = new RequestLoanCommand("12345678998", Guid.NewGuid().ToString());

            Mocker.GetMock <IPersonRepository>()
            .Setup(p => p.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult(PersonFactory.ReturnPerson()));

            Mocker.GetMock <IBookRepository>()
            .Setup(b => b.GetById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Book>(null));
            var sut = Mocker.CreateInstance <RequestLoanCommandHandler>();
            //act
            await sut.Handle(command, new CancellationToken());

            //assert
            Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once());
            Mocker.GetMock <IBookRepository>().Verify(x => x.GetById(It.IsAny <Guid>()), Times.Once());
            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Add(It.IsAny <BookLoan>()), Times.Never);

            DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.HaveCount(1)
            .And.Contain(x => x == Messages.BookLoan_BookNotFound);
        }
        async Task RequestLoanCommand_WithInvalidBookGuid_ShouldReturnError(string bookGuid, string outputError)
        {
            //arrage
            RequestLoanCommand command = new RequestLoanCommand("", bookGuid);
            var sut = Mocker.CreateInstance <RequestLoanCommandHandler>();
            //act
            await sut.Handle(command, new CancellationToken());

            //assert
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.HaveCount(1)
            .And.Contain(x => x == outputError);
            Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Never());
        }
        async Task RequestLoanCommand_WithInvalidPerson_ShouldReturnPersonNotFound()
        {
            //arrage
            TestBaseArrangements baseArrangements = new TestBaseArrangements();
            RequestLoanCommand   command          = new RequestLoanCommand("", Guid.NewGuid().ToString());

            baseArrangements.Mocker.GetMock <IPersonRepository>()
            .Setup(p => p.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult <Person>(null));

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

            //act
            await sut.Handle(command, new CancellationToken());

            //Assert
            baseArrangements.Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once());
            baseArrangements.Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Add(It.IsAny <BookLoan>()), Times.Never);
            baseArrangements.DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.HaveCount(1)
            .And.Contain(x => x == Messages.BookLoan_PersonNotFound);
        }
        async Task RequestLoanCommand_WithValidInfos_ShoudlReturnSuccess()
        {
            //arrage
            TestBaseArrangements baseArrangements = new TestBaseArrangements();
            RequestLoanCommand   command          = new RequestLoanCommand("12345678998", Guid.NewGuid().ToString());

            baseArrangements.Mocker.GetMock <IPersonRepository>()
            .Setup(p => p.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult(PersonFactory.ReturnPerson()));

            baseArrangements.Mocker.GetMock <IBookRepository>()
            .Setup(b => b.GetById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Book>(BookFactory.ReturnBook()));
            var sut = baseArrangements.Mocker.CreateInstance <RequestLoanCommandHandler>();
            //act
            await sut.Handle(command, new CancellationToken());

            //assert
            baseArrangements.Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once());
            baseArrangements.Mocker.GetMock <IBookRepository>().Verify(x => x.GetById(It.IsAny <Guid>()), Times.Once());
            baseArrangements.Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Add(It.IsAny <BookLoan>()), Times.Once);

            baseArrangements.DomainNotifications.GetAll().Should().BeEmpty();
        }
        public async Task <IActionResult> Loan([FromBody] RequestLoanCommand command)
        {
            RequestResult requestResult = await _orquestrator.SendCommand(command);

            return(await ReturnRequestResult(requestResult));
        }
Пример #6
0
        public async Task <IActionResult> Loan(RequestLoanCommand command)
        {
            var result = await _mediator.Send(command, new System.Threading.CancellationToken());

            return(await ReturnCommand(result));
        }