Skip to content

Commit eb445b4

Browse files
authored
Merge pull request #46 from tomsch420/main
[ORMaitc] added tests for uuid
2 parents ab90e17 + b0d98d5 commit eb445b4

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

test/conftest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import logging
22
import os
33
import traceback
4+
import uuid
45
from dataclasses import is_dataclass
56

67
import pytest
8+
import sqlalchemy
79
from sqlalchemy import create_engine
810
from sqlalchemy.orm import Session, configure_mappers
911

@@ -74,9 +76,7 @@ def generate_sqlalchemy_interface():
7476

7577
instance = ORMatic(
7678
class_dependency_graph=class_diagram,
77-
type_mappings={
78-
PhysicalObject: ConceptType,
79-
},
79+
type_mappings={PhysicalObject: ConceptType, uuid.UUID: sqlalchemy.UUID},
8080
alternative_mappings=recursive_subclasses(AlternativeMapping),
8181
)
8282

test/dataset/example_classes.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22

33
import importlib
4+
import uuid
45
from dataclasses import dataclass, field
56
from datetime import datetime
67
from enum import Enum
@@ -549,3 +550,8 @@ def custom_static_method():
549550

550551
def module_level_function():
551552
return 1
553+
554+
555+
@dataclass
556+
class UUIDWrapper:
557+
identification: uuid.UUID

test/dataset/ormatic_interface.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@
2121
import krrood.entity_query_language.symbol_graph
2222
import krrood.ormatic.alternative_mappings
2323
import krrood.ormatic.custom_types
24+
import sqlalchemy.sql.sqltypes
2425
import test.dataset.example_classes
2526
import test.dataset.semantic_world_like_classes
2627
import typing
2728
import typing_extensions
29+
import uuid
2830

2931

3032
from krrood.ormatic.dao import DataAccessObject
@@ -34,6 +36,7 @@
3436
class Base(DeclarativeBase):
3537
type_mappings = {
3638
test.dataset.example_classes.PhysicalObject: test.dataset.example_classes.ConceptType,
39+
uuid.UUID: sqlalchemy.sql.sqltypes.UUID,
3740
typing.Type: krrood.ormatic.custom_types.TypeType,
3841
}
3942

@@ -1208,6 +1211,19 @@ class TransformationMappedDAO(
12081211
}
12091212

12101213

1214+
class UUIDWrapperDAO(Base, DataAccessObject[test.dataset.example_classes.UUIDWrapper]):
1215+
1216+
__tablename__ = "UUIDWrapperDAO"
1217+
1218+
database_id: Mapped[builtins.int] = mapped_column(
1219+
Integer, primary_key=True, use_existing_column=True
1220+
)
1221+
1222+
identification: Mapped[sqlalchemy.sql.sqltypes.UUID] = mapped_column(
1223+
sqlalchemy.sql.sqltypes.UUID, nullable=False, use_existing_column=True
1224+
)
1225+
1226+
12111227
class VectorMappedDAO(
12121228
SymbolDAO, DataAccessObject[test.dataset.example_classes.VectorMapped]
12131229
):

test/test_ormatic/test_interface.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,3 +528,13 @@ def test_callable_mapping(session, database):
528528

529529
from_dao = dao.from_dao()
530530
assert from_dao.func() == 1
531+
532+
533+
def test_uuid(session, database):
534+
obj = UUIDWrapper(uuid.uuid4())
535+
dao = to_dao(obj)
536+
session.add(dao)
537+
session.commit()
538+
539+
queried = session.scalars(select(UUIDWrapperDAO)).one()
540+
assert queried.identification == obj.identification

0 commit comments

Comments
 (0)