Beispiel #1
0
        public void TestMostPopularBooks()
        {
            var borrowManagerMock = new Mock <IBorrowManager>();

            borrowManagerMock.Setup(m =>
                                    m.GetAllBorrows())
            .Returns(new List <Borrow>
            {
                new Borrow
                {
                    Book = new Book
                    {
                        Author = "Albin",
                        Title  = "c#"
                    },
                    Customer = new Customer
                    {
                        DateOfBirth = new DateTime(2010, 10, 10),
                        Borrows     = new List <Borrow>
                        {
                            new Borrow {
                            }
                        }
                    }
                }
            });

            var borrowAPI       = new BorrowAPI(borrowManagerMock.Object, null, null);
            var popularBookList = borrowAPI.GetMostPopularBooksByAgeGroup();

            Assert.AreEqual(popularBookList.Count, 1);
        }
Beispiel #2
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());
        }
Beispiel #3
0
        public void ExtendBorrowCustomerHasDebt()
        {
            var customerManagerMock = SetupMock(new Customer
            {
                CustomerID = 1,
                Debt       = 100
            });
            var bookManagerMock = SetupMock(new Book
            {
                BookID     = 1,
                IsBorrowed = true
            });
            var borrowManagerMock = SetupMock(new Borrow
            {
                BorrowID   = 1,
                CustomerID = 1,
                BookID     = 1
            });

            var borrowAPI = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result    = borrowAPI.AddBorrow(000001, "Circe");

            Assert.AreEqual(AddBorrowStatusCodes.CustomerHasDebtCanNotExtendBorrow, result);
            borrowManagerMock.Verify(
                m => m.ExtendBorrowDate(It.Is <int>(i => i == 1), It.IsAny <DateTime>(), It.IsAny <DateTime>()),
                Times.Never());
        }
Beispiel #4
0
        public void TestReturnOneBookWithBill()
        {
            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.GetBookByBookID(It.IsAny <int>()))
            .Returns(new Book {
                BookID = 1
            });

            borrowManagerMock.Setup(m =>
                                    m.GetBorrowByBookID(It.IsAny <int>()))
            .Returns(new Borrow
            {
                Bill = new Bill
                {
                    Amount = 100
                },
                BookID = 1
            });

            var borrowAPI   = new BorrowAPI(borrowManagerMock.Object, bookManagerMock.Object, customerManagerMock.Object);
            var successfull = borrowAPI.ReturnBook(1, 2);

            Assert.AreEqual(100, successfull);
            borrowManagerMock.Verify(m =>
                                     m.ReturnBorrowedBook(It.IsAny <Borrow>(), It.IsAny <Byte>()), Times.Once());
        }
Beispiel #5
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());
        }
Beispiel #6
0
        public void CreateInvoiceNoBorrowOverdueDate()
        {
            var bookManagerMock     = new Mock <IBookManager>();
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var customerManagerMock = new Mock <ICustomerManager>();

            var todayDate = DateTime.Today;

            borrowManagerMock.Setup(m =>
                                    m.GetBorrowWithOverdueReturnDate(It.IsAny <DateTime>()))
            .Returns(new List <Borrow>());

            borrowManagerMock.Setup(m =>
                                    m.GetCustomerByBorrow(It.IsAny <Borrow>()))
            .Returns(new Customer {
                CustomerNumber = 000001
            });

            borrowManagerMock.Setup(m =>
                                    m.GetInvoiceByBorrow(It.IsAny <Borrow>()))
            .Returns((Invoice)null);

            var borrowAPI = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result    = borrowAPI.CreateInvoice();

            Assert.AreEqual(CreateInvoiceStatusCodes.NoBorrowOverdueDate, result);
            borrowManagerMock.Verify(m =>
                                     m.CreateInvoice(It.IsAny <Customer>(), It.IsAny <Borrow>(), It.IsAny <decimal>(), It.IsAny <decimal>()), Times.Never);
        }
Beispiel #7
0
        public void ExtendBorrowOk()
        {
            var customerManagerMock = SetupMock(new Customer
            {
                CustomerID = 1,
                Debt       = 0
            });
            var bookManagerMock = SetupMock(new Book
            {
                BookID     = 1,
                IsBorrowed = true
            });
            var borrowManagerMock = SetupMock(new Borrow
            {
                BorrowID   = 1,
                CustomerID = 1,
                BookID     = 1
            });

            var borrowAPI = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result    = borrowAPI.AddBorrow(000001, "Circe");

            Assert.AreEqual(AddBorrowStatusCodes.ExtendBorrowForCustomer, result);
            borrowManagerMock.Verify(
                m => m.ExtendBorrowDate(It.Is <int>(i => i == 1), It.IsAny <DateTime>(), It.IsAny <DateTime>()),
                Times.Once());

            borrowManagerMock.Verify(
                m => m.AddToHistoryListOfBorrow(It.Is <int>(i => i == 000001), It.Is <string>(i => i == "Circe"), It.IsAny <DateTime>()),
                Times.Once());
        }
