public void BorrowBookModifiesLendList(string isbn, string cnp)
        {
            var mockValidator = new Mock <IValidationService>();

            mockValidator.Setup(x => x.IsValidCNP(cnp)).Returns(true);
            var dependencyService = new DependencyService();

            dependencyService.Register <IValidationService>(mockValidator.Object);
            var availableBooks = new List <BookProductInfo> {
                new BookProductInfo {
                    Book = new Book {
                        ISBN = isbn
                    }, Quantity = 1
                }
            };
            var library = new LibraryRepository(availableBooks, dependencyService);

            var borrowResult = library.Borrow(isbn, cnp);

            Assert.True(borrowResult);
            var borrowedBook = Assert.Single(library.BorrowedBooks);

            Assert.NotNull(borrowedBook);

            Assert.Equal(isbn, borrowedBook.ISBN);
            Assert.False(borrowedBook.HasBeenReturned);
            // timestamps
        }
        public void BorrowInexistingBook(string isbn, string cnp)
        {
            var mockValidator = new Mock <IValidationService>();

            mockValidator.Setup(x => x.IsValidCNP(cnp)).Returns(true);
            var dependencyService = new DependencyService();

            dependencyService.Register <IValidationService>(mockValidator.Object);
            var availableBooks = new List <BookProductInfo>();
            var library        = new LibraryRepository(availableBooks, dependencyService);

            var borrowResult = library.Borrow(isbn, cnp);

            Assert.False(borrowResult);
            Assert.Empty(library.BorrowedBooks);
        }
        public void BorrowBookCnpInvalid(string isbn, string cnp)
        {
            var mockValidator = new Mock <IValidationService>();

            mockValidator.Setup(x => x.IsValidCNP(cnp)).Returns(false);
            var dependencyService = new DependencyService();

            dependencyService.Register <IValidationService>(mockValidator.Object);
            var availableBooks = new List <BookProductInfo> {
                new BookProductInfo {
                    Book = new Book {
                        ISBN = isbn
                    }, Quantity = 1
                }
            };
            var library = new LibraryRepository(availableBooks, dependencyService);

            var borrowResult = library.Borrow(isbn, cnp);

            Assert.False(borrowResult);
            Assert.Empty(library.BorrowedBooks);
        }
        public void BorrowBookModifiesAvailableQuantity(string isbn, string cnp)
        {
            var mockValidator = new Mock <IValidationService>();

            mockValidator.Setup(x => x.IsValidCNP(cnp)).Returns(true);
            var dependencyService = new DependencyService();

            dependencyService.Register <IValidationService>(mockValidator.Object);
            var availableBooks = new List <BookProductInfo> {
                new BookProductInfo {
                    Book = new Book {
                        ISBN = isbn
                    }, Quantity = 1
                }
            };
            var library = new LibraryRepository(availableBooks, dependencyService);

            var borrowResult = library.Borrow(isbn, cnp);

            Assert.True(borrowResult);
            var availableQuantity = Assert.Single(library.AvailableBooks).Quantity;

            Assert.Equal(0, availableQuantity);
        }