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)
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)