Commit graph

205 commits

Author SHA1 Message Date
Steve Howell cb849611c8 bot tests: Add sender_full_name to verify_dialog. 2017-12-08 08:51:57 -08:00
fredfishgames 4c4a60d90f Remove self: Any mypy annotations 2017-12-08 08:46:21 -08:00
Steve Howell 5f70e17259 bots: Simplify test_github_details.py. 2017-12-07 20:15:33 -08:00
Steve Howell f421e90a64 bots: Simplify test_encrpyt.py. 2017-12-07 20:15:33 -08:00
Steve Howell 7285affbc4 bots: Simplify test_define.py. 2017-12-07 20:15:33 -08:00
Steve Howell 2c42b0e42e minor: Clean up test_converter.py.
This removes some imports and uses StubBotTestCase
and verify_dialog.
2017-12-07 20:15:33 -08:00
Steve Howell 6f0d5239e8 test_googlesearch: Remove self: Any annotations.
We can avoid `Any` annotations for `self`, since it is more
noise than signal and since the type of self is already
implicit from how Python classes work.
2017-12-07 19:40:32 -08:00
Steve Howell 011095018b Simplify TestGoogleSearchBot.
We use verify_reply() for all the tests and de-duplicate
help_message by just having a single test validate both
the '' and 'help' inputs.
2017-12-07 19:40:32 -08:00
Steve Howell c01fbe02e1 Remove unneeded imports in test_googlesearch.py. 2017-12-07 19:40:32 -08:00
fredfishgames 9d5fbc2b5b mypy: Add annotations for help. 2017-12-07 19:12:39 -08:00
fredfishgames 40c09b4b16 mypy: Add annotations for googlesearch. 2017-12-07 19:12:39 -08:00
fredfishgames b7dbe7af41 mypy: Add annotations for github_detail. 2017-12-07 19:12:39 -08:00
fredfishgames 1b16b54780 interactive bots: Create googletranslate bot. 2017-12-07 06:18:01 -08:00
Steve Howell 7a963916f2 bot tests: Use StubBotTestCase in test_giphy.py.
For three of the tests we use the simpler verify_reply()
API.  For the 403 test, we don't need to rely on setUp
any more to simulate everything for us, and we do more
surgical patching.
2017-12-06 20:29:36 -08:00
Steve Howell 87662da139 bot tests: Add StubBotTestCase.mock_config_info().
We now auto-initialize bots in verify_reply() and have
a mock_config_info() helper that can override the new
StubBotHandler.get_config_info().
2017-12-06 20:29:36 -08:00
Steve Howell be9570c9c4 minor: Remove unused imports in test_giphy.py. 2017-12-06 20:29:36 -08:00
Jerry Zhang 77e9be0783 bots/giphy: Use Python 3 type mypy annotations. 2017-12-07 00:22:57 -03:30
Jerry Zhang 95b8ea4751 bots/followup: Use Python 3 type mypy annotations. 2017-12-07 00:22:57 -03:30
Robert Hönig 1102057e35 zulip_bots: Make typing import work in Python 3.5.
See https://github.com/python/mypy/issues/1838.
2017-12-06 12:49:46 +01:00
Skunk 29e22c2c0a bots: Create Link Shortener Bot.
Create Link Shortener Bot using the goo.gl Link Shortening API.

Link Shortener Bot can be mentioned in a conversation, and it will
respond with shortened, goo.gl links for every URL in the message.

For example,

 > @link_shortener_bot @johnsmith Check out this file:
 > https://github.com/zulip/python-zulip-api/blob/master/zulip_bots/

and Link Shortener Bot would respond

 > https://github.com/zulip/python-zulip-api/blob/master/zulip_bots/:
 > https://goo.gl/Mt5z3c

In order to use Link Shortener Bot, an API key for goo.gl must be set
in `link_shortener.conf` in the `link_shortener` folder.
2017-12-05 06:08:30 -08:00
Rohitt Vashishtha 8cd310493a mypy: Annotate helloworld bot. 2017-12-04 07:27:20 -08:00
fredfishgames b157b817ae interactive bots: Improve googlesearch bot. 2017-12-03 14:03:47 -08:00
Skunk c2c79cf989 tests: Refactor mock_http_conversation with deduplicating.
Move `get_response` inside of `mock_http_conversation`, as it is not
used anywhere else. Also create `assert_called_with_fields`.
`assert_called_with_fields` calls the `assert_called_with` method of a
mock object by using an HTTP request and a list of fields to look for.
2017-12-03 10:26:42 -08:00
Skunk bd0462f7b5 tests: Extend mock_http_conversation to support POST requests. 2017-12-03 10:26:42 -08:00
Steve Howell fab9d46f93 Simplify test_wikipedia.py.
We now use StubBotTestCase.verify_reply().
2017-12-01 13:42:59 -08:00
Steve Howell 16e50e991b bot tests: Add StubBotTestCase.verify_reply(). 2017-12-01 13:42:59 -08:00
Steve Howell db08586df6 Promote mock_http_conversations to its superclass. 2017-12-01 13:42:59 -08:00
Steve Howell 3f79136dd7 bot tests: Introduce transcript in StubBotHandler.
This sets us up to validate more aspects of the conversation,
and it also introduces the more rigorously checked
`unique_response` helper.

