예제 #1
0
        public async Task TestCopySetsTheCreatorToCurrectUserWhenNotAdmin()
        {
            // Arrange
            Order savedResult = null;

            MockDbContext.Setup(a => a.Add(It.IsAny <Order>())).Callback <Order>(r => savedResult = r);


            var copiedOrder = CreateValidEntities.Order(7);

            copiedOrder.Creator    = CreateValidEntities.User(5, true);
            OrderData[1].CreatorId = "xxx";
            OrderData[1].Creator   = CreateValidEntities.User(5);
            MockOrderService.Setup(a => a.DuplicateOrder(OrderData[1], false)).ReturnsAsync(copiedOrder);
            // Act
            var controllerResult = await Controller.Copy(SpecificGuid.GetGuid(2));

            // Assert
            MockOrderService.Verify(a => a.DuplicateOrder(OrderData[1], false), Times.Once);
            MockDbContext.Verify(a => a.Add(It.IsAny <Order>()), Times.Once);
            MockDbContext.Verify(a => a.SaveChangesAsync(new CancellationToken()), Times.Once);

            savedResult.ShouldNotBeNull();
            savedResult.CreatorId.ShouldBe("Creator1");
            savedResult.Creator.Id.ShouldBe("Creator1");
            savedResult.ShareIdentifier.ShouldNotBe(SpecificGuid.GetGuid(2));
            savedResult.SavedTestDetails.ShouldBeNull();

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

            redirectResult.ActionName.ShouldBe("Edit");
            redirectResult.ControllerName.ShouldBeNull();
            redirectResult.RouteValues["id"].ShouldBe(savedResult.Id);
        }
예제 #2
0
        public async Task TestConfirmationPostWhenUcdAccountVerified()
        {
            // Arrange
            OrderData[1].CreatorId   = "Creator1";
            OrderData[1].Status      = OrderStatusCodes.Created;
            OrderData[1].PaymentType = PaymentTypeCodes.UcDavisAccount;
            Controller.ErrorMessage  = null;


            var orderDetails = CreateValidEntities.OrderDetails(2);

            orderDetails.Payment.Account     = "3-1234567";
            orderDetails.Payment.AccountName = "WHAT!";
            orderDetails.ClientInfo.ClientId = null;
            OrderData[1].SaveDetails(orderDetails);

            MockFinancialService.Setup(a => a.GetAccountName(It.IsAny <string>())).ReturnsAsync("My Fake Account");

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

            // Assert
            Controller.ErrorMessage.ShouldBeNull();
            OrderData[1].GetOrderDetails().Payment.AccountName.ShouldBe("My Fake Account");
            MockDbContext.Verify(a => a.SaveChangesAsync(new CancellationToken()), Times.Once);
            MockFinancialService.Verify(a => a.GetAccountName("3-1234567"), Times.Once);
            MockOrderService.Verify(a => a.UpdateAdditionalInfo(OrderData[1]), Times.Once);
            MockOrderService.Verify(a => a.UpdateTestsAndPrices(OrderData[1]), Times.Once);

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

            redirectResult.ActionName.ShouldBe("Confirmed");
            redirectResult.RouteValues["id"].ShouldBe(2);
            redirectResult.ControllerName.ShouldBeNull();
        }
예제 #3
0
        public async Task TestConfirmationPostWhenPaymentOther2()
        {
            // 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          = null;
            OrderData[1].SaveDetails(orderDetails);

            // 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(It.IsAny <string>()), Times.Never);
            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();
        }
