aboutsummaryrefslogtreecommitdiffstats
path: root/tests (follow)
Commit message (Collapse)AuthorAgeLines
* Merge the note with the additional resources sectionGravatar Matteo Bertucci2020-01-30-1/+2
| | | Move the link to Ned Batchelder’s talk and link the note to the section
* Add additional resources to the test readmeGravatar Matteo Bertucci2020-01-30-0/+6
|
* Merge branch 'master' into unittest-mentionsGravatar Matteo Bertucci2019-12-13-18/+894
|\
| * Fixed a typo ( due to poor copy pasta and eyeballing skills )Gravatar Shirayuki Nekomata2019-12-13-1/+1
| |
| * Added tests for `until_expiration`Gravatar Shirayuki Nekomata2019-12-13-0/+45
| | | | | | | | | | | | | | Similar to `format_infraction_with_duration` ( if not outright copying it ), added 3 tests for `until_expiration`: - None `expiry`. - Custom `max_units`. - Normal use cases.
| * Merge branch 'master' into Write-unit-tests-for-`bot/utils/time.py`Gravatar scragly2019-12-12-25/+10
| |\
| | * Fix test failures for setup log messagesGravatar MarkKoz2019-12-08-24/+7
| | |
| | * Change all Bot imports to use the subclassGravatar MarkKoz2019-12-07-1/+3
| | |
| * | Removed `setUp()` from `TimeTests` since it is not being used for anything.Gravatar Shirayuki Nekomata2019-12-05-3/+0
| | |
| * | Moved all individual test cases into iterables and test with `self.subTest` ↵Gravatar Shirayuki Nekomata2019-12-05-14/+18
| | | | | | | | | | | | context manager.
| * | Added `self.subTest` for tests with multiple test cases & simplified single ↵Gravatar Shirayuki Nekomata2019-12-05-19/+11
| | | | | | | | | | | | test case tests.
| * | Introduced test for `test_format_infraction`, refactored ↵Gravatar Shirayuki Nekomata2019-12-05-5/+7
| | | | | | | | | | | | `test_parse_rfc1123`, fixed typo.
| * | Splitting test cases for `format_infraction_with_duration` into proper, ↵Gravatar Shirayuki Nekomata2019-12-05-7/+27
| | | | | | | | | | | | independent tests.
| * | Changed `assert` to `self.assertIs` for `test_wait_until`Gravatar Shirayuki Nekomata2019-12-05-1/+1
| | |
| * | Added missing docstring for `test_humanize_delta_raises_for_invalid_max_units`Gravatar Shirayuki Nekomata2019-12-05-0/+1
| | |
| * | Splitting test cases for `humanize_delta` into proper, independent tests.Gravatar Shirayuki Nekomata2019-12-05-7/+21
| | |
| * | Added `unittest` for `bot.utils.time`Gravatar Shirayuki Nekomata2019-12-04-0/+87
| |/
| * Apply review comments to duckpond's unit testsGravatar Sebastiaan Zeeff2019-11-27-72/+128
| | | | | | | | | | | | | | | | https://github.com/python-discord/bot/pull/621 I've changed to unit tests according to the comments made on the issue. Most changes are straightforward enough, but, for context, see the PR linked above.
| * Apply suggestions from code reviewGravatar Sebastiaan Zeeff2019-11-16-4/+3
| | | | | | Co-Authored-By: Mark <[email protected]>
| * Add unit tests with full coverage for `bot.cogs.duck_pond`Gravatar Sebastiaan Zeeff2019-11-15-159/+490
| | | | | | | | | | This commit adds unit tests that provide a full branch coverage of the `bot.cogs.duck_pond` file.
| * Add MockAsyncWebhook to mock `discord.Webhook` objectsGravatar Sebastiaan Zeeff2019-11-15-0/+21
| | | | | | | | | | | | | | I have added a mock type to mock `discord.Webhook` instances. Note that the current type is specifically meant to mock webhooks that use an AsyncAdaptor and therefore has AsyncMock/coroutine mocks for the "maybe-coroutine" methods specified in the `discord.py` docs.
| * Adjust MockReaction for new AsyncIteratorMock protocolGravatar Sebastiaan Zeeff2019-11-15-3/+1
| | | | | | | | | | The new AsyncIteratorMock no longer needs an additional method to be used with a Mock object.
| * Add MockUser to mock `discord.User` objectsGravatar Sebastiaan Zeeff2019-11-15-0/+19
| | | | | | | | | | | | | | | | I have added a special mock that follows the specifications of a `discord.User` instance. This is useful, since `Users` have less attributes available than `discord.Members`. Since this difference in availability of information can be important, we should not use a `MockMember` to mock a `discord.user`.
| * Add `return_value` support and assertions to AsyncIteratorMockGravatar Sebastiaan Zeeff2019-11-15-4/+54
| | | | | | | | | | | | | | | | | | | | | | The AsyncIteratorMock included in Python 3.8 will work similarly to the mocks of callabes. This means that it allows you to set the items it will yield using the `return_value` attribute. It will also have support for the common Mock-specific assertions. This commit introduces some backports of those features in a slightly simplified way to make the transition to Python 3.8 easier in the future.
| * Add MockAttachment type and attachments default for MockMessageGravatar Sebastiaan Zeeff2019-11-14-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | As stated from the start, our intention is to add custom mock types as we need them for testing. While writing tests for DuckPond, I noticed that we did not have a mock type for Attachments, so I added one with this commit. In addition, I think it's a very sensible for MockMessage to have an empty list as a default value for the `attachements` attribute. This is equal to what `discord.Message` returns for a message without attachments and makes sure that if you don't explicitely add an attachment to a message, `MockMessage.attachments` tests as falsey.
| * Add bot=False default value to MockMemberGravatar Sebastiaan Zeeff2019-11-14-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default, a mocked value is considered `truthy` in Python, like all non-empty/non-zero/non-None values in Python. This means that if an attribute is not explicitly set on a mock, it will evaluate at as truthy in a boolean context, since the mock will provide a truthy mocked value by default. This is not the best default value for the `bot` attribute of our MockMember type, since members are rarely bots. It makes much more intuitive sense to me to consider a member to not be a bot, unless we explicitly set `bot=True`. This commit sets that sensible default value that can be overwritten by passing `bot=False` to the constructor or setting the `object.bot` attribute to `False` after the creation of the mock.
| * Merging in masterGravatar Leon Sandøy2019-11-13-144/+637
| |\
| * | Add tests for on_raw_reaction_add.Gravatar Leon Sandøy2019-11-12-14/+70
| | | | | | | | | | | | | | | | | | | | | Basically I suck at this and I can't get this return_value thing to work. I'll have Ves look at it to resolve it. As of right now, multiple tests are failing.
| * | Implement a mixed duck test.Gravatar Leon Sandøy2019-11-11-10/+20
| | | | | | | | | | | | | | | Also gets started setting up for the final tests, which will require more mockwork.
| * | Adding ducky count tests and a new AsyncIteratorMockGravatar Leon Sandøy2019-11-11-15/+93
| | |
| * | Test is_staff and has_green_checkmark.Gravatar Leon Sandøy2019-11-03-17/+35
| | |
| * | Resolving merge conflicts from masterGravatar Leon Sandøy2019-11-03-179/+256
| |\ \
| * | | Figure out which tests we need.Gravatar Leon Sandøy2019-10-31-0/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds empty tests for all the tests I'd like to add to this pull request. It also adds a few more duckies to the emoji constant list, and adds a single line of clarification to the testing readme.
* | | | Specify assertion to be a tuple comparisonGravatar kwzrd2019-11-14-1/+1
| | | |
* | | | Make complex test cases namedtuples, recognize between various authors, pass ↵Gravatar kwzrd2019-11-14-12/+43
| | | | | | | | | | | | | | | | config to subTest
* | | | Hold recent_messages in a list to respect type hint, set config in setUpGravatar kwzrd2019-11-14-5/+8
| | | |
* | | | Adjust attachments rule unit test to correcty build the arguments for the ↵Gravatar kwzrd2019-11-14-7/+11
| | | | | | | | | | | | | | | | tested rule
* | | | Use async_test helper to simplify coro testingGravatar kwzrd2019-11-13-9/+14
| | | |
* | | | Adjust attachments rule to use MockMessage, restructure test casesGravatar kwzrd2019-11-13-20/+23
| | | |
* | | | Adjust links rule to use proper MockMessageGravatar kwzrd2019-11-13-14/+10
| | | |
* | | | Merge branch 'master' into unittest-mentionsGravatar kwzrd2019-11-13-157/+134
|\ \ \ \ | | |_|/ | |/| | | | | | Testing methodology was adjusted in upstream repo. Merging the relevant changes.
| * | | Merge branch 'master' into unittest-helpers-improvementsGravatar scragly2019-11-14-0/+101
| |\ \ \
| * | | | Prevent await warnings for MockBot's create_taskGravatar Sebastiaan Zeeff2019-11-13-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the coroutine object passed to `MockBot.loop.create_task` would trigger a `RuntimeWarning` for not being awaited as we do not actually create a task for it. To prevent these warnings, coroutine objects passed will now automatically be closed.
| * | | | Prevent setting unknown attributes on d.py mocksGravatar Sebastiaan Zeeff2019-11-13-158/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our custom `discord.py` now follow the specifications of the object they are mocking more strictly by using the `spec_set` instead of the `spec` kwarg to initialize the specifications. This means that trying to set an attribute that does not follow the specifications will now also result in an `AttributeError`. To make sure we are not trying to set illegal attributes during the default initialization of the mock objects, I've changed the way we handle default values of parameters. This does introduce a breaking change: Instead of passing a `suffix_id`, the `id` attribute should now be passed using the exact name. `id`. This commit also makes sure existing tests follow this change.
| * | | | Allow `name` attribute to be set during Mock initGravatar Sebastiaan Zeeff2019-11-13-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `name` keyword argument has a special meaning for the default mockobjects provided by `unittest.mock`. This means that by default, the common d.py `name` attribute can't be set during initalization of one of our custom Mock-objects by passing it to the constructor. Since it's unlikely for us to make use of the special `name` feature of mocks and more likely to want to set the d.py `name` attribute, I added special handling of the `name` kwarg.
| * | | | Prevent unwanted logging while running testsGravatar Sebastiaan Zeeff2019-11-13-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, logging messages would output to std.out. when running individual test files (instead of running the entire suite). To prevent this, I've added a `for`-loop to `tests.helpers` that sets the level of all registered loggers to `CRITICAL`. The reason for adding this to `tests.helpers` is simple: It's the most common file to be imported in individual tests, increasing the chance of the code being run for individual test files. A small downside of this way of handling logging is that when we are trying to assert logging messages are being emitted, we need to set the logger explicitly in the `self.assertLogs` context manager. This is a small downside, though, and probably good practice anyway. There was one test in `tests.bot.test_api` that did not do this, so I have changed this to make the test compatible with the new set-up.
* | | | | Adjust incorrect type hintGravatar kwzrd2019-11-09-1/+1
| | | | |
* | | | | Use MockMessage instead of custom FakeMessageGravatar kwzrd2019-11-09-15/+11
| | | | |
* | | | | Adjust type hint to correctly represent internal typeGravatar kwzrd2019-11-09-1/+1
| | | | |
* | | | | Use range to build mock mentions listGravatar kwzrd2019-11-09-1/+1
| | | | |