public void GivenAUserAndDocumentIdWhenITryToCheckout_AndTheDocumentIsNotCheckedOut_AndTheDocumentExists_TheDocumentIsCheckedOut()
        {
            CheckOut checkOut = null;

            _checkOutRepository.Setup(c => c.GetCheckOut("1")).Returns(checkOut);
            _documentService.Setup(d => d.GetDocument("1")).Returns(new Document()
            {
                Id = 1
            });

            var checkOutResult = _checkOutEngine.CheckOutDocument(It.IsAny <string>(), "1", "manCo", "docType", "subDocType");

            checkOutResult.Should().NotBeNull();
        }
示例#2
0
        public void AddItem(string documentId, string cartId, string userName, string manCo, string docType, string subDocType)
        {
            var cartItems = _cartItemRepository.GetCart(cartId);

            var cartitem = cartItems.FirstOrDefault(c => c.Document.ManCo.Code != manCo);

            if (cartitem != null)
            {
                throw new BasketContainsDifferentManCoException("Basket has documents from a different man co");
            }

            bool documentIsCheckedOut = _checkOutEngine.IsDocumentCheckedOut(documentId);

            if (documentIsCheckedOut)
            {
                throw new DocumentCurrentlyCheckedOutException(string.Format("Document {0} is already checked out", cartId));
            }

            var checkOut = _checkOutEngine.CheckOutDocument(userName, documentId, manCo, docType, subDocType);

            if (checkOut == null)
            {
                throw new UnableToCheckOutDocumentException(string.Format("Unable to check out document {0}", documentId));
            }

            var document = _documentRepository.GetDocument(documentId);

            if (document == null)
            {
                throw new UnableToRetrieveDocumentException(string.Format("Unable to retrieve document {0}", documentId));
            }

            var cartItem = new CartItem
            {
                CartId     = cartId,
                DocumentId = document.Id
            };

            _cartItemRepository.Create(cartItem);
        }