Exemplo n.º 1
0
    def test_handle(self, bot, test_db, tguser, updater, update, gratitude_states):
        """Test the handle that collects records from the user."""
        with test_database(test_db, [User, Record, Job], fail_silently=True):
            user, created = User.tg_get_or_create(tguser)
            user.active_coach = Gratitude.NAME
            user.state = gratitude_states[0]

            if user.state == Gratitude.AWAITING_REASONS:
                # If no gratitude exists, no reaction can be recorded
                if len(gratitude_states[1]) == 0:
                    return

                # Last gratitude must always miss the reaction in 2nd state
                gratitude_states[1][-1].reaction = None

            with test_db.transaction():
                for g in gratitude_states[1]:
                    g.save()
                user.save()

            g = Gratitude(bot, test_db, tguser, updater.job_queue)
            g.handle(update)

            # Reload from disk
            g = Gratitude(bot, test_db, tguser, updater.job_queue)
            user = User.get(User.id == g.user.id)

            if user.state == Gratitude.AWAITING_GRATITUDE:
                if len(gratitude_states[1]) < 3:
                    assert len(g.collector) == len(gratitude_states[1]) + 1
Exemplo n.º 2
0
    def test_handle(self, bot, test_db, tguser, updater, update,
                    gratitude_states):
        """Test the handle that collects records from the user."""
        with test_database(test_db, [User, Record, Job], fail_silently=True):
            user, created = User.tg_get_or_create(tguser)
            user.active_coach = Gratitude.NAME
            user.state = gratitude_states[0]

            if user.state == Gratitude.AWAITING_REASONS:
                # If no gratitude exists, no reaction can be recorded
                if len(gratitude_states[1]) == 0:
                    return

                # Last gratitude must always miss the reaction in 2nd state
                gratitude_states[1][-1].reaction = None

            with test_db.transaction():
                for g in gratitude_states[1]:
                    g.save()
                user.save()

            g = Gratitude(bot, test_db, tguser, updater.job_queue)
            g.handle(update)

            # Reload from disk
            g = Gratitude(bot, test_db, tguser, updater.job_queue)
            user = User.get(User.id == g.user.id)

            if user.state == Gratitude.AWAITING_GRATITUDE:
                if len(gratitude_states[1]) < 3:
                    assert len(g.collector) == len(gratitude_states[1]) + 1
Exemplo n.º 3
0
    def test_get_or_create(self, test_db, tguser):
        """Test get_or_create shortcut."""
        with test_database(test_db, [User], fail_silently=True):
            user, created = User.tg_get_or_create(tguser)
            user.save()

            assert isinstance(user, User)

            user1 = User.get(User.id == user.id)
            assert user1 == user
Exemplo n.º 4
0
    def test_get_or_create(self, test_db, tguser):
        """Test get_or_create shortcut."""
        with test_database(test_db, [User], fail_silently=True):
            user, created = User.tg_get_or_create(tguser)
            user.save()

            assert isinstance(user, User)

            user1 = User.get(User.id == user.id)
            assert user1 == user
Exemplo n.º 5
0
def select(db, tguser):
    """Return active coach for a telegram user."""
    with db.transaction():
        user, created = User.tg_get_or_create(tguser)
        if created:
            logger.info("Created new user {}".format(user))
        return user.active_coach
Exemplo n.º 6
0
def select(db, tguser):
    """Return active coach for a telegram user."""
    with db.transaction():
        user, created = User.tg_get_or_create(tguser)
        if created:
            logger.info("Created new user {}".format(user))
        return user.active_coach
Exemplo n.º 7
0
    def test_handle(self, bot, setup_update, test_db, updater):
        """Test setup handler."""
        with test_database(test_db, [User], fail_silently=True):
            with db.transaction():
                user, created = User.tg_get_or_create(
                    setup_update.message.from_user)
                user.state = setup_update.states[0]
                user.save()

            coach = Setup(bot, test_db, setup_update.message.from_user, updater.job_queue)
            messages = coach.handle(setup_update)

            user, created = User.tg_get_or_create(
                setup_update.message.from_user)

            assert len(messages) > 0
            assert user.state == setup_update.states[1]
Exemplo n.º 8
0
    def test_handle(self, bot, setup_update, test_db, updater):
        """Test setup handler."""
        with test_database(test_db, [User], fail_silently=True):
            with db.transaction():
                user, created = User.tg_get_or_create(
                    setup_update.message.from_user)
                user.state = setup_update.states[0]
                user.save()

            coach = Setup(bot, test_db, setup_update.message.from_user,
                          updater.job_queue)
            messages = coach.handle(setup_update)

            user, created = User.tg_get_or_create(
                setup_update.message.from_user)

            assert len(messages) > 0
            assert user.state == setup_update.states[1]
