示例#1
0
 def testRepository(self):
     bookRepo = Repository()
     testList = [
         Book(0, "book0", "desc0", "author0"),
         Book(1, "book1", "desc1", "author1")
     ]
     for i in range(0, len(testList)):
         bookRepo.add(testList[i])
         self.assertEqual(bookRepo.get(i), testList[i])
     bookRepo.update(1, Book(0, "Book1", "Author1", "Description1"))
     self.assertEqual(bookRepo.get(1),
                      Book(1, "Book1", "Author1", "Description1"))
示例#2
0
class TestRepository(unittest.TestCase):
    def setUp(self):
        self.repo = Repository()
        self.c = Client(12, 'alex')
        self.c1 = Client(121, 'ana')
        self.repo2 = FileRepository('testclient.txt',
                                    Client.readClientFromLine,
                                    Client.writeClientToLine)
        self.repo3 = FileRepository('testclient4.txt',
                                    Client.readClientFromLine,
                                    Client.writeClientToLine)

    def test_repo(self):
        self.assertEqual(len(self.repo), 0)
        self.repo.add(self.c)
        self.assertEqual(str(self.repo), '012. alex\n\n')
        self.assertEqual(len(self.repo), 1)
        self.assertRaises(RepositoryException, self.repo.add, self.c)
        self.assertEqual(len(self.repo.getAll()), 1)
        self.assertEqual(self.repo.findByID(12), 12)
        self.assertEqual(self.repo.findByID(13), -1)
        self.assertEqual(self.repo.get(12), self.c)
        self.assertRaises(RepositoryException, self.repo.get, 13)
        self.assertRaises(RepositoryException, self.repo.remove, 13)
        self.assertRaises(RepositoryException, self.repo.update, 13)
        self.repo.update(self.c)
        self.repo.remove(12)
        self.assertEqual(len(self.repo), 0)
        self.repo2.add(self.c)
        self.repo2.upd(self.c)
        self.repo2.rem(self.c.getID())
        self.assertEqual(len(self.repo2), 1)
