class TestRepository(unittest.TestCase): def setUp(self): # setUp method will be executed before every test TestCase.setUp(self) self.repository = Repository() # add mock students to repo stud1 = Student(1, "A", 1) stud2 = Student(2, "B", 2) stud3 = Student(3, "C", 3) self.repository.add_item(stud1) self.repository.add_item(stud2) self.repository.add_item(stud3) def test_add(self): self.repository.add_item(Student(4, "D", 4)) self.assertEqual(len(self.repository.get_all()), 4) def test_remove(self): self.repository.remove_item(1) self.assertEqual(len(self.repository.get_all()), 2) # check for exception call try: self.repository.remove_item(4) except CustomException as e: self.assertEqual(e.get_msg(), "No such item") def test_update_student(self): self.repository.update_item(Student(1, "D", 2)) updated_student = self.repository.get_by_id(1) self.assertEqual(updated_student.get_name(), "D") # check exception case try: self.repository.update_item(Student(4, "D", 4)) except CustomException as e: self.assertEqual(e.get_msg(), "No item for update found") def test_get_by_id(self): stud1 = self.repository.get_by_id(1) self.assertEqual(stud1.get_name(), "A") stud2 = self.repository.get_by_id(4) self.assertIsNone(stud2)
def update(self, item): self._history.append(deepcopy(self._items)) Repository.update_item(self, item) self._history = self._history[0:self._index + 2] self._index = len(self._history) - 1 self._history.pop()