Esempio n. 1
0
        public async Task Given_ThereIsAnInvoiceInTheDatabase_When_HandlerIsCalled_Then_TheInvoiceIsReturnedAndTheStatusCodeIs200()
        {
            //arrange
            var setupInvoice = new Invoice {
                Amount = 100, Identifier = "TEST-100"
            };

            await _applicationDbContext.Invoices.AddAsync(setupInvoice);

            await _applicationDbContext.SaveChangesAsync();

            var getInvoiceQuery = new GetInvoiceQuery(setupInvoice.InvoiceId);

            //act
            var response = await _systemUnderTest.Handle(getInvoiceQuery, default);

            //assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);
            response.Error.Should().BeNull();
            response.HasError.Should().BeFalse();

            response.Content.Should().NotBeNull();
            response.Content.Identifier.Should().Be(setupInvoice.Identifier);
            response.Content.Amount.Should().Be(setupInvoice.Amount);
            response.Content.CreatedBy.Should().Be(_testUserId);
            response.Content.InvoiceId.Should().Be(setupInvoice.InvoiceId);
        }
Esempio n. 2
0
        public async Task <DeleteInvoiceByIdResponse> Handle(DeleteInvoiceByIdRequest request, CancellationToken cancellationToken)
        {
            var query = new GetInvoiceQuery()
            {
                Id = request.Id
            };
            var getInvoice = await this.queryExecutor.Execute(query);

            if (getInvoice == null)
            {
                return(new DeleteInvoiceByIdResponse()
                {
                    Error = new ErrorModel(ErrorType.NotFound)
                });
            }
            var mappedCommand = this.mapper.Map <DataAccess.Entities.Invoice>(request);
            var command       = new DeleteInvoiceCommand()
            {
                Parameter = mappedCommand
            };
            var created = await this.commandExecutor.Execute(command);

            var response = new DeleteInvoiceByIdResponse()
            {
                Data = created
            };

            return(response);
        }
        public HttpResponseMessage Get(int id)
        {
            var query       = new GetInvoiceQuery(id);
            var queryResult = _queryDispatcher.Handle <GetInvoiceQueryResult>(query);

            return(Request.CreateResponse(HttpStatusCode.OK, queryResult.InvoiceModel));
        }
Esempio n. 4
0
        public async Task <ActionResult <InvoiceResult> > GetInvoice(int id)
        {
            var invoiceCommand = new GetInvoiceQuery(id);

            var invoiceResult = await _mediator.Send(invoiceCommand);

            if (invoiceResult == null)
            {
                return(NotFound());
            }

            return(invoiceResult);
        }
Esempio n. 5
0
        public void Given_TheCallIsCancelledByUser_When_HandlerIsCalled_Then_TheHandlerShouldThrowOperationCancelledException()
        {
            using (var cancellationTokenSource = new CancellationTokenSource())
            {
                var cancellationToken = cancellationTokenSource.Token;
                cancellationTokenSource.Cancel();

                var getInvoiceQuery = new GetInvoiceQuery(100);

                Func <Task <GetInvoiceQueryResponse> > func = async() => await _systemUnderTest.Handle(getInvoiceQuery, cancellationToken);

                func.Should().ThrowAsync <OperationCanceledException>();
            }
        }
Esempio n. 6
0
        public async Task Given_TheInvoiceIsNotInTheDatabase_When_HandlerIsCalled_Then_NotFoundResponseIsReturned()
        {
            //arrange
            var getInvoiceQuery = new GetInvoiceQuery(100);

            //act
            var response = await _systemUnderTest.Handle(getInvoiceQuery, default);

            //assert
            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
            response.Error.Should().NotBeNull();
            response.HasError.Should().BeTrue();
            response.Content.Should().BeNull();

            response.Error.ErrorCode.Should().Be(ApplicationConstants.ErrorCodes.BusinessValidationError);
            response.Error.ErrorMessage.Should().Be(string.Format(ApplicationConstants.ErrorMessages.InvoiceWithIdDoesNotExist, 100));
        }
Esempio n. 7
0
        public async Task <CreateInvoiceResponse> Handle(CreateInvoiceRequest request, CancellationToken cancellationToken)
        {
            if (request.AuthenticationRole == "UserHotel" || request.AuthenticationRole == "UserAdmin")
            {
                return(new CreateInvoiceResponse
                {
                    Error = new ErrorModel(ErrorType.Forbidden)
                });
            }

            var query = new GetInvoiceQuery()
            {
                Number            = request.Number,
                CompanyId         = request.CompanyId,
                LaundryId         = request.LaundryId,
                WouldLikeToCreate = true
            };
            var getInvoice = await this.queryExecutor.Execute(query);

            if (getInvoice != null)
            {
                lastDocNumber = getInvoice.Number;
            }
            else
            {
                lastDocNumber = "0/0/0";
            }
            request.Number = docNumCreator.DocumentNumberCreator(lastDocNumber);

            var mappedCommand = this.mapper.Map <DataAccess.Entities.Invoice>(request);
            var command       = new CreateInvoiceCommand()
            {
                Parameter = mappedCommand
            };
            var created = await this.commandExecutor.Execute(command);

            var response = new CreateInvoiceResponse()
            {
                Data = this.mapper.Map <API.Domain.Models.Invoice>(created)
            };

            return(response);
        }
Esempio n. 8
0
        public async Task <GetInvoiceByIdResponse> Handle(GetInvoiceByIdRequest request, CancellationToken cancellationToken)
        {
            var query = new GetInvoiceQuery()
            {
                Id = request.Id
            };
            var invoice = await this.queryExecutor.Execute(query);

            if (invoice == null)
            {
                return(new GetInvoiceByIdResponse
                {
                    Error = new ErrorModel(ErrorType.NotFound)
                });
            }
            var mappedInvoices = this.mapper.Map <Invoice>(invoice);

            return(new GetInvoiceByIdResponse()
            {
                Data = mappedInvoices
            });
        }
 public async Task GetInvoiceTest()
 {
     var query = new GetInvoiceQuery()
     {
     };
 }