示例#3
0
class ControllerTest(unittest.TestCase):
    def setUp(self):
        unittest.TestCase.setUp(self)
        undoController = UndoController()

        self.rentalList = Repository()
        self.bookList = Repository()
        self.clientList = Repository()

        self.rentalList.add(
            Rental(0, 0, 1, datetime.datetime.strptime("2017-10-10",
                                                       '%Y-%m-%d'),
                   datetime.datetime.strptime("2017-10-20", '%Y-%m-%d'), ""))
        self.rentalList.add(
            Rental(1, 1, 1, datetime.datetime.strptime("2017-10-10",
                                                       '%Y-%m-%d'),
                   datetime.datetime.strptime("2017-10-20", '%Y-%m-%d'), ""))

        self.bookList.add(Book(0, "book0", "desc0", "author0"))
        self.bookList.add(Book(1, "book1", "desc1", "author1"))
        self.bookList.add(Book(2, "book2", "desc2", "author2"))

        self.clientList.add(Client(0, "name0"))
        self.clientList.add(Client(1, "name1"))
        self.clientList.add(Client(2, "name2"))

        self.rentalController = RentalController(self.rentalList,
                                                 self.bookList,
                                                 self.clientList,
                                                 undoController)
        self.bookController = BookController(self.bookList, undoController,
                                             self.rentalController)
        self.clientController = ClientController(self.clientList,
                                                 undoController,
                                                 self.rentalController)

    def tearDown(self):
        unittest.TestCase.tearDown(self)

    def testAddBook(self):

        self.bookController.addBook(3, "book3", "desc3", "author3")
        self.assertEqual(self.bookList.getAll(), [
            Book(0, "book0", "desc0", "author0"),
            Book(1, "book1", "desc1", "author1"),
            Book(2, "book2", "desc2", "author2"),
            Book(3, "book3", "desc3", "author3")
        ])

    def testAddClient(self):

        self.clientController.addClient(3, "name3")
        self.assertEqual(self.clientList.getAll(), [
            Client(0, "name0"),
            Client(1, "name1"),
            Client(2, "name2"),
            Client(3, "name3")
        ])

    def testAddRental(self):

        rentalDate = datetime.datetime.now().date()
        self.rentalController.addRental(2, 2, 1)
        self.assertEqual(self.rentalList.getAll(), [
            Rental(0, 0, 1, datetime.datetime.strptime("2017-10-10",
                                                       '%Y-%m-%d'),
                   datetime.datetime.strptime("2017-10-20", '%Y-%m-%d'), ""),
            Rental(1, 1, 1, datetime.datetime.strptime("2017-10-10",
                                                       '%Y-%m-%d'),
                   datetime.datetime.strptime("2017-10-20", '%Y-%m-%d'), ""),
            Rental(2, 2, 1, rentalDate,
                   rentalDate + datetime.timedelta(days=10), "")
        ])
        try:
            self.rentalController.addRental(
                Rental(100, 1,
                       datetime.datetime.strptime("2017-10-10", '%Y-%m-%d'),
                       datetime.datetime.strptime("2017-10-20", '%Y-%m-%d')))
            self.rentalController.addRental(
                Rental(2, 200,
                       datetime.datetime.strptime("2017-10-10", '%Y-%m-%d'),
                       datetime.datetime.strptime("2017-10-20", '%Y-%m-%d')))
        except Exception:
            pass

    def testRemoveBook(self):

        self.bookController.removeBook(0)
        self.assertEqual(self.bookList.getAll(), [
            Book(1, "book1", "desc1", "author1"),
            Book(2, "book2", "desc2", "author2")
        ])
        self.bookController.removeBook(2)
        self.bookController.removeBook(1)
        self.assertEqual(self.bookList.getAll(), [])
        with self.assertRaises(Exception):
            self.bookController.removeBook(10)

    def testRemoveClient(self):

        self.clientController.removeClient(1)
        self.assertEqual(
            self.clientList.getAll(),
            [Client(0, "name0"), Client(2, "name2")])
        with self.assertRaises(Exception):
            self.clientController.removeClient(100)

    def testRemoveRentalByClientId(self):

        self.rentalController.removeRentalByClientId(1)
        self.assertEqual(self.rentalList.getAll(), [])

    def testRemoveRentalByBookId(self):

        self.rentalController.removeRentalByBookId(0)
        self.assertEqual(self.rentalList.getAll(), [
            Rental(1, 1, 1, datetime.datetime.strptime("2017-10-10",
                                                       '%Y-%m-%d'),
                   datetime.datetime.strptime("2017-10-20", '%Y-%m-%d'), "")
        ])

    def testUpdateBook(self):
        with self.assertRaises(InvalidIdException):
            self.bookController.updateBook(20, "book2", "author3", "desc4")

        self.bookController.updateBook(1, "Book1", "Author1", "Description1")
        self.assertEqual(self.bookList.get(1),
                         Book(1, "Book1", "Author1", "Description1"))

    def testUpdateClients(self):
        with self.assertRaises(InvalidIdException):
            self.clientController.updateClient(20, "Name1")
        self.clientController.updateClient(1, "Name1")
        self.assertEqual(self.clientList.get(1), Client(1, "Name1"))

    def testReturnBook(self):

        with self.assertRaises(Exception):
            self.rentalController.returnBook(100)
        self.rentalController.returnBook(0)
        self.assertEqual(
            self.rentalList.get(0),
            Rental(0, 0, 1, datetime.datetime.strptime("2017-10-10",
                                                       '%Y-%m-%d'),
                   datetime.datetime.strptime("2017-10-20", '%Y-%m-%d'),
                   datetime.datetime.now().date()))

    def testGetBooks(self):

        self.assertEqual(self.bookController.getBooks(), [
            Book(0, "book0", "desc0", "author0"),
            Book(1, "book1", "desc1", "author1"),
            Book(2, "book2", "desc2", "author2")
        ])

    def testGetClients(self):

        self.assertEqual(
            self.clientController.getClients(),
            [Client(0, "name0"),
             Client(1, "name1"),
             Client(2, "name2")])

    def testRentalVaidation(self):

        self.assertEqual(self.rentalController.rentalValidation(2, 1), True)

        with self.assertRaises(InvalidIdException):
            self.rentalController.rentalValidation(0, 7)
            self.rentalController.rentalValidation(13, 0)

    def testMostRentedBooks(self):

        newList = self.rentalController.mostRentedBooks()
        self.assertEqual(newList, [
            BookRental(0, "book0", 1),
            BookRental(1, "book1", 1),
            BookRental(2, "book2", 0)
        ])

    def testMostActiveClient(self):

        newList = self.rentalController.mostActiveClients()
        self.assertEqual(newList, [ClientActivity("name1", 20)])

    def testMostRentedAuthor(self):

        newList = self.rentalController.mostRentedAuthors()
        self.assertEqual(newList, [
            AuthorRental(0, "author0", 1),
            AuthorRental(1, "author1", 1),
            AuthorRental(2, "author2", 0)
        ])

    def testSearchBooks(self):

        searchList = self.bookController.searchBooks("book")
        self.assertEqual(searchList, [
            Book(0, "book0", "desc0", "author0"),
            Book(1, "book1", "desc1", "author1"),
            Book(2, "book2", "desc2", "author2")
        ])
        self.bookList.add(Book(3, "book27", "desc3", "author4"))
        searchList1 = self.bookController.searchBooks("2")
        self.assertEqual(searchList1, [
            Book(2, "book2", "desc2", "author2"),
            Book(3, "book27", "desc3", "author4")
        ])

    def testSearchClients(self):
        searchList = self.clientController.searchClients("cl")
        self.assertEqual(searchList, [])
        searchList1 = self.clientController.searchClients("na")
        self.assertEqual(
            searchList1,
            [Client(0, "name0"),
             Client(1, "name1"),
             Client(2, "name2")])