예제 #4
0
        public async Task TestSaveWhenEditAndSuccess()
        {
            // Arrange
            OrderData[1].Status    = OrderStatusCodes.Created;
            OrderData[1].CreatorId = "Creator1";
            var model = new OrderSaveModel();

            model.OrderId = 2;

            OrderData[1].SavedTestDetails.ShouldBeNull();

            // Act
            var controllerResult = await Controller.Save(model);

            // Assert
            var     result = Assert.IsType <JsonResult>(controllerResult);
            dynamic data   = JObject.FromObject(result.Value);

            ((bool)data.success).ShouldBe(true);
            ((int)data.id).ShouldBe(2);

            MockOrderService.Verify(a => a.PopulateTestItemModel(It.IsAny <bool>()), Times.Once);
            MockOrderService.Verify(a => a.PopulateOrder(model, OrderData[1]), Times.Once);
            MockDbContext.Verify(a => a.SaveChangesAsync(new CancellationToken()), Times.Once);
            OrderData[1].SavedTestDetails.ShouldNotBeNull();
            OrderData[1].GetTestDetails().Count.ShouldBe(10);
        }
예제 #5
0
        private void PlaceOrderCommandExecute()
        {
            var           selectedDishes = this.DishMenu.Where(i => i.IsSelected == true).Select(i => i.Dish.Name).ToList();
            IOrderService orderService   = new MockOrderService();

            MessageBox.Show("订餐成功");
        }
예제 #6
0
        public void TestCopySetsTheCreatorToCurrectUserWhenAdminIsTrueButNotAdminRole()
        {
            // Arrange
            Order savedResult = null;

            MockDbContext.Setup(a => a.Add(It.IsAny <Order>())).Callback <Order>(r => savedResult = r);


            var copiedOrder = CreateValidEntities.Order(7);

            copiedOrder.Creator    = CreateValidEntities.User(5, true);
            OrderData[1].CreatorId = "xxx";
            OrderData[1].Creator   = CreateValidEntities.User(5);
            MockOrderService.Setup(a => a.DuplicateOrder(OrderData[1], true)).ReturnsAsync(copiedOrder);

            // Act
            var ex = Assert.ThrowsAsync <Exception>(async() => await Controller.Copy(SpecificGuid.GetGuid(2), true));

            // Assert

            ex.Result.Message.ShouldBe("Permissions Missing");


            MockOrderService.Verify(a => a.DuplicateOrder(OrderData[1], true), Times.Once);
            MockDbContext.Verify(a => a.Add(It.IsAny <Order>()), Times.Never);
            MockDbContext.Verify(a => a.SaveChangesAsync(new CancellationToken()), Times.Never);
        }
예제 #7
0
        public async Task TestSaveWhenCreateAndSuccess()
        {
            // Arrange
            var model = new OrderSaveModel();

            model.OrderId = null;

            Order savedResult = null;

            MockDbContext.Setup(a => a.Add(It.IsAny <Order>())).Callback <Order>(r => savedResult = r);

            // Act
            var controllerResult = await Controller.Save(model);

            // Assert
            var     result = Assert.IsType <JsonResult>(controllerResult);
            dynamic data   = JObject.FromObject(result.Value);

            ((bool)data.success).ShouldBe(true);
            ((int)data.id).ShouldBe(0); //Because it would be set in the DB

            MockOrderService.Verify(a => a.PopulateTestItemModel(It.IsAny <bool>()), Times.Once);
            MockOrderService.Verify(a => a.PopulateOrder(model, It.IsAny <Order>()), Times.Once);
            MockDbContext.Verify(a => a.Add(It.IsAny <Order>()), Times.Once);
            MockDbContext.Verify(a => a.SaveChangesAsync(new CancellationToken()), Times.Once);

            savedResult.CreatorId.ShouldBe("Creator1");
            savedResult.Creator.ShouldNotBeNull();
            savedResult.Creator.Id.ShouldBe("Creator1");
            savedResult.Status.ShouldBe(OrderStatusCodes.Created);
            savedResult.ShareIdentifier.ShouldNotBeNull();
        }
예제 #8
0
        private void PlaceOrderCommandExecute() // 点击OrderButton命令穿回来的东西 怎么处理
        {
            var           selectedDishes = this.DishMenu.Where(i => i.IsSelected == true).Select(i => i.Dish.Name).ToList();
            IOrderService orderService   = new MockOrderService();

            orderService.PlaceOrder(selectedDishes);
            MessageBox.Show("订餐成功!");
        }
