예제 #1
0
        public void TestBorrowNoBooksAvailable()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var bookManagerMock     = new Mock <IBookManager>();
            var customerManagerMock = new Mock <ICustomerManager>();

            customerManagerMock.Setup(m =>
                                      m.GetCustomer(It.IsAny <int>()))
            .Returns(new Customer {
            });

            bookManagerMock.Setup(m =>
                                  m.GetListOfBooksByTitle(It.IsAny <string>()))
            .Returns(new List <Book>
            {
                new Book
                {
                    BookID = 1,
                    Title  = "Clean Code",
                    Borrow = new Borrow {
                    }
                }
            });

            var borrowAPI   = new BorrowAPI(borrowManagerMock.Object, bookManagerMock.Object, customerManagerMock.Object);
            var successfull = borrowAPI.BorrowBook(1, "Clean Code");

            Assert.AreEqual(BorrowErrorCodes.BookAlreadyBorrowed, successfull);
            borrowManagerMock.Verify(m =>
                                     m.AddBorrow(It.IsAny <Customer>(), It.IsAny <Book>()), Times.Never());
        }
예제 #2
0
        public void TestBorrowOneBook()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var bookManagerMock     = new Mock <IBookManager>();
            var customerManagerMock = new Mock <ICustomerManager>();

            customerManagerMock.Setup(m =>
                                      m.GetCustomer(It.IsAny <int>()))
            .Returns(new Customer {
                CustomerID = 1
            });

            bookManagerMock.Setup(m =>
                                  m.GetListOfBooksByTitle(It.IsAny <string>()))
            .Returns(new List <Book>
            {
                new Book
                {
                    Title = "Clean Code"
                }
            });

            var borrowAPI   = new BorrowAPI(borrowManagerMock.Object, bookManagerMock.Object, customerManagerMock.Object);
            var successfull = borrowAPI.BorrowBook(1, "CleanCode");

            Assert.AreEqual(BorrowErrorCodes.ok, successfull);
            borrowManagerMock.Verify(m =>
                                     m.AddBorrow(It.IsAny <Customer>(), It.IsAny <Book>()), Times.Once());
        }
예제 #3
0
        public void TestBorrowNoBooksAvailableUpdateDate()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var bookManagerMock     = new Mock <IBookManager>();
            var customerManagerMock = new Mock <ICustomerManager>();

            customerManagerMock.Setup(m =>
                                      m.GetCustomer(It.IsAny <int>()))
            .Returns(new Customer
            {
                Borrows = new List <Borrow>
                {
                    new Borrow
                    {
                        BorrowID = 1,
                        Book     = new Book
                        {
                            BookID = 1,
                            Title  = "Clean Code"
                        }
                    }
                }
            });

            bookManagerMock.Setup(m =>
                                  m.GetListOfBooksByTitle(It.IsAny <string>()))
            .Returns(new List <Book> {
                new Book {
                    Title = "Clean Code", Borrow = new Borrow {
                    }
                }
            });

            var borrowAPI   = new BorrowAPI(borrowManagerMock.Object, bookManagerMock.Object, customerManagerMock.Object);
            var successfull = borrowAPI.BorrowBook(1, "Clean Code");

            Assert.AreEqual(BorrowErrorCodes.CustomerBorrowHasBeenExteneded, successfull);
            borrowManagerMock.Verify(m =>
                                     m.UpdateBorrowDate(It.IsAny <Borrow>()), Times.Once());
        }
예제 #4
0
        public void TestBorrowOldBill()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var bookManagerMock     = new Mock <IBookManager>();
            var customerManagerMock = new Mock <ICustomerManager>();

            customerManagerMock.Setup(m =>
                                      m.GetCustomer(It.IsAny <int>()))
            .Returns(new Customer
            {
                Bills = new List <Bill>
                {
                    new Bill
                    {
                        BillDate = new DateTime(2018, 12, 10)
                    }
                }
            });

            bookManagerMock.Setup(m =>
                                  m.GetListOfBooksByTitle(It.IsAny <string>()))
            .Returns(new List <Book>
            {
                new Book
                {
                    BookID = 1,
                    Title  = "Clean Code"
                }
            });

            var borrowAPI   = new BorrowAPI(borrowManagerMock.Object, bookManagerMock.Object, customerManagerMock.Object);
            var successfull = borrowAPI.BorrowBook(1, "Clean Code");

            Assert.AreEqual(BorrowErrorCodes.CustomerNotAllowedToBorrowMoreBooks, successfull);
            borrowManagerMock.Verify(m =>
                                     m.AddBorrow(It.IsAny <Customer>(), It.IsAny <Book>()), Times.Never());
        }