def test_one_label(self, conversation):
        label = "label"

        sticker = telegram_factories.StickerFactory()
        conversation.sticker = sticker

        user = telegram_factories.UserFactory()
        conversation.user = user

        update = telegram_factories.MessageUpdateFactory(
            message__text=label,
            message__from_user=user)

        with mock.patch(*get_or_create(conversation)):
            run_handler(stickertaggerbot.handlers.labels.create_labels_handler,
                        update)

        assert message.Message.set_content.call_count == 2
        assert message.Message.send.call_count == 2

        first_call_contents, second_call_contents = \
            message.Message.set_content.call_args_list
        assert first_call_contents[0][1] == sticker
        assert second_call_contents[0][1] == \
               message.Text.Instruction.CONFIRM.value + label
    def test_empty_labels(self, conversation):
        conversation.labels = None
        update = telegram_factories.MessageUpdateFactory(message__text="")

        with mock.patch(*get_or_create(conversation)):
            run_handler(stickertaggerbot.handlers.labels.create_labels_handler,
                        update)

        assert_sent_message_once(message.Text.Error.LABEL_MISSING)
    def test_no_conversation(self):
        update = telegram_factories.MessageUpdateFactory(
            message__text="message")

        with mock.patch(*get_or_create(None)):
            run_handler(stickertaggerbot.handlers.labels.create_labels_handler,
                        update)

        assert_sent_message_once(message.Text.Error.NOT_STARTED)
    def test_interrupted_conversation(self, conversation):
        conversation.change_state = mock.Mock(
            autospec=True, side_effect=ValueError(States.IDLE))
        update = telegram_factories.MessageUpdateFactory(
            message__from_user=conversation.user)

        with mock.patch(*get_or_create(conversation)):
            run_handler(stickertaggerbot.handlers.labels.create_labels_handler,
                        update)

        assert_sent_message_once(message.Text.Error.RESTART)
Esempio n. 5
0
    def test_label(self):
        update = telegram_factories.MessageUpdateFactory(
            message__text=" ".join(self.labels),
            message__from_user=self.user,
            message__chat=self.chat)
        response = post(update)
        time.sleep(2)

        conversation = conversations.all[self.user.id]
        assert conversation.labels == self.labels

        app_for_testing.bot.send_sticker.assert_called_once_with(
            self.chat.id, self.sticker)