Пример #1
0
        public async Task TestConfirmationPostWhenClientIdHasValue()
        {
            // Arrange
            OrderData[1].CreatorId   = "Creator1";
            OrderData[1].Status      = OrderStatusCodes.Created;
            OrderData[1].PaymentType = PaymentTypeCodes.Other;
            Controller.ErrorMessage  = null;


            var orderDetails = CreateValidEntities.OrderDetails(2);

            orderDetails.OtherPaymentInfo.PaymentType = "SomethingElse";
            orderDetails.ClientInfo.ClientId          = "FAKE1";
            OrderData[1].SaveDetails(orderDetails);

            MockLabworksService.Setup(a => a.GetClientDetails(It.IsAny <string>())).ReturnsAsync(CreateValidEntities.ClientDetailsLookupModel(2));

            // Act
            var controllerResult = await Controller.Confirmation(2, true);

            // Assert
            Controller.ErrorMessage.ShouldBeNull();
            OrderData[1].GetOrderDetails().Payment.AccountName.ShouldBeNull();
            MockDbContext.Verify(a => a.SaveChangesAsync(new CancellationToken()), Times.Once);
            MockFinancialService.Verify(a => a.GetAccountName(It.IsAny <string>()), Times.Never);
            MockOrderMessagingService.Verify(a => a.EnqueueBillingMessage(OrderData[1], It.IsAny <string>()), Times.Never);
            MockOrderService.Verify(a => a.UpdateTestsAndPrices(OrderData[1]), Times.Once);
            MockOrderService.Verify(a => a.UpdateAdditionalInfo(OrderData[1]), Times.Once);
            MockLabworksService.Verify(a => a.GetClientDetails("FAKE1"), Times.Once);
            MockOrderMessagingService.Verify(a => a.EnqueueCreatedMessage(OrderData[1]), Times.Once);

            var redirectResult = Assert.IsType <RedirectToActionResult>(controllerResult);

            redirectResult.ActionName.ShouldBe("Confirmed");
            redirectResult.RouteValues["id"].ShouldBe(2);
            redirectResult.ControllerName.ShouldBeNull();

            var od = OrderData[1].GetOrderDetails();

            od.ClientInfo.Email.ShouldBe("*****@*****.**");
            od.ClientInfo.PhoneNumber.ShouldBe("SubPhone2");
            od.ClientInfo.CopyPhone.ShouldBe("CopyPhone2");
            od.ClientInfo.Department.ShouldBe("Department2");
        }
Пример #2
0
        /// <summary>
        /// Test Setup
        /// </summary>
        public OrderControllerTests()
        {
            //To return the user so can check identity.
            MockHttpContext = new Mock <HttpContext>();

            MockOrderService          = new Mock <IOrderService>();
            MockOrderMessagingService = new Mock <IOrderMessageService>();
            MockLabworksService       = new Mock <ILabworksService>();
            MockFinancialService      = new Mock <IFinancialService>();
            MockAppSettings           = new Mock <IOptions <AppSettings> >();
            MockDbContext             = new Mock <ApplicationDbContext>();
            MockClaimsPrincipal       = new Mock <ClaimsPrincipal>();
            var mockDataProvider = new Mock <SessionStateTempDataProvider>();

            //Default data
            var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, "Creator1"),
            }));

            TestItemModelData = new List <TestItemModel>();
            for (int i = 0; i < 10; i++)
            {
                TestItemModelData.Add(CreateValidEntities.TestItemModel(i + 1));
            }

            OrderData = new List <Order>();
            for (int i = 0; i < 3; i++)
            {
                var order = CreateValidEntities.Order(i + 1, true);
                order.Creator = CreateValidEntities.User(2);
                OrderData.Add(order);
            }

            var proc = new TestItemPrices();

            proc.Id           = "PROC";
            proc.InternalCost = 6m;

            var appSettings = new AppSettings();

            appSettings.NonUcRate = 1.9m;

            UserData = new List <User>()
            {
                CreateValidEntities.User(1, true),
                CreateValidEntities.User(2, true)
            };
            UserData[0].Id = "Creator1";

            //Setups
            MockClaimsPrincipal.Setup(a => a.Claims).Returns(user.Claims);
            MockClaimsPrincipal.Setup(a => a.IsInRole(RoleCodes.Admin)).Returns(false);
            MockClaimsPrincipal.Setup(a => a.FindFirst(It.IsAny <string>())).Returns(new Claim(ClaimTypes.NameIdentifier, "Creator1"));

            MockHttpContext.Setup(m => m.User).Returns(MockClaimsPrincipal.Object);



            MockDbContext.Setup(m => m.Orders).Returns(OrderData.AsQueryable().MockAsyncDbSet().Object);
            MockDbContext.Setup(a => a.Users).Returns(UserData.AsQueryable().MockAsyncDbSet().Object);
            MockOrderService.Setup(a => a.PopulateTestItemModel(It.IsAny <bool>())).ReturnsAsync(TestItemModelData);
            MockOrderService.Setup(a => a.PopulateOrder(It.IsAny <OrderSaveModel>(), It.IsAny <Order>()));
            MockLabworksService.Setup(a => a.GetPrice("PROC")).ReturnsAsync(proc);
            MockLabworksService.Setup(a => a.GetClientDetails(It.IsAny <string>())).ReturnsAsync(CreateValidEntities.ClientDetailsLookupModel(3));
            MockAppSettings.Setup(a => a.Value).Returns(appSettings);

            //The controller
            Controller = new OrderController(MockDbContext.Object,
                                             MockOrderService.Object,
                                             MockOrderMessagingService.Object,
                                             MockLabworksService.Object,
                                             MockFinancialService.Object,
                                             MockAppSettings.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = MockHttpContext.Object
                },
                TempData = new TempDataDictionary(MockHttpContext.Object, mockDataProvider.Object)
            };
        }