Feat: add orm for Tribes
This commit is contained in:
parent
77b26f1180
commit
723092c38f
@ -0,0 +1,17 @@
|
|||||||
|
from sqlalchemy import Column, MetaData, String, Table
|
||||||
|
from sqlalchemy.orm import mapper
|
||||||
|
|
||||||
|
from backend.model.tribe import Tribe as TribeModel
|
||||||
|
|
||||||
|
metadata = MetaData()
|
||||||
|
|
||||||
|
tribes = Table(
|
||||||
|
"tribes",
|
||||||
|
metadata,
|
||||||
|
Column("name", String(255), primary_key=True),
|
||||||
|
Column("level", String(255)),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def start_mappers():
|
||||||
|
tribes_mapper = mapper(TribeModel, tribes)
|
@ -20,3 +20,8 @@ class Tribe:
|
|||||||
|
|
||||||
def register_student(self, student: Student) -> None:
|
def register_student(self, student: Student) -> None:
|
||||||
self.students.append(student)
|
self.students.append(student)
|
||||||
|
|
||||||
|
def __eq__(self, other: object) -> bool:
|
||||||
|
if isinstance(other, Tribe):
|
||||||
|
return self.name == other.name and self.level == other.level
|
||||||
|
return False
|
||||||
|
19
tests/conftest.py
Normal file
19
tests/conftest.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import pytest
|
||||||
|
from sqlalchemy import create_engine
|
||||||
|
from sqlalchemy.orm import clear_mappers, sessionmaker
|
||||||
|
|
||||||
|
from backend.adapters.orm import metadata, start_mappers
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def in_memory_db():
|
||||||
|
engine = create_engine("sqlite:///:memory:")
|
||||||
|
metadata.create_all(engine)
|
||||||
|
return engine
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def session(in_memory_db):
|
||||||
|
start_mappers()
|
||||||
|
yield sessionmaker(bind=in_memory_db)()
|
||||||
|
clear_mappers()
|
15
tests/integration/test_orm.py
Normal file
15
tests/integration/test_orm.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from backend.adapters.orm import metadata, start_mappers
|
||||||
|
from backend.model.tribe import Tribe
|
||||||
|
|
||||||
|
|
||||||
|
def test_tribes_mapper_can_load_tribe(session):
|
||||||
|
session.execute(
|
||||||
|
"INSERT INTO tribes (name, level) VALUES "
|
||||||
|
"('tribe1', '2nd'),"
|
||||||
|
"('tribe2', '1ST')"
|
||||||
|
)
|
||||||
|
expected = [
|
||||||
|
(Tribe("tribe1", "2nd")),
|
||||||
|
(Tribe("tribe2", "1ST")),
|
||||||
|
]
|
||||||
|
assert session.query(Tribe).all() == expected
|
Loading…
Reference in New Issue
Block a user