def kbbi(message): app.logger.debug('Detected kbbi command {!r}'.format(message.text)) try: if message.text.startswith('/kbbi'): _, term = message.text.split(' ', maxsplit=1) else: term = message.text except ValueError: app.logger.debug('Cannot split text {!r}'.format(message.text)) bot.reply_to(message, 'Cari apa lu?', force_reply=True) else: app.logger.debug('Extracted kbbi term {!r}'.format(term)) try: defs = lookup_kbbi_definition(term) except HTTPError: bot.reply_to(message, 'Aduh ada error nich') except ConnectionError: bot.reply_to(message, "Koneksi lagi bapuk nih :'(") else: if defs: response = '\n'.join( format_def(i, d) for i, d in enumerate(defs, start=1)) bot.reply_to(message, response, parse_mode='Markdown') else: bot.reply_to(message, 'Gak ada bray')
def test_lookup_kbbi_term_not_found(mocker): class FakeResponse: def json(self): raise ValueError def raise_for_status(self): pass mocker.patch('tululbot.utils.kbbi.requests.get', return_value=FakeResponse(), autospec=True) rv = lookup_kbbi_definition('asdf asdf') assert rv == []
def test_lookup_kbbi(mocker): class FakeResponse: def json(self): return { 'kateglo': { 'definition': [ { 'lex_class_ref': 'nomina', 'def_text': 'foo bar', 'sample': 'foo bar foo bar' }, { 'lex_class_ref': 'adjektiva', 'def_text': 'baz quux', 'sample': 'baz baz quux quux' } ] } } def raise_for_status(self): pass fake_term = 'asdf asdf' mock_get = mocker.patch('tululbot.utils.kbbi.requests.get', return_value=FakeResponse(), autospec=True) rv = lookup_kbbi_definition(fake_term) assert len(rv) == 2 assert { 'class': 'nomina', 'def_text': 'foo bar', 'sample': 'foo bar foo bar' } in rv assert { 'class': 'adjektiva', 'def_text': 'baz quux', 'sample': 'baz baz quux quux' } in rv mock_get.assert_called_once_with('http://kateglo.com/api.php', params={'format': 'json', 'phrase': fake_term})
def kbbi(message): app.logger.debug('Detected kbbi command {!r}'.format(message.text)) try: if message.text.startswith('/kbbi'): _, term = message.text.split(' ', maxsplit=1) else: term = message.text except ValueError: app.logger.debug('Cannot split text {!r}'.format(message.text)) bot.reply_to(message, 'Cari apa lu?', force_reply=True) else: app.logger.debug('Extracted kbbi term {!r}'.format(term)) try: defs = lookup_kbbi_definition(term) except HTTPError: bot.reply_to(message, 'Aduh ada error nich') except ConnectionError: bot.reply_to(message, "Koneksi lagi bapuk nih :'(") else: if defs: response = '\n'.join(format_def(i, d) for i, d in enumerate(defs, start=1)) bot.reply_to(message, response, parse_mode='Markdown') else: bot.reply_to(message, 'Gak ada bray')