예제 #9
0
        public OrderControllerTest()
        {
            orderService = MockOrderService.GetOrderService();
            mapper       = new Mapper(MockProductService.GetProductService());
            var logger = new MockLogger <OrderController>().CreateLogger();

            orderController = new OrderController(orderService, mapper, logger);
        }
        private void PlaceOrderCommandExecute()
        {
            var           selectedTrains = this.TicketItem.Where(i => i.IsSelected == true).Select(i => i.Train.Number).ToList();
            IOrderService orderService   = new MockOrderService();

            orderService.PlaceOrder(selectedTrains);
            MessageBox.Show("订票成功");
        }
예제 #11
0
        private void PlaceOrderCommandExcute()
        {
            var           selectedDishes = this.DishMenu.Where(m => m.IsSelected == true).Select(m => m.Dish.Name).ToList();
            IOrderService orderService   = new MockOrderService();

            orderService.PlaceOrder(selectedDishes);
            System.Windows.MessageBox.Show("订餐成功!");
        }
예제 #12
0
        private void PlaceOrder()
        {
            var           selectedDishes = DishMenu.Where(p => p.IsSelected == true).Select(p => p.Dish.Name).ToList();
            IOrderService orderService   = new MockOrderService();

            orderService.PlaceOrder(selectedDishes);
            MessageBox.Show("订餐成功");
        }
        private void PlaceOrderCommandExecute(object parameter)
        {
            var selectDishes = this.DishMenu.Where(p => p.IsSelected == true).Select(p => p.dish.Name).ToList();

            IOrderService orderService = new MockOrderService();

            orderService.PlaceOrder(selectDishes);

            MessageBox.Show("Order Successed");
        }
예제 #14
0
        public async Task TestIndexCallsPopulateTestItemModel()
        {
            // Arrange

            // Act
            await Controller.Index();

            // Assert
            MockOrderService.Verify(a => a.PopulateTestItemModel(false), Times.Once);
        }
예제 #15
0
        private void PlaceOrderCommandExecute()
        {
            // 过滤
            // 先找出已选择的项, 再在其中找出所有菜单名称
            var           selectDishes = this.DishMenuVM.Where(i => i.IsSelected == true).Select(i => i.Dish.Name).ToList();
            IOrderService orderService = new MockOrderService();

            orderService.PlaceOrder(selectDishes);
            MessageBox.Show("预定成功");

            // 打印对象多字段
            //var selectDishes = this.DishMenuVM.Where(i => i.IsSelected == true).Select(i => i.Dish).ToList();
            //IOrderService orderService = new MockOrderService();
            //orderService.PlaceOrderDish(selectDishes);
            //MessageBox.Show("预定成功");
        }
예제 #16
0
        public async Task TestCopySetsTheCreatorToCorrectUserWhenAdminIsTrue()
        {
            MockClaimsPrincipal.Setup(a => a.IsInRole(RoleCodes.Admin)).Returns(true);

            Order savedResult = null;

            MockDbContext.Setup(a => a.Add(It.IsAny <Order>())).Callback <Order>(r => savedResult = r);


            var copiedOrder   = CreateValidEntities.Order(7, true);
            var testItemModel = new List <TestItemModel>();

            for (int i = 0; i < 5; i++)
            {
                testItemModel.Add(CreateValidEntities.TestItemModel(1));
            }
            copiedOrder.SaveTestDetails(testItemModel);
            OrderData[1].SaveTestDetails(testItemModel);

            copiedOrder.Creator    = CreateValidEntities.User(5, true);
            OrderData[1].CreatorId = "xxx";
            OrderData[1].Creator   = CreateValidEntities.User(5);
            MockOrderService.Setup(a => a.DuplicateOrder(OrderData[1], true)).ReturnsAsync(copiedOrder);
            // Act
            var controllerResult = await Controller.Copy(SpecificGuid.GetGuid(2), true);

            // Assert
            MockOrderService.Verify(a => a.DuplicateOrder(OrderData[1], true), Times.Once);
            MockDbContext.Verify(a => a.Add(It.IsAny <Order>()), Times.Once);
            MockDbContext.Verify(a => a.SaveChangesAsync(new CancellationToken()), Times.Once);

            savedResult.ShouldNotBeNull();
            savedResult.CreatorId.ShouldBe("xxx");
            savedResult.Creator.Id.ShouldBe("5");
            savedResult.ShareIdentifier.ShouldNotBe(SpecificGuid.GetGuid(2));
            savedResult.Status.ShouldBe(OrderStatusCodes.Confirmed);
            savedResult.GetOrderDetails().LabComments.ShouldContain("Duplicated from 2");
            savedResult.GetTestDetails().Count.ShouldBe(5);

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

            redirectResult.ActionName.ShouldBe("AddRequestNumber");
            redirectResult.ControllerName.ShouldBe("Lab");
            redirectResult.RouteValues["id"].ShouldBe(savedResult.Id);

            MockClaimsPrincipal.Verify(a => a.IsInRole(RoleCodes.Admin), Times.Once);
        }