Exemplo n.º 9
0
    def test_handle_inline(self, bot, coach_query, test_db, updater):
        """Test setup handler."""
        query = coach_query.callback_query
        with test_database(test_db, [User], fail_silently=True):
            with db.transaction():
                user, created = User.get_or_create(
                    telegram_id=query.message.from_user.id,
                    name='Pepe',
                    chat_id=query.message.from_user.id)
                user.state = coach_query.states[0]
                user.save()

            coach = Setup(bot, test_db, query.message.from_user, updater.job_queue)
            messages = coach.handle(coach_query)

            user = User.get(User.telegram_id == user.telegram_id)

            assert len(messages) > 0
            assert user.state == coach_query.states[1]
Exemplo n.º 10
0
    def __init__(self, bot, db, tguser, job_queue):
        """Init coach object."""
        self.bot = bot
        self.db = db
        self.tguser = tguser
        self.job_queue = job_queue

        with db.transaction():
            user, created = User.tg_get_or_create(tguser)
            self.user = user
Exemplo n.º 11
0
    def test_gen(self, test_db):
        """Test creating users and retrieving them from the db."""
        with test_database(test_db, [User], fail_silently=True):
            users = create_users(test_db)
            for u in users:
                u.save()

            user = User.get(User.id == users[0].id)
            assert isinstance(user, User)
            assert user == users[0]
Exemplo n.º 12
0
    def __init__(self, bot, db, tguser, job_queue):
        """Init coach object."""
        self.bot = bot
        self.db = db
        self.tguser = tguser
        self.job_queue = job_queue

        with db.transaction():
            user, created = User.tg_get_or_create(tguser)
            self.user = user
Exemplo n.º 13
0
    def test_gen(self, test_db):
        """Test creating users and retrieving them from the db."""
        with test_database(test_db, [User], fail_silently=True):
            users = create_users(test_db)
            for u in users:
                u.save()

            user = User.get(User.id == users[0].id)
            assert isinstance(user, User)
            assert user == users[0]
Exemplo n.º 14
0
def create_users(db, num=10):
    """Utility func for creating users."""
    with test_database(db, [User, Record, Job], fail_silently=True):
        rv = []
        for i in range(num):
            rv.append(User.create_or_get(
                telegram_id=4325497 + i,
                name="User-{}".format(i),
                chat_id=4325497 + i
            )[0])
        return rv
Exemplo n.º 15
0
    def test_handle_inline(self, bot, coach_query, test_db, updater):
        """Test setup handler."""
        query = coach_query.callback_query
        with test_database(test_db, [User], fail_silently=True):
            with db.transaction():
                user, created = User.get_or_create(
                    telegram_id=query.message.from_user.id,
                    name='Pepe',
                    chat_id=query.message.from_user.id)
                user.state = coach_query.states[0]
                user.save()

            coach = Setup(bot, test_db, query.message.from_user,
                          updater.job_queue)
            messages = coach.handle(coach_query)

            user = User.get(User.telegram_id == user.telegram_id)

            assert len(messages) > 0
            assert user.state == coach_query.states[1]
Exemplo n.º 16
0
    def test_handle(self, bot, menu_update, test_db, tguser, updater):
        """Test display of main menu."""
        with test_database(test_db, [User, Record], fail_silently=True):
            with db.transaction():
                user, created = User.tg_get_or_create(tguser)
                user.state = menu_update.states[0]
                user.save()

            coach = Menu(bot, db, tguser, updater.job_queue)
            msgs = coach.handle(menu_update)

            assert len(msgs) > 0
Exemplo n.º 17
0
    def test_handle(self, bot, menu_update, test_db, tguser, updater):
        """Test display of main menu."""
        with test_database(test_db, [User, Record], fail_silently=True):
            with db.transaction():
                user, created = User.tg_get_or_create(tguser)
                user.state = menu_update.states[0]
                user.save()

            coach = Menu(bot, db, tguser, updater.job_queue)
            msgs = coach.handle(menu_update)

            assert len(msgs) > 0
Exemplo n.º 18
0
    def test_diary_entry(self, bot, test_db, tguser, updater):
        """Test diary entry from main menu."""
        diary_entry = "My secret diary."

        with test_database(test_db, [User, Record], fail_silently=True):
            with db.transaction():
                user, created = User.tg_get_or_create(tguser)
                user.state = Menu.AWAITING_DIARY_ENTRY
                user.save()

            coach = Menu(bot, db, tguser, updater.job_queue)
            msgs = coach.handle(custom_update(msg=diary_entry))

            assert len(msgs) == 1

            rec = Record.get(Record.content == diary_entry)
            assert isinstance(rec, Record)
Exemplo n.º 19
0
    def test_diary_entry(self, bot, test_db, tguser, updater):
        """Test diary entry from main menu."""
        diary_entry = "My secret diary."

        with test_database(test_db, [User, Record], fail_silently=True):
            with db.transaction():
                user, created = User.tg_get_or_create(tguser)
                user.state = Menu.AWAITING_DIARY_ENTRY
                user.save()

            coach = Menu(bot, db, tguser, updater.job_queue)
            msgs = coach.handle(custom_update(msg=diary_entry))

            assert len(msgs) == 1

            rec = Record.get(Record.content == diary_entry)
            assert isinstance(rec, Record)