Beispiel #1
0
 def setUp(self):
     self.CuT = Library_DB()
     self.CuT.close_db()
     self.CuT.db = Mock()
     self.patron1 = Patron("Reggie", "Miller", 49, "987654321")
     self.patron2 = Patron("Todd", "Dodd", 20, "12345")
     self.patron1.add_borrowed_book("Old Man and the Sea")
Beispiel #2
0
class TestDB(unittest.TestCase):
    def setUp(self):
        self.CuT = Library_DB()
        self.CuT.close_db()
        self.CuT.db = Mock()
        self.patron1 = Patron("Reggie", "Miller", 49, "987654321")
        self.patron2 = Patron("Todd", "Dodd", 20, "12345")
        self.patron1.add_borrowed_book("Old Man and the Sea")

    def test_insert_patron_not_Patron(self):
        self.assertIsNone(self.CuT.insert_patron(None))

    def test_insert_patron_already_inserted(self):
        self.CuT.retrieve_patron = Mock()
        self.CuT.retrieve_patron.return_value = self.patron2
        self.assertIsNone(self.CuT.insert_patron(self.patron2))

    def test_insert_patron_success(self):
        self.CuT.retrieve_patron = Mock()
        self.CuT.retrieve_patron.return_value = None
        self.assertIsNotNone(self.CuT.insert_patron(self.patron2))

    def test_get_patron_count(self):
        self.CuT.db.all.return_value = []
        self.assertEqual(0, self.CuT.get_patron_count())

    def test_get_all_patrons(self):
        self.CuT.db.all.return_value = ["test", "filler"]
        self.assertEqual(["test", "filler"], self.CuT.get_all_patrons())

    def test_update_patron_not_Patron(self):
        self.assertIsNone(self.CuT.update_patron(None))

    def test_update_patron_success(self):
        self.patron2.add_borrowed_book("test")
        self.CuT.update_patron(self.patron2)
        self.CuT.db.update.assert_called_once()

    def test_retrieve_patron_not_found(self):
        self.CuT.db.search.return_value = None
        self.assertIsNone(self.CuT.retrieve_patron(None))

    def test_retrieve_patron_success(self):
        self.CuT.db.search.return_value = [{
            "fname": "Reggie",
            "lname": "Miller",
            "age": 49,
            "memberID": "987654321",
            "borrowed_books": []
        }]
        patron = self.CuT.retrieve_patron(self.patron1)
        self.assertEqual(patron.memberID, self.patron1.memberID)

    def test_close_db(self):
        self.CuT.close_db()
        self.assertTrue(self.CuT.db.close.called)

    def test_convert_patron_to_db_format(self):
        self.assertIsNotNone(self.CuT.convert_patron_to_db_format(
            self.patron1))
Beispiel #3
0
 def test_constructor_numberName(self):
     try:
         Patron("yupp", "5678", 49, "yert4321")
     except InvalidNameException:
         self.assertTrue(True)
         return
     self.assertTrue(False, "Expected InvalidNumberException")
Beispiel #4
0
 def setUp(self, mockBooks_API, mockLibrary_DB):
     self.library = Library()
     self.patron = Patron("bob", "bobson", 41, 1)
     self.library.api = mockBooks_API
     self.library.db = mockLibrary_DB
     mockBooks_API.get_ebooks.return_value = [{
         'title': 'The Count of Monte Cristo',
         "ebook_count": 1
     }, {
         'title': 'A Tale of Two Cities',
         "ebook_count": 1
     }, {
         'title': '1984',
         "ebook_count": 1
     }, {
         'title': 'Slaughterhouse 5',
         "ebook_count": 1
     }, {
         'title': 'Breakfast of Champions',
         "ebook_count": 1
     }]
     mockBooks_API.books_by_author.return_value = [
         'Slaughterhouse 5', 'Breakfast of Champions'
     ]
     mockBooks_API.get_book_info.return_value = [{
         'title': 'The Count of Monte Cristo',
         "ebook_count": 1,
         'publisher': 'Penguin',
         'publish_year': '1844',
         'language': "french"
     }]
     mockLibrary_DB.patrons = [self.patron]
     mockLibrary_DB.update_patron = self.mock_update_patron
     mockLibrary_DB.insert_patron.return_value = 1
     mockLibrary_DB.retrieve_patron = self.mock_retrieve_patron
Beispiel #5
0
 def retrieve_patron(self, memberID):
     query = Query()
     # assuming no two people in the db have the same memberID
     results = self.db.search(query.memberID == memberID)
     if results:
         return Patron(results[0]['fname'], results[0]['lname'],
                       results[0]['age'], results[0]['memberID'])
     return None