예제 #17
0
        public async Task TestIndexReturnsViewWithExpectedData()
        {
            // Arrange

            // Act
            var controllerResult = await Controller.Index();

            // Assert
            MockOrderService.Verify(a => a.PopulateTestItemModel(false), Times.Once);
            var result      = Assert.IsType <ViewResult>(controllerResult);
            var resultModel = Assert.IsType <TestItemModel[]>(result.Model);

            resultModel.Length.ShouldBe(4);
            foreach (var testItemModel in resultModel)
            {
                testItemModel.Public.ShouldBe(true);
            }
        }
예제 #18
0
        public void Test_SyncBookOrders_3_Orders_Only_2_book_order()
        {
            // hard to isolate dependency to unit test
            var target = new MockOrderService();
            //var expected = new List<Order>()
            //{
            //	new Order{ Type ="Book", Price=10,ProductName="Good", CustomerName="Steve"},
            //		new Order{ Type ="Book", Price=12,ProductName="Good", CustomerName="91" }
            //};

            var fakeBookDao = Substitute.For <IBookDao>();

            target.SetBookDao(fakeBookDao);
            target.SyncBookOrders();
            fakeBookDao.Received(2).Insert(Arg.Is <Order>(x => x.Type == "Book"));
            //var target = new OrderService();
            //target.SyncBookOrders();
        }
        public async Task SubmitValidOrder_NavigatesToOrderConfirmation()
        {
            bool navigateCalled     = false;
            bool clearHistoryCalled = false;
            bool clearCartCalled    = false;
            var  navigationService  = new MockNavigationService();

            navigationService.NavigateDelegate = (s, o) =>
            {
                Assert.AreEqual("OrderConfirmation", s);
                navigateCalled = true;
                return(true);
            };
            navigationService.ClearHistoryDelegate = () =>
            {
                clearHistoryCalled = true;
            };
            var accountService = new MockAccountService()
            {
                VerifySavedCredentialsAsyncDelegate = () => Task.FromResult <UserInfo>(new UserInfo())
            };
            var orderService = new MockOrderService()
            {
                // the order is valid, it can be processed
                ProcessOrderAsyncDelegate = (o) => Task.FromResult(true)
            };
            var resourcesService = new MockResourceLoader()
            {
                GetStringDelegate = (key) => key
            };
            var shoppingCartRepository = new MockShoppingCartRepository();

            shoppingCartRepository.ClearCartAsyncDelegate = () =>
            {
                clearCartCalled = true;
                return(Task.Delay(0));
            };
            var target = new CheckoutSummaryPageViewModel(navigationService, orderService, null, null, null, shoppingCartRepository, accountService, resourcesService, null, null);
            await target.SubmitCommand.Execute();

            Assert.IsTrue(navigateCalled);
            Assert.IsTrue(clearHistoryCalled);
            Assert.IsTrue(clearCartCalled);
        }
        public void SubmitInvalidOrder_CallsErrorDialog()
        {
            bool successDialogCalled = false;
            bool errorDialogCalled   = false;
            var  navigationService   = new MockNavigationService();
            var  accountService      = new MockAccountService()
            {
                VerifySavedCredentialsAsyncDelegate = () => Task.FromResult <UserInfo>(new UserInfo())
            };
            var orderService = new MockOrderService()
            {
                // the order is invalid, it cannot be processed
                ProcessOrderAsyncDelegate = (o) =>
                {
                    var modelValidationResult = new ModelValidationResult();
                    modelValidationResult.ModelState.Add("someKey", new List <string>()
                    {
                        "the value of someKey is invalid"
                    });
                    throw new ModelValidationException(modelValidationResult);
                }
            };
            var resourcesService = new MockResourceLoader()
            {
                GetStringDelegate = (key) => key
            };
            var alertService = new MockAlertMessageService()
            {
                ShowAsyncDelegate = (dialogTitle, dialogMessage) =>
                {
                    successDialogCalled = dialogTitle.ToLower().Contains("purchased");
                    errorDialogCalled   = !successDialogCalled;
                    return(Task.FromResult(successDialogCalled));
                }
            };

            var target = new CheckoutSummaryPageViewModel(navigationService, orderService, null, null, null, null, accountService, resourcesService, alertService, null);

            target.SubmitCommand.Execute();

            Assert.IsFalse(successDialogCalled);
            Assert.IsTrue(errorDialogCalled);
        }
