コード例 #1
0
    def test_dump_msg_entities(self):
        """Show that entities are correctly parsed and stored"""
        message = types.Message(id=1,
                                to_id=types.PeerUser(321),
                                date=datetime.now(),
                                message='No entities')
        dumper = Dumper(self.dumper_config)
        fmt = BaseFormatter(dumper.conn)

        # Test with no entities
        dumper.dump_message(message, 123, None, None)
        dumper.commit()
        assert not next(fmt.get_messages_from_context(123,
                                                      order='DESC')).formatting

        # Test with many entities
        text, entities = markdown.parse(
            'Testing message with __italic__, **bold**, inline '
            '[links](https://example.com) and [mentions](@hi), '
            'as well as `code` and ``pre`` blocks.')
        entities[3] = types.MessageEntityMentionName(entities[3].offset,
                                                     entities[3].length, 123)
        message.id = 2
        message.date -= timedelta(days=1)
        message.message = text
        message.entities = entities
        dumper.dump_message(message, 123, None, None)
        dumper.commit()
        msg = next(fmt.get_messages_from_context(123, order='ASC'))
        assert utils.decode_msg_entities(msg.formatting) == message.entities
コード例 #2
0
ファイル: tests.py プロジェクト: schemacs/telegram-export
    def test_formatter_get_messages(self):
        """
        Ensures that the BaseFormatter is able to correctly yield messages.
        """
        dumper = Dumper(self.dumper_config)
        msg = types.Message(
            id=1,
            to_id=123,
            date=datetime(year=2010, month=1, day=1),
            message='hi'
        )
        for _ in range(365):
            dumper.dump_message(msg, 123, forward_id=None, media_id=None)
            msg.id += 1
            msg.date += timedelta(days=1)
            msg.to_id = 300 - msg.to_id  # Flip between two IDs
        dumper.commit()
        fmt = BaseFormatter(dumper.conn)

        # Assert all messages are returned
        assert len(list(fmt.get_messages_from_context(123))) == 365

        # Assert only messages after a date are returned
        min_date = datetime(year=2010, month=4, day=1)
        assert all(m.date >= min_date for m in fmt.get_messages_from_context(
            123, start_date=min_date
        ))

        # Assert only messages before a date are returned
        max_date = datetime(year=2010, month=4, day=1)
        assert all(m.date <= max_date for m in fmt.get_messages_from_context(
            123, end_date=max_date
        ))

        # Assert messages are returned in a range
        assert all(min_date <= m.date <= max_date for m in
                   fmt.get_messages_from_context(
                       123, start_date=min_date, end_date=max_date
                   ))

        # Assert messages are returned in the correct order
        desc = list(fmt.get_messages_from_context(123, order='DESC'))
        assert all(desc[i - 1] > desc[i] for i in range(1, len(desc)))

        asc = list(fmt.get_messages_from_context(123, order='ASC'))
        assert all(asc[i - 1] < asc[i] for i in range(1, len(asc)))
コード例 #3
0
    def test_dump_methods(self):
        """Test dumper.dump_* works"""
        dumper = Dumper(self.dumper_config)
        message = types.Message(id=777,
                                to_id=types.PeerUser(123),
                                date=datetime.now(),
                                message='Hello',
                                out=True,
                                via_bot_id=1000,
                                fwd_from=types.MessageFwdHeader(
                                    date=datetime.now() - timedelta(days=1),
                                    from_id=321))
        fwd_id = dumper.dump_forward(message.fwd_from)
        dumper.dump_message(message, 123, forward_id=fwd_id, media_id=None)

        message = types.Message(id=778,
                                to_id=types.PeerUser(321),
                                date=datetime.now(),
                                message='Hello',
                                out=False,
                                via_bot_id=1000,
                                media=types.MessageMediaPhoto(
                                    caption='Hi',
                                    ttl_seconds=40,
                                    photo=types.Photo(
                                        id=2357,
                                        access_hash=-123456789,
                                        date=datetime.now(),
                                        sizes=[
                                            types.PhotoSize(
                                                type='X',
                                                w=100,
                                                h=100,
                                                size=100 * 100,
                                                location=types.FileLocation(
                                                    dc_id=2,
                                                    volume_id=5,
                                                    local_id=7532,
                                                    secret=987654321))
                                        ])))
        loc = dumper.dump_media(message.media)
        dumper.dump_message(message, 123, forward_id=None, media_id=loc)
        dumper.dump_message_service(
            context_id=123,
            media_id=loc,
            message=types.MessageService(
                id=779,
                to_id=123,
                date=datetime.now(),
                action=types.MessageActionScreenshotTaken()))

        me = types.User(id=123,
                        is_self=True,
                        access_hash=13515,
                        first_name='Me',
                        username='******',
                        phone='1234567')
        dumper.dump_user(photo_id=None,
                         user_full=types.UserFull(
                             user=me,
                             link=types.contacts.Link(
                                 my_link=types.ContactLinkContact(),
                                 foreign_link=types.ContactLinkContact(),
                                 user=me),
                             notify_settings=types.PeerNotifySettings(
                                 0, 'beep'),
                             common_chats_count=3))
        dumper.dump_chat(photo_id=None,
                         chat=types.Chat(id=7264,
                                         title='Chat',
                                         photo=types.ChatPhotoEmpty(),
                                         participants_count=5,
                                         date=datetime.now() -
                                         timedelta(days=10),
                                         version=1))

        channel = types.Channel(id=8247,
                                title='Channel',
                                photo=types.ChatPhotoEmpty(),
                                username='******',
                                participants_count=17,
                                date=datetime.now() - timedelta(days=5),
                                version=7)
        channel_full = types.ChannelFull(
            id=8247,
            about='Just a Channel',
            read_inbox_max_id=1051,
            read_outbox_max_id=8744,
            unread_count=1568,
            chat_photo=types.PhotoEmpty(id=176489),
            notify_settings=types.PeerNotifySettingsEmpty(),
            exported_invite=types.ChatInviteEmpty(),
            bot_info=[])
        dumper.dump_supergroup(channel_full, channel, photo_id=None)
        dumper.dump_channel(channel_full, channel, photo_id=None)