Пример #1
0
        public async Task ViewOrder_ValidRequest_ReturnsOrder()
        {
            // Arrange

            var header = await GetDefaultHeaderDataAsync();

            var createHttpResponses = await CreateSampleOrdersAsync();

            var createResponse = createHttpResponses[0].Data;
            var id             = createResponse.Id;

            // Act

            var findRequest = new ViewOrderQuery {
                Id = id
            };

            var findHttpResponse = await Fixture.Api.Orders.ViewOrderAsync(findRequest, header);

            // Assert

            findHttpResponse.StatusCode.Should().Be(HttpStatusCode.OK);

            var findResponse = findHttpResponse.Data;

            findResponse.Should().BeEquivalentTo(createResponse);
        }
Пример #2
0
        public async Task <ActionResult <ViewOrderQueryResponse> > ViewOrderAsync(Guid id)
        {
            var request = new ViewOrderQuery {
                Id = id
            };
            var response = await _messageBus.SendAsync(request);

            return(Ok(response));
        }
Пример #3
0
        public async Task CancelOrder_Valid()
        {
            // Arrange

            var header = await GetDefaultHeaderDataAsync();

            var createResponses = await CreateSampleOrdersAsync();

            var someCreateResponse = createResponses[1];

            // Act

            var id            = someCreateResponse.Data.Id;
            var cancelRequest = new CancelOrderCommand {
                Id = id
            };
            var cancelHttpResponse = await Fixture.Api.Orders.CancelOrderAsync(cancelRequest, header);

            // Assert

            cancelHttpResponse.StatusCode.Should().Be(HttpStatusCode.OK);

            var archiveResponse = cancelHttpResponse.Data;

            var expectedArchiveResponse = new CancelOrderCommandResponse
            {
                Id     = id,
                Status = OrderStatus.Cancelled,
            };

            archiveResponse.Should().BeEquivalentTo(expectedArchiveResponse);

            var findRequest = new ViewOrderQuery {
                Id = id
            };
            var findHttpResponse = await Fixture.Api.Orders.ViewOrderAsync(findRequest, header);

            findHttpResponse.StatusCode.Should().Be(HttpStatusCode.OK);

            var findResponse = findHttpResponse.Data;

            findResponse.Should().BeEquivalentTo(archiveResponse);
        }
Пример #4
0
        public async Task ViewOrder_NotExistRequest_ThrowsNotFoundRequestException()
        {
            // Arrange

            var header = await GetDefaultHeaderDataAsync();

            var id = Guid.NewGuid();

            var findRequest = new ViewOrderQuery {
                Id = id
            };

            // Act

            var findApiResponse = await Fixture.Api.Orders.ViewOrderAsync(findRequest, header);

            // Assert

            findApiResponse.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
Пример #5
0
        public Task <ObjectClientResponse <ViewOrderQueryResponse> > ViewOrderAsync(ViewOrderQuery request, HeaderData header)
        {
            var id = request.Id;

            return(Client.GetByIdAsync <Guid, ViewOrderQueryResponse>(id, GetHeaders(header)));
        }
Пример #6
0
        public async Task CreateOrder_ValidRequest_ReturnsResponse()
        {
            // Arrange

            var header = await GetDefaultHeaderDataAsync();

            var createCustomerResponses = await CreateSampleCustomersAsync();

            var createProductResponses = await CreateSampleProductsAsync();

            var customerId_0 = createCustomerResponses[0].Data.Id;

            var productId_0 = createProductResponses[0].Data.Id;
            var productId_1 = createProductResponses[1].Data.Id;

            var createRequest = new CreateOrderCommand
            {
                CustomerId = customerId_0,
                OrderItems = new List <CreateOrderItemCommand>
                {
                    new CreateOrderItemCommand
                    {
                        ProductId = productId_0,
                        Quantity  = 10,
                    },

                    new CreateOrderItemCommand
                    {
                        ProductId = productId_1,
                        Quantity  = 20,
                    }
                },
            };

            // Act

            var createHttpResponse = await Fixture.Api.Orders.CreateOrderAsync(createRequest, header);

            // Assert

            createHttpResponse.StatusCode.Should().Be(HttpStatusCode.Created);

            var createResponse = createHttpResponse.Data;

            createResponse.Id.Should().NotBeEmpty();
            createResponse.CustomerId.Should().Be(createRequest.CustomerId);
            createResponse.Status.Should().Be(OrderStatus.Draft);

            createResponse.OrderItems.Should().NotBeNull();

            createResponse.OrderItems.Count.Should().Be(createRequest.OrderItems.Count);

            for (int i = 0; i < createRequest.OrderItems.Count; i++)
            {
                var createRequestOrderDetail  = createRequest.OrderItems[i];
                var createResponseOrderDetail = createResponse.OrderItems[i];

                createResponseOrderDetail.Id.Should().NotBeEmpty();
                createResponseOrderDetail.ProductId.Should().Be(createRequestOrderDetail.ProductId);
                createResponseOrderDetail.Quantity.Should().Be(createRequestOrderDetail.Quantity);
                createResponseOrderDetail.Status.Should().Be(OrderItemStatus.Pending);
            }

            var findRequest = new ViewOrderQuery {
                Id = createResponse.Id
            };
            var findHttpResponse = await Fixture.Api.Orders.ViewOrderAsync(findRequest, header);

            findHttpResponse.StatusCode.Should().Be(HttpStatusCode.OK);

            var findResponse = findHttpResponse.Data;

            findResponse.Should().BeEquivalentTo(createResponse);
        }