Feat: add orm for Tribes
This commit is contained in:
		| @@ -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: | ||||
|         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 | ||||
		Reference in New Issue
	
	Block a user