Beispiel #6
0
 def register_patron(self, fname, lname, age, memberID):
     """Registers a Patron with the library and adds them to the database.
     
     :param fname: the Patron's first name
     :param lname: the Patron's last name
     :param age: the Patron's age
     :param memberID: the ID of the Patron
     :returns: None if the Patron is already in the database, else their ID
     """
     patron = Patron(fname, lname, age, memberID)
     return self.db.insert_patron(patron)
Beispiel #7
0
    def test_patron_is_not_registered_in_db(self):

        # Assume
        self.CuT.db = Mock()
        self.CuT.db.insert_patron.return_value = 1
        self.CuT.db.retrieve_patron.return_value = False
        patron = Patron(self.first_name, self.last_name, self.age,
                        self.member_id)
        patron.get_memberID = Mock(return_value=1)

        # Action
        self.CuT.register_patron(self.first_name, self.last_name, self.age,
                                 self.member_id)
        is_patron_registered = self.CuT.is_patron_registered(patron)
        # Removes the instance of the db.json created
        if path.exists('db.json'):
            os.remove('db.json')

        # Assert
        self.assertFalse(is_patron_registered)
 def retrieve_patron(self, memberID):
     """Gets a Patron from the database.
     
     :param memberID: the ID for the Patron to retrieve
     :returns: the Patron with the given ID, or None
     """
     query = Query()
     # assuming no two people in the db have the same memberID
     results = self.db.search(query.memberID == memberID)
     if results:
         return Patron(results[0]['fname'], results[0]['lname'],
                       results[0]['age'], results[0]['memberID'])
     return None
Beispiel #9
0
 def test_get_books(self):
     patron = Patron("first", "last", 23, "98765432")
     books = patron.get_borrowed_books()
     self.assertFalse(books, "Expected empty list")
 def test_ne(self):
     patron1 = self.get_patron()
     patron2 = Patron('Stephen', 'Hook', 23, 2)
     self.assertTrue(patron1.__ne__(patron2))
 def register_patron(self, fname, lname, age, memberID):
     patron = Patron(fname, lname, age, memberID)
     return self.db.insert_patron(patron)
Beispiel #12
0
 def test_ne(self):
     patron1 = Patron("burst", "ghast", 33, "23456789")
     patron2 = Patron("first", "last", 23, "98765432")
     self.assertTrue(patron1 != patron2)
Beispiel #13
0
 def test_constructor(self):
     Patron("mister", "twister", 49, "yert4321")
     # constructor executed without error
     self.assertTrue(True)
Beispiel #14
0
 def test_return_book(self):
     book = "Lord of the Flies"
     patron = Patron("first", "last", 23, "98765432")
     patron.add_borrowed_book(book)
     patron.return_borrowed_book(book)
     self.assertEqual(len(patron.get_borrowed_books()), 0)
Beispiel #15
0
 def test_eq(self):
     patron1 = Patron("first", "last", 23, "98765432")
     patron2 = Patron("first", "last", 23, "98765432")
     self.assertTrue(patron1 == patron2)
Beispiel #16
0
 def test_is_patron_registered(self):
     library = self.library
     patron = self.patron
     p2 = Patron("bob", "bobson", 41, 2)
     self.assertTrue(library.is_patron_registered(patron))
     self.assertFalse(library.is_patron_registered(p2))
Beispiel #17
0
 def test_add_new_book(self):
     book = "Lord of the Flies"
     patron = Patron("first", "last", 23, "98765432")
     patron.add_borrowed_book(book)
     self.assertEqual(patron.get_borrowed_books()[0],
                      "Lord of the Flies".lower())
Beispiel #18
0
 def test_get_lname(self):
     lname = "twister"
     patron = Patron("mister", lname, 49, "yert4321")
     self.assertEqual(patron.get_lname(), "twister")
Beispiel #19
0
 def test_get_fname(self):
     fname = "mister"
     patron = Patron(fname, "twister", 49, "yert4321")
     self.assertEqual(patron.get_fname(), "mister")
Beispiel #20
0
 def test_get_age(self):
     age = 49
     patron = Patron("mister", "twister", age, "yert4321")
     self.assertEqual(patron.get_age(), 49)
Beispiel #21
0
 def test_get_memberID(self):
     ID = "yert4321"
     patron = Patron("mister", "twister", 49, ID)
     self.assertEqual(patron.get_memberID(), "yert4321")
 def get_patron():
     return Patron("Stephen", "Cook", 22, 1)