public async Task ThenTheTotalOne_OffCostIsTheResultOfTheTotalOne_OffCostCalculationAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var actual = Test.Pages.PreviewOrderSummary.GetTotalOneOffCost();

            actual.Should().Be(FormatDecimal(order.CalculateCostPerYear(CostType.OneOff)));
        }
예제 #2
0
        public void GetAvailableExtrasForCategory_WhenCalledWithNonExistingCategory_ReturnsEmptyList()
        {
            var helper = new OrderHelpers(_apiClient);

            var availableExtras = helper.GetAvailableExtrasForCategory("dessert");

            Assert.IsEmpty(availableExtras);
        }
예제 #3
0
        public void CalculateOrderValue_WhenCalledWithEmptyList_ReturnsZero()
        {
            var helper = new OrderHelpers(_apiClient);

            var result = helper.CalculateOrderValue(new List <DishOrder>());

            Assert.AreEqual(0, result);
        }
예제 #4
0
        public async Task ThenTheUserIsAskedToConfirmTheChoiceToDeleteTheCatalogueSolutionAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var orderitem = order.OrderItems[0].CatalogueItem.Name;

            Test.Pages.OrderForm.EditNamedSectionPageDisplayed($"Delete {orderitem}").Should().BeTrue();
        }
        public async Task ThenTheTotalCostOfContractIsTheResultOfTheTotalCostOfContractCalculationTotalOne_OffCostTotalCostForOneYearCalculationAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var actualTotalCostOfContract = Test.Pages.PreviewOrderSummary.GetTotalOwnershipCost();

            actualTotalCostOfContract.Should().Be(FormatDecimal(order.CalculateTotalOwnershipCost()));
        }
예제 #6
0
        public async Task ThenTheCall_OffAgreementIDIsDisplayedAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var callOffID = order.CallOffId.ToString();

            Test.Pages.OrderForm.EditNamedSectionPageDisplayed(callOffID).Should().BeTrue();
        }
예제 #7
0
        public async Task ThenTheOrderDescriptionIsDisplayedAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var orderDescription = order.Description;

            Test.Pages.OrderForm.DeleteConfirmationOrderDescription().Should().BeEquivalentTo(orderDescription);
        }
예제 #8
0
        public void GetAvailableExtrasForCategory_WhenCalledWithEmptyString_ReturnsEmptyList()
        {
            var helper = new OrderHelpers(_apiClient);

            var availableExtras = helper.GetAvailableExtrasForCategory(string.Empty);

            Assert.IsEmpty(availableExtras);
        }
예제 #9
0
        public void GetAvailableExtrasForCategory_WhenPizzaExtrasRequested_ReturnsListWith4Elements()
        {
            var helper = new OrderHelpers(_apiClient);

            var availableExtras = helper.GetAvailableExtrasForCategory("Pizza");

            Assert.That(availableExtras.Count(), Is.EqualTo(4));
        }
        public async Task ThenTheItemNameOfEachItemIsTheCatalogueSolutionNameAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedOrderItem = order.OrderItems[0];
            var name = Test.Pages.PreviewOrderSummary.GetItemName();

            name.Should().Be(expectedOrderItem.CatalogueItem.Name);
        }
        public async Task ThenThePlannedDeliveryDateOfEachItemIsDisplayedAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedOrderItem = order.OrderItems[0];
            var date = Test.Pages.PreviewOrderSummary.GetItemPlannedDate();

            date.Should().Be(expectedOrderItem.DefaultDeliveryDate.Value.ToString("d MMMM yyyy"));
        }
        public async Task ThenTheCallOffOrderingPartySectionIsSavedInTheDb()
        {
            var contextOrder = Context.Get <Order>(ContextKeys.CreatedOrder);

            var order = await OrderHelpers.GetFullOrderAsync(contextOrder.CallOffId, DbContext);

            order.OrderingParty.Should().NotBeNull();
            order.OrderingPartyContact.Should().NotBeNull();
        }
        public async Task ThenTheItemYearCostOfEachItemIsTheResultOfTheFlatCalculationPriceQuantityRoundedUpToTwoDecimalPlacesAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedOrderItem = order.OrderItems[0];
            var expectedValue     = FormatDecimal(Math.Round(expectedOrderItem.CalculateTotalCostPerYear(), 2));
            var cost = Test.Pages.PreviewOrderSummary.GetItemCost();

            cost.Should().Be(expectedValue.ToString());
        }
예제 #14
0
        public Order CreateOrder(int buyerId, List <OrderItem> orderItems)
        {
            var orderNumber = OrderHelpers.GenerateOrderNumber();
            var order       = new Order(buyerId, orderNumber, orderItems)
            {
                Status = OrderStatus.Pending
            };

            return(_orderRepository.Add(order));
        }
