class TestUserRepository(unittest.TestCase): def setUp(self): self.i_o = test_io() self.repository = UserRepository(self.i_o) self.test_user1 = User("Paavo", "Pesusieni666_", 1) self.test_user2 = User("MacGyver", "_käpyKranaatti13", 2) self.repository.empty_users_table() def test_add_user(self): self.repository.add_user(self.test_user1.name, self.test_user1.password) user = self.repository.find_all_users()[0] self.assertEqual(user.name, self.test_user1.name) self.assertEqual(user.id, self.test_user1.id) def test_find_all_users(self): self.repository.add_user(self.test_user1.name, self.test_user1.password) self.repository.add_user(self.test_user2.name, self.test_user2.password) users = self.repository.find_all_users() self.assertEqual(len(users), 2) self.assertEqual(users[0].name, self.test_user1.name) self.assertIsInstance(users[0], User) self.assertEqual(users[1].password, self.test_user2.password) self.assertEqual(users[1].id, self.test_user2.id) def test_find_by_username(self): self.repository.add_user(self.test_user1.name, self.test_user1.password) user = self.repository.find_by_username(self.test_user1.name) self.assertEqual(user.name, self.test_user1.name) self.assertEqual(user.password, self.test_user1.password) self.assertEqual(user.id, self.test_user1.id) self.assertIsNone(self.repository.find_by_username('Voldemort')) def test_empty_users_table(self): self.repository.add_user(self.test_user1.name, self.test_user1.password) self.assertEqual(len(self.repository.find_all_users()), 1) self.repository.empty_users_table() self.assertEqual(len(self.repository.find_all_users()), 0)
class AppLibrary: def __init__(self): self._io = StubIO() self._user_repository = UserRepository() self._user_service = UserService(self._user_repository) self._app = App(self._user_service, self._io) def input(self, value): self._io.add_input(value) def output_should_contain(self, value): outputs = self._io.outputs if value not in outputs: raise AssertionError(f'Output "{value}" is not in {str(outputs)}') def run_application(self): self._app.run() def create_user(self, username, password): try: self._user_service.create_user(username, password) except Exception as err: self._io.outputs.append(str(err)) def user_should_exist(self, username): if not self._user_repository.find_by_username(username): raise AssertionError(f"User {username} does not exist")