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: |     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 | ||||||
		Reference in New Issue
	
	Block a user