From fe924333114f84d6fd3162acc44e25d7e121842f Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Mon, 26 Dec 2022 19:05:50 +0100 Subject: [PATCH] Feat: add get_tribe for sqlite --- backend/repository/tribe_sqlite_repository.py | 15 +++++++++++- tests/integration/test_repository_sqlite.py | 23 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/backend/repository/tribe_sqlite_repository.py b/backend/repository/tribe_sqlite_repository.py index 60cd854..da8d31c 100644 --- a/backend/repository/tribe_sqlite_repository.py +++ b/backend/repository/tribe_sqlite_repository.py @@ -13,7 +13,19 @@ class TribeSQLiteRepository(AbstractRepository): pass def get(self, name: str) -> Tribe: - pass + cursor = self.conn.cursor() + cursor.execute( + """ + SELECT * FROM tribes WHERE name=? + """, + (name,), + ) + + row = cursor.fetchone() + if row: + return Tribe(*row) + + raise ValueError(f"The tribe {name} does not exists") def list(self) -> list[Tribe]: cursor = self.conn.cursor() @@ -22,6 +34,7 @@ class TribeSQLiteRepository(AbstractRepository): SELECT * FROM tribes """ ) + rows = cursor.fetchall() return [Tribe(*r) for r in rows] diff --git a/tests/integration/test_repository_sqlite.py b/tests/integration/test_repository_sqlite.py index 2f31542..9a83ee7 100644 --- a/tests/integration/test_repository_sqlite.py +++ b/tests/integration/test_repository_sqlite.py @@ -1,9 +1,11 @@ +import pytest + from backend.adapters.sqlite import create_db from backend.model.tribe import Tribe from backend.repository.tribe_sqlite_repository import TribeSQLiteRepository -def populate_tribe(conn) -> None: +def populate_tribe(conn) -> list[Tribe]: cursor = conn.cursor() tribes = [ ("Tribe1", "2nd"), @@ -21,6 +23,25 @@ def populate_tribe(conn) -> None: return [Tribe(*t) for t in tribes] +def test_get_tribe(sqlite_conn): + create_db(sqlite_conn) + prebuild_tribes = populate_tribe(sqlite_conn) + + tribe_repo = TribeSQLiteRepository(sqlite_conn) + tribes = tribe_repo.get("Tribe1") + + assert prebuild_tribes[0] == tribes + + +def test_get_tribe_not_exists(sqlite_conn): + create_db(sqlite_conn) + prebuild_tribes = populate_tribe(sqlite_conn) + + tribe_repo = TribeSQLiteRepository(sqlite_conn) + with pytest.raises(ValueError): + tribe_repo.get("Tribe0") + + def test_list_tribes(sqlite_conn): create_db(sqlite_conn) prebuild_tribes = populate_tribe(sqlite_conn)