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)
Beispiel #2
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")