예제 #1
0
        public void ValidatesPatronId()
        {
            var checkOutService = new CheckOutService(context, holdingsServiceMock.Object);
            var checkout        = new CheckOutViewModel {
                Barcode = "QA123:1", PatronId = 1
            };

            Assert.False(checkOutService.Checkout(checkout));

            Assert.Equal("Patron with ID 1 not found", checkOutService.ErrorMessages.First());
        }
예제 #2
0
        public void ValidatesBarcode()
        {
            SavePatronWithId(context, 5);
            var checkOutService = new CheckOutService(context, holdingsServiceMock.Object);
            var checkout        = new CheckOutViewModel {
                Barcode = "QA1231", PatronId = 5
            };

            Assert.False(checkOutService.Checkout(checkout));

            Assert.Equal("Invalid holding barcode format: QA1231", checkOutService.ErrorMessages.First());
        }
예제 #3
0
        public void ValidatesHoldingRetrieval()
        {
            SavePatronWithId(context, 5);
            var checkOutService = new CheckOutService(context, holdingsServiceMock.Object);
            var checkout        = new CheckOutViewModel {
                Barcode = "QA123:1", PatronId = 5
            };

            Assert.False(checkOutService.Checkout(checkout));

            Assert.Equal("Holding with barcode QA123:1 not found",
                         checkOutService.ErrorMessages.First());
        }
예제 #4
0
        public void ValidatesHoldingAvailability()
        {
            SaveCheckedOutHoldingWithClassification(context, "QA123");
            SavePatronWithId(context, 5);
            var checkOutService = new CheckOutService(context, holdingsServiceMock.Object);
            var checkout        = new CheckOutViewModel {
                Barcode = "QA123:1", PatronId = 5
            };

            Assert.False(checkOutService.Checkout(checkout));

            Assert.Equal("Holding with barcode QA123:1 is already checked out",
                         checkOutService.ErrorMessages.First());
        }
예제 #5
0
        public void ChecksOutMaterial()
        {
            var patron          = SavePatronWithId(context, 5);
            var holding         = SaveCheckedInHoldingWithClassification(context, "QA123");
            var checkOutService = new CheckOutService(context, holdingsServiceMock.Object);
            var checkout        = new CheckOutViewModel {
                Barcode = "QA123:1", PatronId = patron.Id
            };

            var result = checkOutService.Checkout(checkout);

            Assert.True(result);
            holdingsServiceMock.Verify(s => s.CheckOut(holding, 5));
        }
예제 #6
0
        public ActionResult Index(CheckOutViewModel checkout)
        {
            if (!ModelState.IsValid)
            {
                return(View(checkout));
            }

            checkout.BranchesViewList = new List <Branch>(branchesService.AllBranchesIncludingVirtual());
            if (!checkOutService.Checkout(checkout))
            {
                AddModelErrors(checkOutService.ErrorMessages, ModelKey);
                return(View(checkout));
            }
            return(RedirectToAction("Index"));
        }