예제 #15
0
        public async Task WhenTheUserChoosesToConfirmTheDeleteAsync()
        {
            var wait  = new WebDriverWait(Test.Driver, TimeSpan.FromSeconds(10));
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            Context.Add(ContextKeys.DeletedOrderItem, order.OrderItems[0]);
            Test.Pages.DeleteOrder.ClickDeleteButtonYes();

            wait.Until(s => Test.Pages.OrderForm.ContinueButtonDisplayed());
        }
예제 #16
0
        public async Task ThenOnlyTheCatalogueSolutionWithTheUnitIsDeletedFromTheOrderAsync()
        {
            var orderItem = Context.Get <OrderItem>(ContextKeys.DeletedOrderItem);
            var order     = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            if (order.OrderItems.Count > 0)
            {
                order.OrderItems.Should().NotContain(orderItem);
            }
        }
        public async Task ThenTheCommencementDateIsDisplayedAsync()
        {
            var date = Test.Pages.PreviewOrderSummary.GetCommencementDateValue();

            date.Should().NotBeNullOrEmpty();
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedDate = order.CommencementDate?.ToString("d MMMM yyyy");

            date.Should().EndWithEquivalent(expectedDate);
        }
        public async Task ThenThePricingValuesWillBePopulatedWithTheValuesThatWasSavedByTheUserAsync()
        {
            var quantityFromPage = Test.Pages.OrderForm.GetQuantity();
            var priceFromPage    = Test.Pages.OrderForm.GetPriceInputValue();
            var order            = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var orderItem = order.OrderItems.Single(i => i.CatalogueItem.CatalogueItemType == CatalogueItemType.AdditionalService);

            quantityFromPage.Should().Be(orderItem.OrderItemRecipients[0].Quantity.ToString());
            priceFromPage.Should().MatchRegex(@"^[0-9]*(\.[0-9]{2,3})?$");
        }
        public async Task ThenTheQuantityOfEachItemIsTheConcatenationOfQuantityAndPerPeriodAsync(string period)
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedOrderItem     = order.OrderItems[0];
            var expectedQuantityValue = $"{expectedOrderItem.OrderItemRecipients[0].Quantity} {period}";

            var actualQuantity = Test.Pages.PreviewOrderSummary.GetItemQuantity();

            actualQuantity.Should().ContainEquivalentOf(expectedQuantityValue);
        }
        public async Task ThenTheQuantityOfEachItemIsQuantityAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedOrderItem = order.OrderItems[0];
            var expectedValue     = $"{expectedOrderItem.OrderItemRecipients[0].Quantity}";

            var quantity = Test.Pages.PreviewOrderSummary.GetItemQuantity();

            quantity.Should().ContainEquivalentOf(expectedValue);
        }
        public async Task ThenTheQuantityOfEachItemIsTheConcatenationI_E_QuantityPerPeriodAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedOrderItem = order.OrderItems[0];
            var expectedPeriod    = expectedOrderItem.EstimationPeriod;
            var expectedValue     = $"{FormatInt(expectedOrderItem.OrderItemRecipients[0].Quantity)} {expectedPeriod.Value.Description()}";

            var quantity = Test.Pages.PreviewOrderSummary.GetItemQuantity();

            quantity.Should().ContainEquivalentOf(expectedValue);
        }
예제 #22
0
        public async Task ThenThePreviouslySavedDataIsDisplayedAsync()
        {
            var priceFromPage = decimal.Parse(Test.Pages.OrderForm.GetPriceInputValue());

            var order          = Context.Get <Order>(ContextKeys.CreatedOrder);
            var orderItemsInDb = (await DbContext.Order.FindAsync(order.Id))
                                 .OrderItems.Single(
                s => s.CatalogueItem.CatalogueItemType == CatalogueItemType.AssociatedService);
            var unitOrder = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            orderItemsInDb.Price.Value.Should().Be(priceFromPage);
            Test.Pages.OrderForm.GetAssociatedServicesPricingUnit(unitOrder).Should().BeTrue();
        }
예제 #23
0
        public void CalculateOrderValue_WhenCalledWithNull_ThrowsAnException()
        {
            var helper = new OrderHelpers(_apiClient);

            try
            {
                helper.CalculateOrderValue(null);
                Assert.Fail();
            }
            catch (Exception)
            {
                Assert.Pass();
            }
        }
예제 #24
0
        public void CalculateOrderValue_WhenOrderedDishWithoutExtras_ReturnsCorrectPrice(int quantity, decimal totalPrice)
        {
            var helper = new OrderHelpers(_apiClient);

            var result = helper.CalculateOrderValue(new List <DishOrder>
            {
                new DishOrder()
                {
                    DishIdentifier = "5f80c7de5508d7198e6e4821",
                    Quantity       = quantity
                }
            });

            Assert.AreEqual(result, totalPrice);
        }