Beispiel #8
0
        public void AddBorrowCustomerHasDebt()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var customerManagerMock = SetupMock(new Customer
            {
                CustomerNumber = 000001,
                Debt           = 100
            });
            var bookManagerMock = SetupMock(new Book
            {
                BookTitle  = "Circe",
                IsBorrowed = false
            });

            borrowManagerMock.Setup(m =>
                                    m.GetAllCurrentBorrowFromCustomer(It.IsAny <int>()))
            .Returns(new List <Borrow>
            {
                new Borrow
                {
                    CustomerID = 1,
                    BookID     = 1
                },
            });

            var borrowAPI = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result    = borrowAPI.AddBorrow(000001, "Circe");

            Assert.AreEqual(AddBorrowStatusCodes.CustomerHasDebt, result);
            borrowManagerMock.Verify(
                m => m.AddBorrow(It.Is <int>(i => i == 000001), It.Is <string>(i => i == "Circe"),
                                 It.IsAny <DateTime>(), It.IsAny <DateTime>()),
                Times.Never());
        }
Beispiel #9
0
        public void AddBorrowNoSuchCustomer()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var customerManagerMock = SetupMock((Customer)null);
            var bookManagerMock     = SetupMock(new Book {
                BookTitle = "Circe"
            });

            var borrowAPI = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result    = borrowAPI.AddBorrow(000020, "Circe");

            Assert.AreEqual(AddBorrowStatusCodes.NoSuchCustomer, result);
            borrowManagerMock.Verify(
                m => m.AddBorrow(000020, "Circe", new DateTime(), new DateTime()), Times.Never());
        }
Beispiel #10
0
        public void AddBorrowNoSuchBook()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var customerManagerMock = SetupMock(new Customer {
                CustomerNumber = 000001
            });
            var bookManagerMock = SetupMock((Book)null);

            var borrowAPI = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result    = borrowAPI.AddBorrow(000001, "HejHopp");

            Assert.AreEqual(AddBorrowStatusCodes.NoSuchBook, result);
            borrowManagerMock.Verify(
                m => m.AddBorrow(000001, "HejHopp", new DateTime(), new DateTime()), Times.Never());
        }
Beispiel #11
0
        public void ReturnBorrowNoSuchBorrow()
        {
            var customerManagerMock = SetupMock(new Customer {
                CustomerNumber = 000001
            });
            var bookManagerMock = SetupMock(new Book {
                BookTitle = "Circe"
            });
            var borrowManagerMock = SetupMock((Borrow)null);
            var borrowAPI         = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result            = borrowAPI.ReturnBorrow(000001, "Circe", 4);

            Assert.AreEqual(ReturnBorrowStatusCodes.NoSuchBorrow, result);
            borrowManagerMock.Verify(m =>
                                     m.ReturnBorrow(It.IsAny <int>(), It.IsAny <Book>(), It.IsAny <int>()), Times.Never);
        }
Beispiel #12
0
        //ADD BORROW:
        private AddBorrowStatusCodes AddBorrowNumberOne(Mock <IBorrowManager> borrowManagerMock)
        {
            var customerManagerMock = SetupMock(new Customer {
                CustomerNumber = 000001
            });
            var bookManagerMock = SetupMock(new Book
            {
                BookTitle  = "Circe",
                IsBorrowed = false
            });

            var borrowAPI   = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var successfull = borrowAPI.AddBorrow(000001, "Circe");

            return(successfull);
        }
Beispiel #13
0
        public void AddBorrowBookIsUnavailable()
        {
            var borrowManagerMock   = new Mock <IBorrowManager>();
            var customerManagerMock = SetupMock(new Customer {
                CustomerNumber = 000001
            });
            var bookManagerMock = SetupMock(new Book
            {
                BookTitle  = "Flights",
                IsBorrowed = true
            });

            var borrowAPI = new BorrowAPI(borrowManagerMock.Object, customerManagerMock.Object, bookManagerMock.Object);
            var result    = borrowAPI.AddBorrow(000001, "Flights");

            Assert.AreEqual(AddBorrowStatusCodes.BookIsUnavailable, result);
            borrowManagerMock.Verify(
                m => m.AddBorrow(000001, "Flights", new DateTime(), new DateTime()), Times.Never());
        }
Beispiel #14
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());
        }
Beispiel #15
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());
        }