コード例 #1
0
        private static DeliveryModel GenerateDeliveryFromRequest(Delivery delivery)
        {
            var deliveryModel = new DeliveryModel
            {
                AccessWindow = new AccessWindow
                {
                    StartTime = DateTime.Now.AddMinutes(1),
                    EndTime   = DateTime.Now.AddHours(2).AddMinutes(1)
                },
                Recipient = new Recipient
                {
                    Name        = delivery.Recipient.Name,
                    Address     = delivery.Recipient.Address,
                    Email       = delivery.Recipient.Email,
                    PhoneNumber = delivery.Recipient.PhoneNumber
                },
                Order = new Order
                {
                    OrderNumber = delivery.Order.OrderNumber,
                    Sender      = delivery.Order.Sender
                }
            };

            return(deliveryModel);
        }
コード例 #2
0
        public async Task Should_return_CreatedAtRoute_when_delivery_order_does_not_exist()
        {
            var delivery = new Delivery {
                Order = new Order {
                    OrderNumber = "OrderNumber", Sender = "Sender"
                }, Recipient = new Recipient()
            };

            _service.Setup(s => s.CreateAsync(It.IsAny <Domain.Models.Delivery>())).Returns(() => Task.CompletedTask);

            var subject = this.CreateSubject();

            var result = await subject.Create(delivery);

            result.ShouldBeOfType <CreatedAtRouteResult>();
        }
コード例 #3
0
        public async Task <IActionResult> Create([FromBody] Delivery delivery)
        {
            try
            {
                var deliveryModel = GenerateDeliveryFromRequest(delivery);

                await _service.CreateAsync(deliveryModel);

                return(CreatedAtRoute("GetDelivery", new { id = deliveryModel.Id }, deliveryModel));
            }
            catch (OrderAlreadyDeliveredException e)
            {
                _logger.LogWarning("Order number {OrderNumber} has already been delivered {Id}", delivery.Order.OrderNumber, e.DeliveryId);
                var error = new ErrorDetail("order_already_delivered", $"Order number {delivery.Order.OrderNumber} has already been delivered - {e.DeliveryId}");
                return(Conflict(error));
            }
        }
コード例 #4
0
        public async Task Should_return_Conflicted_when_delivery_order_exist()
        {
            var delivery = new Delivery {
                Order = new Order(), Recipient = new Recipient()
            };

            _service
            .Setup(s => s.CreateAsync(It.IsAny <Domain.Models.Delivery>()))
            .Returns(Task.FromException(new OrderAlreadyDeliveredException("id")));

            var subject = this.CreateSubject();

            var result = await subject.Create(delivery);

            result.ShouldBeOfType <ConflictObjectResult>();
            var value = ActionResultHelper.GetObject <ErrorDetail>(result);

            value.ErrorCode.ShouldBe("order_already_delivered");
        }