예제 #21
0
        public async Task TestConfirmationGetReturnsView()
        {
            // Arrange
            OrderData[1].CreatorId = "Creator1";
            var orderDetails = CreateValidEntities.OrderDetails(2);

            orderDetails.Quantity = 5;
            OrderData[1].SaveDetails(orderDetails);

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

            // Assert
            var result      = Assert.IsType <ViewResult>(controllerResult);
            var resultModel = Assert.IsType <OrderReviewModel>(result.Model);

            resultModel.Order.ShouldBe(OrderData[1]);
            resultModel.OrderDetails.Quantity.ShouldBe(5);

            MockOrderService.Verify(a => a.UpdateTestsAndPrices(OrderData[1]), Times.Once);
        }
예제 #22
0
        public async Task TestEditReturnsViewWithExpectedResults()
        {
            // Arrange
            OrderData[1].CreatorId = "Creator1";
            OrderData[1].Status    = OrderStatusCodes.Created;
            OrderData[1].Creator   = CreateValidEntities.User(7);

            // Act
            var controllerResult = await Controller.Edit(2);

            // Assert
            MockOrderService.Verify(a => a.PopulateTestItemModel(It.IsAny <bool>()), Times.Once);
            MockLabworksService.Verify(a => a.GetPrice("PROC"), Times.Once);

            var result = Assert.IsType <ViewResult>(controllerResult);
            var model  = Assert.IsType <OrderEditModel>(result.Model);

            model.Order.ShouldNotBeNull();
            model.Order.Id.ShouldBe(2);
            model.TestItems.Length.ShouldBe(10);
            model.InternalProcessingFee.ShouldBe(6m);
            model.ExternalProcessingFee.ShouldBe(12m);
            model.Defaults.DefaultEmail.ShouldBe("*****@*****.**");
        }
예제 #23
0
        public async Task CreateCallsOrderService()
        {
            var controllerResult = await Controller.Create();

            MockOrderService.Verify(a => a.PopulateTestItemModel(It.IsAny <bool>()), Times.Once);
        }
예제 #24
0
 public OrderViewFactoryTests()
 {
     _userService  = new MockUserService();
     _orderService = new MockOrderService();
 }
예제 #25
0
 private void PlaceOrderCommandExecute()
 {
     var selectedDishes = this.DishMenu.Where(i => i.IsSelected == true).Select(i => i.Dish.Name).ToList();
     IOrderService orderService = new MockOrderService();
     orderService.PlaceOrder(selectedDishes);
     MessageBox.Show("订餐成功!");
 }