Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unit test discord_handler.py #44

Merged
merged 1 commit into from
Feb 20, 2024
Merged

Conversation

elliotgoodrich
Copy link
Owner

When deploying filmbot to AWS, the majority of issues are small Python mistakes inside discord_handler.py. Although there isn't a terrible amount of logic inside this file, there's still a decent amount of code that could go wrong.

This commit adds a reasonable attempt at testing most inputs to handle_discord (perhaps with the exception of the film autocomplete as it relys on IMDbPy to send a network request).

Throughout testing I have found 2 potential causes for non-determinism, which won't actually cause any issues in the real world, but makes unit testing difficult. One was unnecessarily converting an iterable into a set and then iterating through it to display a message, and the second was a situation that arises in the test where we may or may not have the two nominated films share an identical timestamp depending on how fast the code runs. In the case of a tie moto returns the results in a different order from the query than if they were different. To fix this we make sure to sort entries by Discord User ID if the nomination timestamps are the same.

When deploying `filmbot` to AWS, the majority of issues are small Python
mistakes inside `discord_handler.py`.  Although there isn't a terrible
amount of logic inside this file, there's still a decent amount of code
that could go wrong.

This commit adds a reasonable attempt at testing most inputs to
`handle_discord` (perhaps with the exception of the film autocomplete as
it relys on IMDbPy to send a network request).

Throughout testing I have found 2 potential causes for non-determinism,
which won't actually cause any issues in the real world, but makes unit
testing difficult.  One was unnecessarily converting an iterable into a
`set` and then iterating through it to display a message, and the second
was a situation that arises in the test where we may or may not have the
two nominated films share an identical timestamp depending on how fast
the code runs.  In the case of a tie `moto` returns the results in a
different order from the query than if they were different.  To fix this
we make sure to sort entries by Discord User ID if the nomination
timestamps are the same.
@elliotgoodrich elliotgoodrich merged commit 4d02656 into master Feb 20, 2024
2 checks passed
@elliotgoodrich elliotgoodrich deleted the unit-test-discord-handler branch February 20, 2024 21:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant