public async Task GivenAnAssociatedServiceWithAFlatPriceDeclarativeOrderTypeIsSavedToTheOrder() { var order = (Order)Context[ContextKeys.CreatedOrder]; var orderItem = await OrderItemHelper.CreateOrderItem( order, CatalogueItemType.AssociatedService, CataloguePriceType.Flat, ProvisioningType.Declarative, DbContext, Test.BapiConnectionString); var recipients = new List <OrderItemRecipient>(); var recipient = new ServiceRecipient(order.OrderingParty.OdsCode, order.OrderingParty.Name); var orderItemRecipient = new OrderItemRecipient { Recipient = recipient, DeliveryDate = DateTime.UtcNow, Quantity = new Random().Next(1, 101), }; recipients.Add(orderItemRecipient); await OrderItemHelper.AddRecipientToOrderItem(orderItem, recipients, DbContext); order.AddOrUpdateOrderItem(orderItem); DbContext.Update(order); await DbContext.SaveChangesAsync(); Context.Remove(ContextKeys.CreatedOrder); Context.Add(ContextKeys.CreatedOrder, order); }
public static void CalculateTotalCostPerYear_ReturnsExpectedValue( TimeUnit?unit, int expectedCost, OrderItemRecipient recipient) { recipient.Quantity = 10; var actualCost = recipient.CalculateTotalCostPerYear(10, unit); actualCost.Should().Be(expectedCost); }
public async Task GivenAnAssociatedServiceWithAFlatPriceVariableOn_DemandOrderTypeWithTheQuantityPeriodPerYearIsSavedToTheOrder() { await SetOrderCatalogueSectionToComplete(); var order = (Order)Context[ContextKeys.CreatedOrder]; var orderItem = await OrderItemHelper.CreateOrderItem( order, CatalogueItemType.AssociatedService, CataloguePriceType.Flat, ProvisioningType.OnDemand, DbContext, Test.BapiConnectionString, TimeUnit.PerYear); var recipients = new List <OrderItemRecipient>(); var recipient = new ServiceRecipient(order.OrderingParty.OdsCode, order.OrderingParty.Name); var orderItemRecipient = new OrderItemRecipient { Recipient = recipient, DeliveryDate = DateTime.UtcNow, Quantity = new Random().Next(1, 101), }; recipients.Add(orderItemRecipient); await OrderItemHelper.AddRecipientToOrderItem(orderItem, recipients, DbContext); var selectedRecipients = new List <SelectedServiceRecipient>(); selectedRecipients.AddRange(recipients.Select(r => new SelectedServiceRecipient { Recipient = r.Recipient })); order.AddOrUpdateOrderItem(orderItem); DbContext.Update(order); await DbContext.SaveChangesAsync(); Context.Remove(ContextKeys.CreatedOrder); Context.Add(ContextKeys.CreatedOrder, order); }
public static async Task <IEnumerable <OrderItemRecipient> > Generate(string odsCode, string odsUrl, int numRecipients = 1) { List <OrderItemRecipient> recipients = new(); Random rng = new(); var allRecipients = await new OdsHelper(odsUrl).GetServiceRecipientsByParentOdsCode(odsCode); var recipientList = allRecipients.ToList(); for (int i = 0; i < numRecipients; i++) { var recipient = new OrderItemRecipient() { Recipient = recipientList[i], DeliveryDate = DateTime.Today, Quantity = rng.Next(1, 101), }; recipients.Add(recipient); } return(recipients); }
public async Task GivenTheOrderIsCompleteEnoughSoThatTheCompleteOrderButtonIsEnabled(string fsValue) { bool fs = fsValue.ToLower() == "yes"; await new CommonSteps(Test, Context).GivenAnIncompleteOrderExists(); var order = Context.Get <Order>(ContextKeys.CreatedOrder); var supplier = await DbContext.Supplier.SingleOrDefaultAsync(s => s.Id == "100000") ?? (await SupplierInfo.GetSupplierWithId("100000", Test.BapiConnectionString)).ToDomain(); var orderBuilder = new OrderBuilder(order) .WithExistingSupplier(supplier) .WithSupplierContact(ContactHelper.Generate()) .WithCommencementDate(DateTime.Today) .WithOrderingPartyContact(ContactHelper.Generate()) .WithFundingSource(fs); var associatedServices = await SupplierInfo.GetPublishedCatalogueItemsNoTieredAsync(Test.BapiConnectionString, supplier.Id, CatalogueItemType.AssociatedService); var selectedItem = associatedServices.First(); var catalogueItem = await DbContext.FindAsync <CatalogueItem>(CatalogueItemId.ParseExact(selectedItem.CatalogueItemId)) ?? selectedItem.ToDomain(); var pricingUnitName = "per banana"; var pricingUnit = await DbContext.FindAsync <PricingUnit>(pricingUnitName) ?? new PricingUnit { Name = pricingUnitName, }; pricingUnit.Description = pricingUnitName; var recipients = new List <OrderItemRecipient>(); var recipient = await DbContext.ServiceRecipient.SingleOrDefaultAsync(s => s.OdsCode == order.OrderingParty.OdsCode) ?? new ServiceRecipient(order.OrderingParty.OdsCode, order.OrderingParty.Name); var orderItemRecipient = new OrderItemRecipient() { Recipient = recipient, DeliveryDate = DateTime.UtcNow, Quantity = 1, }; recipients.Add(orderItemRecipient); var orderItem = new OrderItemBuilder(order.Id) .WithCatalogueItem(catalogueItem) .WithCataloguePriceType(CataloguePriceType.Flat) .WithCurrencyCode() .WithDefaultDeliveryDate(DateTime.Today) .WithPrice(0.01M) .WithPricingTimeUnit(TimeUnit.PerMonth) .WithProvisioningType(ProvisioningType.Declarative) .WithPricingUnit(pricingUnit) .WithRecipients(recipients) .Build(); order.AddOrUpdateOrderItem(orderItem); await OrderProgressHelper.SetProgress( context : DbContext, order : order, catalogueSolutionsViewed : true, additionalServicesViewed : true, associatedServicesViewed : true); DbContext.Update(order); await DbContext.SaveChangesAsync(); Context.Remove(ContextKeys.CreatedOrder); Context.Add(ContextKeys.CreatedOrder, order); Test.Driver.Navigate().Refresh(); }