aboutsummaryrefslogtreecommitdiffstats
path: root/tests/helpers.py (unfollow)
Commit message (Collapse)AuthorLines
2021-03-27Branding: revise documentationGravatar kwzrd-97/+80
2021-03-27Branding: ensure daemon logs exceptionsGravatar kwzrd-5/+8
2021-03-26Branding: make 'meta.md' parser synchronousGravatar kwzrd-2/+2
No reason for this to be async.
2021-03-26Branding: raise custom error when constructing remote objectsGravatar kwzrd-0/+3
The default KeyError message from dict lookup is just the missing key. In order to give more context in the log message, we raise our own.
2021-03-26Branding: raise on non-200 responsesGravatar kwzrd-23/+20
The fetch helpers will now raise when the request fails rather than logging a warning and returning a fallback value. This allows better error logging as the caller is able to log the propagated exception while adding its own context. Additionally, the caller in some cases no longer needs to check for the None return and raise its own exception.
2021-03-25Branding: cache fresh event description in daemonGravatar kwzrd-3/+18
Previously, the event description & duration strings were only stored on event entry. In the case that the description or duration change for an on-going event, the cached values wouldn't be updated. After this commit, the cache is refreshed daily by the daemon.
2021-03-25Branding: improve 'compound_hash' docstringGravatar kwzrd-1/+5
2021-03-18Branding: update 'synchronise' docsGravatar kwzrd-3/+3
After previous changes, the docstring was no longer accurate. See: 1d5625a2f47a1d4d050f9eb0eb7a18e7d6fe171b
2021-03-17Branding: extend command aliasesGravatar kwzrd-2/+2
2021-03-17Branding: adjust daemon start-up behaviourGravatar kwzrd-35/+36
The daemon will now perform a sync iteration immediately when started, and then every UTC midnight. Previously, it would only perform the initial iteration when started for the first time, which is odd. It is also believed that splitting the daemon's logic into three separate functions is beneficial: before, loop, and main. This commit makes log and doc adjustments where appropriate.
2021-03-15Pipenv: bump 'python-frontmatter' pin & re-lockGravatar kwzrd-19/+35
Fresh stable release, just in time!
2021-03-15Branding: decode 'meta.md' using UTF-8Gravatar kwzrd-1/+1
2021-03-14Branding: suppress 'ValueError' on empty-dict updateGravatar kwzrd-4/+6
2021-03-14Branding: check for empty icon cacheGravatar kwzrd-0/+4
2021-03-14Branding: add embed length cut-offs for safetyGravatar kwzrd-7/+10
This should never do anything, but it's better to be safe. Values taken from Discord developer docs.
2021-03-14Branding: provide class documentationGravatar kwzrd-2/+43
2021-03-14Branding: log correct amount of cached eventsGravatar kwzrd-1/+3
2021-03-14Branding: log event path alongside errorGravatar kwzrd-1/+1
Knowing which event failed would probably be quite useful.
2021-03-14Branding: avoid sending #changelog notification on resyncGravatar kwzrd-7/+12
The notification is now sent conditionally depending on whether we're entering a new event. This prevents sending a repeating notification in the case of a manual resynchronisation. A practical example of when this may trigger is when a staff member temporarily applies custom assets & then uses the sync command to reapply the current event.
2021-03-14Branding: make 'cog_unload' synchronousGravatar kwzrd-1/+1
Discord.py doesn't await the return value.
2021-03-14Branding: show success information in 'sync' responseGravatar kwzrd-6/+17
Now that the boolean flags are propagating from 'apply_asset', we can present them to the user.
2021-03-14Branding: propagate success-indicating boolean from 'apply_asset'Gravatar kwzrd-19/+43
The sync command will now be able to use present this information to the invoking user. This commit also prevents the cached banner & icon hash from being overwritten in the case of asset upload failure. As a result, the daemon will attempt to re-apply the assets the following day.
2021-03-14Branding: do not call 'rotate_icons' from rotation initGravatar kwzrd-2/+6
It makes more sense for the init and the rotation to be separate operations. In a subsequent commit, the separation of responsibility will allow the `rotate_icons` function to have a meaningful return value.
2021-03-13Branding: replace ugly lambda with 'attrgetter'Gravatar kwzrd-1/+2
2021-03-13Branding: add calendar command groupGravatar kwzrd-0/+63
2021-03-13Branding: cache all available eventsGravatar kwzrd-11/+56
This is a prequel to adding a calendar command. To avoid re-querying the branding repo on command invocation, event information will be cached whenever we make requests. The command can then simply get an up-to-date event schedule from the cache, with the option of forcing an update via the 'populate_cache_events' function. Since we cannot easily serialize entire 'Event' instances, we simply store what's needed - the event name, and its duration. The author has verified that the cache maintains order; in this case chronological order based on event start date.
2021-03-13Branding: extract duration string in helper functionGravatar kwzrd-9/+17
2021-03-13Branding: add missing early exitGravatar kwzrd-0/+1
2021-03-13Branding: lock commands to mods+ where necessaryGravatar kwzrd-1/+3
2021-03-13Branding: implement command interfaceGravatar kwzrd-1/+85
2021-03-13Branding: gate sync via helper functionGravatar kwzrd-8/+19
Sync make also be invoked with a command; avoid logic duplication.
2021-03-13Branding: implement daemonGravatar kwzrd-3/+109
2021-03-13Branding: implement internal utilityGravatar kwzrd-2/+174
This adds the core logic of branding management. In comparison with the previous version, we now maintain all state in Redis, which allows the bot to seamlessly restart without losing any information. The 'send_info_embed' function is intentionally implemented with the consideration of allowing users to invoke it on-demand. It always reads information from the cache, even if the caller could pass a 'MetaFile' instance. So while this may look needlessly indirect right now, it should begin to make sense once the command API is implemented.
2021-03-13Branding: expose SHA on remote objectsGravatar kwzrd-0/+1
2021-03-13Branding: implement asset application logicGravatar kwzrd-0/+51
2021-03-13Branding: do not require 'RemoteObject' instance to fetch fileGravatar kwzrd-5/+5
2021-03-13Branding: correctly annotate optional attributeGravatar kwzrd-1/+1
2021-03-13Branding: make event instances aware of their locationGravatar kwzrd-2/+6
This allows us to add a neat string representation.
2021-03-13Branding: add event gettersGravatar kwzrd-0/+51
These methods form the API to the repository abstraction.
2021-03-13Branding: define event construction methodologyGravatar kwzrd-0/+90
2021-03-13Branding: add HTTP fetch helper methodsGravatar kwzrd-0/+54
2021-03-13Branding: migrate constantsGravatar kwzrd-11/+11
Constants will only be used in one place and there's not enough of them to warrant a separate module.
2021-03-13Branding: initiate repository abstractionGravatar kwzrd-0/+15
2021-03-13Branding: remove current implementationGravatar kwzrd-812/+32
Since we're planning substantial changes, it will be easier to build from scratch.
2021-03-07Pipenv: add 'python-frontmatter' & re-lockGravatar kwzrd-48/+59
2021-03-06Remove trailing whitespaceGravatar Boris Muratov-1/+1
2021-03-06Filtering hotfixGravatar Boris Muratov-1/+7
Bug caused by an outdated function signature in a previous commit in the #1402 PR
2021-03-06Version lock JSON loggerGravatar Joe Banks-2/+2
2021-03-06Use JSON logging when debug mode is disabledGravatar Joe Banks-16/+33
2021-03-06Add JSON logging dependenciesGravatar Joe Banks-98/+163