コード例 #1
0
        public static async Task UpdateAsync_OrderIsNull_ReturnsNotFound(
            OrderDescriptionModel model,
            OrderDescriptionController controller)
        {
            var response = await controller.UpdateAsync(null, model);

            response.Should().BeOfType <NotFoundResult>();
        }
        public static void Validate_DescriptionIsValid_DoesNotHaveError(
            OrderDescriptionModelValidator validator)
        {
            var model = new OrderDescriptionModel {
                Description = new string('A', 100)
            };

            var result = validator.TestValidate(model);

            result.ShouldNotHaveValidationErrorFor(m => m.Description);
        }
        public static void Validate_DescriptionIsTooLong_HasError(
            OrderDescriptionModelValidator validator)
        {
            var model = new OrderDescriptionModel {
                Description = new string('A', 101)
            };

            var result = validator.TestValidate(model);

            result
            .ShouldHaveValidationErrorFor(m => m.Description)
            .WithErrorMessage($"{nameof(OrderDescriptionModel.Description)}TooLong");
        }
        public static void Validate_DescriptionIsEmpty_HasError(
            string description,
            OrderDescriptionModelValidator validator)
        {
            var model = new OrderDescriptionModel {
                Description = description
            };

            var result = validator.TestValidate(model);

            result
            .ShouldHaveValidationErrorFor(m => m.Description)
            .WithErrorMessage($"{nameof(OrderDescriptionModel.Description)}Required");
        }
        public async Task <ActionResult> UpdateAsync([FromRoute] Order order, OrderDescriptionModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (order is null)
            {
                return(NotFound());
            }

            await orderDescriptionService.SetOrderDescription(order, model.Description);

            return(NoContent());
        }
コード例 #6
0
        public static async Task UpdateAsync_SuccessfulUpdate_ReturnsNoContentResult(
            [Frozen] Mock <IOrderDescriptionService> service,
            Order order,
            OrderDescriptionModel model,
            OrderDescriptionController controller)
        {
            service.Setup(o => o.SetOrderDescription(order, model.Description)).Callback(() =>
            {
                order.Description = model.Description;
            });

            var result = await controller.UpdateAsync(order, model);

            service.Verify(o => o.SetOrderDescription(order, model.Description));

            result.Should().BeOfType <NoContentResult>();
        }
コード例 #7
0
        public static async Task UpdateAsync_UpdatesDescription(
            [Frozen] Mock <IOrderDescriptionService> service,
            Order order,
            OrderDescriptionModel model,
            OrderDescriptionController controller)
        {
            order.Description.Should().NotBe(model.Description);
            service.Setup(o => o.SetOrderDescription(order, model.Description)).Callback(() =>
            {
                order.Description = model.Description;
            });

            await controller.UpdateAsync(order, model);

            service.Verify(o => o.SetOrderDescription(order, model.Description));

            order.Description.Should().Be(model.Description);
        }
コード例 #8
0
        public static async Task GetAsync_OrderIdExists_ReturnsTheOrdersDescription(
            [Frozen] Mock <IOrderDescriptionService> service,
            [Frozen] CallOffId callOffId,
            Order order,
            OrderDescriptionController controller)
        {
            service.Setup(o => o.GetOrderDescription(callOffId)).ReturnsAsync(order.Description);

            var expected = new OrderDescriptionModel {
                Description = order.Description
            };

            var actual = await controller.GetAsync(callOffId);

            service.Verify(o => o.GetOrderDescription(callOffId));

            actual.Value.Should().BeEquivalentTo(expected);
        }
コード例 #9
0
        public async Task <ActionResult> GetAsync([FromRoute][Required] string orderId)
        {
            var order = await _orderRepository.GetOrderByIdAsync(orderId);

            if (order is null)
            {
                return(NotFound());
            }

            var primaryOrganisationId = User.GetPrimaryOrganisationId();

            if (primaryOrganisationId != order.OrganisationId)
            {
                return(Forbid());
            }

            var descriptionModel = new OrderDescriptionModel()
            {
                Description = order.Description.Value
            };

            return(Ok(descriptionModel));
        }
コード例 #10
0
        public async Task <ActionResult> UpdateAsync([FromRoute][Required] string orderId, [FromBody][Required] OrderDescriptionModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var order = await _orderRepository.GetOrderByIdAsync(orderId);

            if (order is null)
            {
                return(NotFound());
            }

            var primaryOrganisationId = User.GetPrimaryOrganisationId();

            if (primaryOrganisationId != order.OrganisationId)
            {
                return(Forbid());
            }

            var isValid = OrderDescription.Create(model.Description);

            if (!isValid.IsSuccess)
            {
                return(BadRequest(new ErrorsModel(isValid.Errors.Select(x => new ErrorModel(x.Id, x.Field)))));
            }

            order.SetDescription(isValid.Value);

            var name = User.Identity.Name;

            order.SetLastUpdatedBy(User.GetUserId(), name);

            await _orderRepository.UpdateOrderAsync(order);

            return(NoContent());
        }