public static async Task CreateAsync_CatalogueItemSavedToDb( [Frozen] ApplicationDbContext context, [Frozen] Mock <ICreateOrderItemValidator> orderItemValidator, [Frozen] Mock <IServiceRecipientService> serviceRecipientService, Order order, CatalogueItemId catalogueItemId, CreateOrderItemModel model, CreateOrderItemService service) { context.Order.Add(order); await context.SaveChangesAsync(); var aggregateValidationResult = new AggregateValidationResult(); aggregateValidationResult.AddValidationResult(new ValidationResult(), 0); var catalogueItemType = Enum.Parse <CatalogueItemType>(model.CatalogueItemType, true); var serviceRecipients = model.ServiceRecipients.Select(r => new ServiceRecipient(r.OdsCode, r.Name)); orderItemValidator.Setup(o => o.Validate(order, model, catalogueItemType)).Returns(aggregateValidationResult); serviceRecipientService.Setup(r => r.AddOrUpdateServiceRecipients(It.IsAny <IEnumerable <ServiceRecipient> >())) .ReturnsAsync(serviceRecipients.ToDictionary(r => r.OdsCode)); await service.CreateAsync(order, catalogueItemId, model); var expectedOrderItem = context.Set <OrderItem>().First(o => o.CatalogueItem.Id.Equals(catalogueItemId)); expectedOrderItem.CatalogueItem.Name.Should().Be(model.CatalogueItemName); }
public static async Task CreateAsync_RemovesDefaultDeliveryDate( [Frozen] ApplicationDbContext context, [Frozen] Mock <ICreateOrderItemValidator> orderItemValidator, [Frozen] Mock <IServiceRecipientService> serviceRecipientService, Order order, CatalogueItemId catalogueItemId, CreateOrderItemModel model, CreateOrderItemService service) { order.SetDefaultDeliveryDate(catalogueItemId, DateTime.Now.AddDays(10)); context.Order.Add(order); await context.SaveChangesAsync(); order.DefaultDeliveryDates.Should().NotBeEmpty(); var aggregateValidationResult = new AggregateValidationResult(); aggregateValidationResult.AddValidationResult(new ValidationResult(), 0); var catalogueItemType = Enum.Parse <CatalogueItemType>(model.CatalogueItemType, true); var serviceRecipients = model.ServiceRecipients.Select(r => new ServiceRecipient(r.OdsCode, r.Name)); orderItemValidator.Setup(o => o.Validate(order, model, catalogueItemType)).Returns(aggregateValidationResult); serviceRecipientService.Setup(r => r.AddOrUpdateServiceRecipients(It.IsAny <IEnumerable <ServiceRecipient> >())) .ReturnsAsync(serviceRecipients.ToDictionary(r => r.OdsCode)); await service.CreateAsync(order, catalogueItemId, model); var defaultDeliveryDateResult = context.Set <DefaultDeliveryDate>().FirstOrDefault(d => d.OrderId.Equals(order.Id)); defaultDeliveryDateResult.Should().BeNull(); }
public static async Task CreateAsync_ValidAggregateValidation_SuccessIsTrue( [Frozen] Mock <ICreateOrderItemValidator> orderItemValidator, Order order, CatalogueItemId catalogueItemId, CreateOrderItemModel model, CreateOrderItemService service) { var aggregateValidationResult = new AggregateValidationResult(); aggregateValidationResult.AddValidationResult(new ValidationResult(), 0); var catalogueItemType = Enum.Parse <CatalogueItemType>(model.CatalogueItemType, true); orderItemValidator.Setup(o => o.Validate(order, model, catalogueItemType)).Returns(aggregateValidationResult); var result = await service.CreateAsync(order, catalogueItemId, model); result.Success.Should().BeTrue(); }
public static void Constructor_NullServiceRecipient_ThrowsArgumentNullException( ApplicationDbContext context, OrderItemValidator orderItemValidator) { Assert.Throws <ArgumentNullException>(() => _ = new CreateOrderItemService(context, orderItemValidator, null)); }
public static void Constructor_NullDbContext_ThrowsArgumentNullException( OrderItemValidator orderItemValidator, ServiceRecipientService serviceRecipientService) { Assert.Throws <ArgumentNullException>(() => _ = new CreateOrderItemService(null, orderItemValidator, serviceRecipientService)); }