From c4c9461ca32b3e81f23459f7955212d332970ba2 Mon Sep 17 00:00:00 2001 From: stijndcl Date: Wed, 27 Jul 2022 22:08:00 +0200 Subject: [PATCH 1/2] Fix typing --- didier/data/embeds/wordle.py | 4 ++-- didier/didier.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/didier/data/embeds/wordle.py b/didier/data/embeds/wordle.py index 3f088f7..3f54d1e 100644 --- a/didier/data/embeds/wordle.py +++ b/didier/data/embeds/wordle.py @@ -105,7 +105,7 @@ class WordleEmbed(EmbedBaseModel): rows = [" ".join(row) for row in emojis] # Don't reveal anything if we only want to show the colours - if not only_colours: + if not only_colours and self.game is not None: for i, guess in enumerate(self.game.guesses): rows[i] += f" ||{guess.upper()}||" @@ -126,7 +126,7 @@ class WordleErrorEmbed(EmbedBaseModel): message: str @overrides - def to_embed(self) -> discord.Embed: + def to_embed(self, **kwargs: dict) -> discord.Embed: embed = discord.Embed(colour=discord.Colour.red(), title="Wordle") embed.description = self.message embed.set_footer(text=footer()) diff --git a/didier/didier.py b/didier/didier.py index fc57a83..f305cad 100644 --- a/didier/didier.py +++ b/didier/didier.py @@ -27,7 +27,7 @@ class Didier(commands.Bot): error_channel: discord.abc.Messageable initial_extensions: tuple[str, ...] = () http_session: ClientSession - wordle_words: set[str, ...] = set() + wordle_words: set[str] = set() def __init__(self): activity = discord.Activity(type=discord.ActivityType.playing, name=settings.DISCORD_STATUS_MESSAGE) From a0781a046b1a73f9a04fb534e7214297e2c2cd7d Mon Sep 17 00:00:00 2001 From: stijndcl Date: Sat, 30 Jul 2022 00:24:03 +0200 Subject: [PATCH 2/2] Add more tests --- tests/test_database/test_crud/test_wordle.py | 38 ++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/tests/test_database/test_crud/test_wordle.py b/tests/test_database/test_crud/test_wordle.py index a1720de..d0988fc 100644 --- a/tests/test_database/test_crud/test_wordle.py +++ b/tests/test_database/test_crud/test_wordle.py @@ -1,8 +1,12 @@ +from datetime import datetime, timedelta + import pytest +from freezegun import freeze_time from database.crud import wordle as crud +from database.enums import TempStorageKey from database.mongo_types import MongoCollection, MongoDatabase -from database.schemas.mongo import WordleGame +from database.schemas.mongo import TemporaryStorage, WordleGame @pytest.fixture @@ -37,6 +41,36 @@ async def test_get_active_wordle_game_none(mongodb: MongoDatabase, test_user_id: async def test_get_active_wordle_game(mongodb: MongoDatabase, wordle_game: WordleGame): - """Test getting an active game when there is none""" + """Test getting an active game when there is one""" result = await crud.get_active_wordle_game(mongodb, wordle_game.user_id) assert result.dict(by_alias=True) == wordle_game.dict(by_alias=True) + + +async def test_get_daily_word_none(mongodb: MongoDatabase): + """Test getting the daily word when the database is empty""" + result = await crud.get_daily_word(mongodb) + assert result is None + + +@freeze_time("2022-07-30") +async def test_get_daily_word_not_today(mongodb: MongoDatabase): + """Test getting the daily word when there is an entry, but not for today""" + day = datetime.today() - timedelta(days=1) + collection = mongodb[TemporaryStorage.collection()] + + word = "testword" + await collection.insert_one({"key": TempStorageKey.WORDLE_WORD, "day": day, "word": word}) + + assert await crud.get_daily_word(mongodb) is None + + +@freeze_time("2022-07-30") +async def test_get_daily_word_present(mongodb: MongoDatabase): + """Test getting the daily word when there is one for today""" + day = datetime.today() + collection = mongodb[TemporaryStorage.collection()] + + word = "testword" + await collection.insert_one({"key": TempStorageKey.WORDLE_WORD, "day": day, "word": word}) + + assert await crud.get_daily_word(mongodb) == word