public async void SetStatusProcessing_CurrentStatusInvalid_PresentsError(OrderStatus status)
        {
            List<WebOrder> orders = new List<WebOrder>
            {
                new WebOrder
                {
                    Id = 1,
                    MemberId = UserId,
                    OrderStatus = status
                }
            };

            Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake();
            Mock<DbSet<WebOrder>> webOrdersDbSetStub = TestHelpers.GetFakeAsyncDbSet(orders.AsQueryable());
            webOrdersDbSetStub.Setup(wo => wo.FindAsync(orders[0].Id)).ReturnsAsync(orders[0]);
            dbStub.Setup(db => db.WebOrders).Returns(webOrdersDbSetStub.Object);

            WebOrdersController controller = new WebOrdersController(dbStub.Object, idGetter: null, stripeService: null, userManager: null);

            var result = await controller.SetStatusProcessing(1, true) as RedirectToRouteResult;

            Assert.That(result != null);
            Assert.That(result.RouteValues["action"], Is.EqualTo("Details"));

            var alerts = controller.TempData["AlertMessages"];
            Assert.That(alerts is List<AlertMessage>);

            AlertMessage message = ((List<AlertMessage>)alerts)[0];
            Assert.That(message.Message, Is.EqualTo("An order can only begin processing if its status is Pending Processing."));
        }
        public async void SetStatusProcessing_CurrentStatusInvalid_RedirectsToDetails()
        {
            List<WebOrder> orders = new List<WebOrder>
            {
                new WebOrder
                {
                    Id = 1,
                    MemberId = UserId,
                    OrderStatus = OrderStatus.PendingProcessing
                }
            };

            Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake();
            Mock<DbSet<WebOrder>> webOrdersDbSetStub = TestHelpers.GetFakeAsyncDbSet(orders.AsQueryable());
            webOrdersDbSetStub.Setup(wo => wo.FindAsync(orders[0].Id)).ReturnsAsync(orders[0]);
            dbStub.Setup(db => db.WebOrders).Returns(webOrdersDbSetStub.Object);

            WebOrdersController controller = new WebOrdersController(dbStub.Object, idGetter: null, stripeService: null, userManager: null);

            var result = await controller.SetStatusProcessing(1, true) as RedirectToRouteResult;

            Assert.That(result != null);
            Assert.That(result.RouteValues["action"], Is.EqualTo("Details"));
            Assert.That(orders[0].OrderStatus, Is.EqualTo(OrderStatus.BeingProcessed));
        }
        public async void SetStatusProcessing_Unconfirmed_PresentsError()
        {
            WebOrdersController controller = new WebOrdersController(veilDataAccess: null, idGetter: null, stripeService: null, userManager: null);

            var result = await controller.SetStatusProcessing(null, false) as RedirectToRouteResult;

            Assert.That(result != null);
            Assert.That(result.RouteValues["action"], Is.EqualTo("Details"));

            var alerts = controller.TempData["AlertMessages"];
            Assert.That(alerts is List<AlertMessage>);

            AlertMessage message = ((List<AlertMessage>)alerts)[0];
            Assert.That(message.Message, Is.EqualTo("You must confirm your action by checking \"Confirm Processing.\""));
        }