예제 #25
0
        public void GetAvailableExtrasForCategory_WhenPizzaExtrasRequested_ReturnedListContainsOnlyPizzaExtras()
        {
            var helper = new OrderHelpers(_apiClient);

            var availableExtras = helper.GetAvailableExtrasForCategory("Pizza");

            foreach (var availableExtra in availableExtras)
            {
                if (availableExtra.DishCategory != "Pizza")
                {
                    Assert.Fail();
                }
            }
            Assert.Pass();
        }
        public async Task ThenThePriceUnitOfOrderOfEachItemIsTheConcatenationAsync()
        {
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var expectedOrderItem = order.OrderItems[0];
            var expectedValue     = $"{FormatDecimal(expectedOrderItem.Price.Value)} {expectedOrderItem.PricingUnit.Description}".Trim();

            if (expectedOrderItem.ProvisioningType != ProvisioningType.OnDemand)
            {
                expectedValue += $" {expectedOrderItem.PriceTimeUnit.Value.Description()}";
            }

            var price = Test.Pages.PreviewOrderSummary.GetItemPrice();

            price.Should().Be(expectedValue);
        }
        public async Task ThenTheCallOffOrderingPartyInformationIsDisplayedAsync()
        {
            var value = Test.Pages.PreviewOrderSummary.GetCallOffOrderingPartyPreviewValue();

            value.Should().NotBeNullOrEmpty();
            var order = await OrderHelpers.GetFullOrderAsync(Context.Get <Order>(ContextKeys.CreatedOrder).CallOffId, DbContext);

            var createdAddress = order.OrderingParty.Address;
            var createdContact = order.OrderingPartyContact;

            value.Should().ContainEquivalentOf(createdAddress.Line1);
            value.Should().ContainEquivalentOf(createdAddress.Town);
            value.Should().ContainEquivalentOf(createdAddress.Postcode);
            var concattedName = string.Format("{0} {1}", createdContact.FirstName, createdContact.LastName);

            value.Should().ContainEquivalentOf(concattedName);
        }
예제 #28
0
        public void CalculateOrderValue_WhenOrderedDishWithExtra_ReturnsCorrectPrice(string dishIdentifier, string extrasId, int dishQuantity, decimal totalPrice)
        {
            var helper = new OrderHelpers(_apiClient);

            var result = helper.CalculateOrderValue(new List <DishOrder>
            {
                new DishOrder()
                {
                    DishIdentifier = dishIdentifier,
                    Quantity       = dishQuantity,
                    Extras         = new List <string> {
                        extrasId
                    }
                }
            });

            Assert.AreEqual(totalPrice, result);
        }
예제 #29
0
        public async Task GivenAnIncompleteOrderExists()
        {
            var context = (OrderingDbContext)Context[ContextKeys.DbContext];
            var user    = (User)Context[ContextKeys.User];

            var description = RandomInformation.RandomInformationText();

            if (description.Length > 100)
            {
                description = description.Substring(0, 100);
            }

            var createModel = new CreateOrderModel {
                Description = description, OrganisationId = user.PrimaryOrganisationId
            };
            var order = await OrderHelpers.CreateOrderAsync(createModel, context, user, Test.IsapiConnectionString);

            Context.Add(ContextKeys.CreatedOrder, order);
        }
예제 #30
0
        public ActionResult Details(OrderEditView order)
        {
            if (ModelState.IsValid)
            {
                if (Request.Form["despatchedbutton"] != null)
                {
                    //Update tables
                    OrderHelpers.ChangeOrderStatus(db, order.OrderId, OrderStatusEnum.Despatched, User);
                    return(RedirectToAction("Orders", "ManageListings"));
                }
                if (Request.Form["delivereddbutton"] != null)
                {
                    //Update tables
                    OrderHelpers.ChangeOrderStatus(db, order.OrderId, OrderStatusEnum.Delivered, User);
                    return(RedirectToAction("Orders", "ManageListings"));
                }
                if (Request.Form["collectedbutton"] != null)
                {
                    //Update tables
                    OrderHelpers.ChangeOrderStatus(db, order.OrderId, OrderStatusEnum.Collected, User);
                    return(RedirectToAction("Orders", "ManageListings"));
                }
                if (Request.Form["receivedbutton"] != null)
                {
                    //Update tables
                    OrderHelpers.ChangeOrderStatus(db, order.OrderId, OrderStatusEnum.Received, User);
                    return(RedirectToAction("Orders", "ManageListings"));
                }
                if (Request.Form["closedbutton"] != null)
                {
                    //Update tables
                    OrderHelpers.ChangeOrderStatus(db, order.OrderId, OrderStatusEnum.Closed, User);
                    return(RedirectToAction("Orders", "ManageListings"));
                }
            }

            order = OrderEditHelpers.GetOrderEditView(db, order.OrderId, User);

            ViewBag.ShowHistory = false;

            return(View(order));
        }