aboutsummaryrefslogtreecommitdiffstats
path: root/tests/helpers.py (unfollow)
Commit message (Collapse)AuthorLines
2019-12-01Allow snekbox in esoteric-python channelGravatar MarkKoz-4/+15
* Add a hidden_channels parameter to in_channel decorator to hide channels from the InChannelCheckFailure error message.
2019-11-30Update bot/cogs/moderation/modlog.pyGravatar Leon Sandøy-1/+1
2019-11-27Apply review comments to duckpond's unit testsGravatar Sebastiaan Zeeff-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.
2019-11-27Move duckpond payload emoji check to method to create testable unitGravatar Sebastiaan Zeeff-6/+14
I moved the check that tests if a payload contains a duck emoji to a separate method. This makes it easier to test this part of the code as a separate unit than when it's contained in the larger event listener. In addition, I kaizened the name `relay_message_to_duckpond` to the less verbose `relay_message`; that's already clear enough.
2019-11-25Make requested tweaks: Use URL constant from constants.py, re-add try/except ↵Gravatar Deniz-15/+17
block and implement the changes requested by Ava
2019-11-25Update PASTE_URL constant to be pydis instead of pythondiscordGravatar Deniz-1/+1
2019-11-25Change order of importsGravatar Deniz-1/+1
2019-11-25Forgot the word 'hey'Gravatar Deniz-1/+1
2019-11-25Update antimalware.py to be more consistent with other information messages ↵Gravatar Deniz-24/+20
(like the codeblock reminder) & improve code a slight bit
2019-11-19Relock to d.py 1.2.5 due to API breaking change for emoji.Gravatar scragly-80/+95
2019-11-16Apply suggestions from code reviewGravatar Sebastiaan Zeeff-4/+3
Co-Authored-By: Mark <[email protected]>
2019-11-16Renamed variables to be more explicit, added type hinting for ↵Gravatar Shirayuki Nekomata-24/+24
`content_before` and `content_after`
2019-11-15group and order constantsGravatar Numerlor-3/+5
2019-11-15Add variable info after comment was deletedGravatar Numerlor-1/+1
Co-authored-by: scargly <[email protected]>
2019-11-15join extra newlineGravatar Numerlor-2/+1
2019-11-15Add unit tests with full coverage for `bot.cogs.duck_pond`Gravatar Sebastiaan Zeeff-159/+490
This commit adds unit tests that provide a full branch coverage of the `bot.cogs.duck_pond` file.
2019-11-15Add MockAsyncWebhook to mock `discord.Webhook` objectsGravatar Sebastiaan Zeeff-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.
2019-11-15Adjust MockReaction for new AsyncIteratorMock protocolGravatar Sebastiaan Zeeff-3/+1
The new AsyncIteratorMock no longer needs an additional method to be used with a Mock object.
2019-11-15Add MockUser to mock `discord.User` objectsGravatar Sebastiaan Zeeff-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`.
2019-11-15Add `return_value` support and assertions to AsyncIteratorMockGravatar Sebastiaan Zeeff-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.
2019-11-15Move payload checks to start of DuckPond.on_raw_reaction_addGravatar Sebastiaan Zeeff-7/+7
The `DuckPond.on_raw_message_add` event listener makes an API call to fetch the message the reaction was added to. However, we don't need to fetch the message if the reaction that was added is not relevant to the duck pond. To prevent such unnecessary API calls, I have moved the code that checks for the relevance of the reaction event to before the code that fetches the message.
2019-11-15Refactor DuckPond msg relay to separate methodGravatar Sebastiaan Zeeff-29/+33
To allow for separate testing of the code that relays messages to the duck pond, I have moved this part of the code from the event listener to a separate method. The overall logic has remained unchanged. In addition, I've kaizened to things: - Removed unnecessary f-string without interpolation; - Removed double negative (not item not in list)
2019-11-15Check only for bot's green checkmark in DuckPondGravatar Sebastiaan Zeeff-4/+5
Previously, the presence of any green checkmark as a reaction would prevent a message from being relayed to the duck pond, regardless of the actor of that reaction. Since we only want to check if the bot has already processed this message, we should check for a checkmark added by the bot. This commit adds such a user check.
2019-11-14Add MockAttachment type and attachments default for MockMessageGravatar Sebastiaan Zeeff-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.
2019-11-14Add bot=False default value to MockMemberGravatar Sebastiaan Zeeff-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.
2019-11-14Condensed logic, now only check for `add` `remove` `same` diff_type only.Gravatar Shirayuki Nekomata-8/+6
2019-11-13Prevent await warnings for MockBot's create_taskGravatar Sebastiaan Zeeff-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.
2019-11-13Prevent setting unknown attributes on d.py mocksGravatar Sebastiaan Zeeff-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.
2019-11-13Allow `name` attribute to be set during Mock initGravatar Sebastiaan Zeeff-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.
2019-11-13Prevent unwanted logging while running testsGravatar Sebastiaan Zeeff-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.
2019-11-13Switched to using list instead of `str.replace()` for much better control ↵Gravatar Shirayuki Nekomata-10/+13
over each word.
2019-11-12Add tests for on_raw_reaction_add.Gravatar Leon Sandøy-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.
2019-11-12Adjust code style and commentsGravatar Numerlor-37/+40
2019-11-11Implement a mixed duck test.Gravatar Leon Sandøy-10/+20
Also gets started setting up for the final tests, which will require more mockwork.
2019-11-11Adding ducky count tests and a new AsyncIteratorMockGravatar Leon Sandøy-15/+93
2019-11-11syntax highlight diff of reloaded inventoriesGravatar Numerlor-3/+3
2019-11-11Do not cut off text arbitrarily but at last sentence to make sure no ↵Gravatar Numerlor-1/+1
unfinished markdown is left in
2019-11-11clear renamed symbols on inventory refreshGravatar Numerlor-0/+1
2019-11-10Move signatures definitionGravatar Numerlor-1/+1
2019-11-10Add a command for refreshing inventoriesGravatar Numerlor-0/+22
2019-11-10Move paragraph search to not cut off long starting paragraphsGravatar Numerlor-1/+1
Co-authored-by: scargly <[email protected]>
2019-11-10Cut off description at 1000 chars if paragraph is not foundGravatar Numerlor-0/+2
2019-11-10Add a newline after signatures for readabilityGravatar Numerlor-1/+1
2019-11-10fix signatures and descriptions not being found when presentGravatar Numerlor-4/+4
2019-11-09[kaizen] Remove now duplicate channel checkGravatar Derek-19/+18
Unindent subsequent lines after check
2019-11-09Forward user/role pings in checkpoint to mod-alertsGravatar Derek-2/+34
[kaizen] limit on_message listener to verification channel
2019-11-08Update docstring to use asterisks when referring to argument namesGravatar kwzrd-1/+1
Co-Authored-By: Kyle Stanley <[email protected]>
2019-11-08Add whitespace for readability, consistency & allureGravatar kwzrd-0/+1
2019-11-08Refactor bigbrother to use constantsGravatar kosayoda-5/+5
2019-11-08Allow helpers to nominate peopleGravatar kosayoda-9/+8