(This also fixes a minor copy/paste error from a prior commit
that was harmless.)
2017-12-01 13:42:59 -08:00
Steve Howell c02e141f7f bot tests: Use StubBotTestCase for helloworld bot. 2017-12-01 07:00:20 -08:00
Steve Howell 4ede1a5564 bot tests: Use StubBotTestCase for help bot. 2017-12-01 07:00:20 -08:00
Steve Howell 6087cf95e2 bot tests: Use StubBotTestCase in tictactoe.
Note that we now only have one conversation, since the case
of sending to streams has the same mechanics as sending PMs.

We'll eventually want a separate test to drive out differences
in the actual mechanics of the reply.
2017-12-01 07:00:20 -08:00
Steve Howell 77dbe92ad8 minor: Remove some dead code in BotTestCaseBase. 2017-12-01 07:00:20 -08:00
Steve Howell c0ceb9857f Rewrite incrementor bot tests.
Using StubBotHandler makes it fairly easy to verify the key
feature of the incrementor bot, which is that it updates
messages sequentially.
2017-12-01 07:00:20 -08:00
Steve Howell fc251460fa bot tests: Eliminate BotTestCaseBase.
We now just put `test_bot_usage` in StubBotTestCase and have
BotTestCase inherit from that.
2017-12-01 07:00:20 -08:00
Steve Howell 205f7c16c7 Add StubBotTestCase and StubBotHandler.
We will start to use these for some of our bot test code.
2017-12-01 07:00:20 -08:00
Steve Howell fe662ed145 bot tests: Split up mock_http_conversation().
This method had two pretty easy-to-separate concerns:

    * find the fixture data using our directory conventions
    * use the fixture data to simulate a real HTTP request

Part of the goal here is to make the extracted functions a
bit easier to use in other TestCase-based classes without
needing to subclass from BotTestCaseBase, which is kind of
complex with its setUp/tearDown.
2017-12-01 07:00:20 -08:00
Steve Howell 0a477b0736 Extract get_bot_message_handler(). 2017-12-01 07:00:20 -08:00
neiljp (Neil Pilgrim) 39601d190c bot lib tests: Add test_send_reply. 2017-11-29 15:56:30 -08:00
Steve Howell efeac92d42 Add tools/test-lib.
This starts to add direct test coverage on
zulip_bots/zulip_bots/lib.py.

It is not yet integrated into tools/test-main.
2017-11-29 13:45:51 -08:00
neiljp (Neil Pilgrim) 3e135b8e1e bot testing: Enable testing of multiple responses from single messages. 2017-11-29 10:05:46 -08:00
Abhijeet Kaur 91c4ff668d bots: Clean up terminal.py for running bots directly.
Make terminal.py exit gracefully with a message.
Modify output bot reply for better understanding in multi-line
output.
2017-11-29 10:05:06 -08:00
Eeshan Garg c3ab265d3e packaging: Upgrade to release 0.3.9. 2017-11-29 01:23:12 -03:30
Robert Hönig 2cb43256e0 zulip_bots: Get 100% test coverage for giphy bot. 2017-11-28 15:42:22 -08:00
Robert Hönig 93edededdd zulip_bots: Use real Response object for mock_http_conversation(). 2017-11-28 15:42:22 -08:00
Robert Hönig 41d8ffc20e zulip_bots: Fix yoda bot response parsing. 2017-11-28 15:42:22 -08:00
Robert Hönig d6a4c02ba5 Rename bot storage endpoint from state to storage. 2017-11-28 20:41:59 +01:00
Steve Howell 80e4ef9f72 Create terminal.py to run bots in the terminal.
This program replaces zulip_bot_output.py, which had
gotten a little out of date.

It should be able to simulate a terminal conversation for
all of our bots, including those that use "advanced" features:

    third party config files: tested with giphy
    message updates: tested with incrementor
    storage: tested with virtual_fs and others
2017-11-28 10:52:13 -08:00
Steve Howell 536ba1843a Add a command line option to run.py for bot config files.
Before this change, we were looking for config files in
default locations in source control, which is not a good
place to look for them.  Now `run.py` and friends have a
command line argument where users can specify the config
files.

Note that the change to server.py is only a partial fix
to make it so that bots that don't use third party config
files won't crash.  That program needs an overhaul, anyway.
2017-11-28 10:52:13 -08:00
Steve Howell 57c90ddca0 refactor: Extract display_config_file_errors().
This will be useful for handling errors with third party
config files.
2017-11-28 10:52:13 -08:00
Steve Howell 8a15452525 bots: Require bots_details in ExternalBotHandler.
This parameter was defaulting to a dictionary, which is
a classic Python pitfall.
2017-11-28 10:52:13 -08:00