Skip to content

Commit d97f038

Browse files
committed
added type relationship test
1 parent edbeb2d commit d97f038

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

tests/test_mapper.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from sqlalchemy.dialects.postgresql.array import ARRAY
66
from sqlalchemy.ext.declarative import declarative_base
77
from sqlalchemy.orm import relationship
8+
from strawberry.type import StrawberryOptional
89

910
from strawberry_sqlalchemy_mapper import StrawberrySQLAlchemyMapper
1011

@@ -207,3 +208,55 @@ class Base:
207208
strawberry_sqlalchemy_mapper._add_annotation(Base, key, annotation, field_keys)
208209
assert Base.__annotations__[key] == annotation
209210
assert field_keys == [key]
211+
212+
213+
def test_connection_resolver_for():
214+
strawberry_sqlalchemy_mapper = StrawberrySQLAlchemyMapper()
215+
_, Department = _create_employee_and_department_tables()
216+
employees_property = Department.employees.property
217+
assert (
218+
strawberry_sqlalchemy_mapper.connection_resolver_for(employees_property)
219+
is not None
220+
)
221+
222+
223+
def test_type_simple():
224+
Employee = _create_employee_table()
225+
strawberry_sqlalchemy_mapper = StrawberrySQLAlchemyMapper()
226+
227+
@strawberry_sqlalchemy_mapper.type(Employee)
228+
class Employee:
229+
pass
230+
231+
strawberry_sqlalchemy_mapper.finalize()
232+
additional_types = list(strawberry_sqlalchemy_mapper.mapped_types.values())
233+
assert len(additional_types) == 1
234+
mapped_employee_type = additional_types[0]
235+
assert mapped_employee_type.__name__ == "Employee"
236+
assert len(mapped_employee_type._type_definition._fields) == 2
237+
employee_type_fields = mapped_employee_type._type_definition._fields
238+
name = list(filter(lambda f: f.name == "name", employee_type_fields))[0]
239+
assert name.type == str
240+
id = list(filter(lambda f: f.name == "id", employee_type_fields))[0]
241+
assert id.type == int
242+
243+
244+
def test_type_relationships():
245+
Employee, _ = _create_employee_and_department_tables()
246+
strawberry_sqlalchemy_mapper = StrawberrySQLAlchemyMapper()
247+
248+
@strawberry_sqlalchemy_mapper.type(Employee)
249+
class Employee:
250+
pass
251+
252+
strawberry_sqlalchemy_mapper.finalize()
253+
additional_types = list(strawberry_sqlalchemy_mapper.mapped_types.values())
254+
assert len(additional_types) == 2
255+
mapped_employee_type = additional_types[0]
256+
assert mapped_employee_type.__name__ == "Employee"
257+
assert len(mapped_employee_type._type_definition._fields) == 4
258+
employee_type_fields = mapped_employee_type._type_definition._fields
259+
name = list(filter(lambda f: f.name == "department_id", employee_type_fields))[0]
260+
assert type(name.type) == StrawberryOptional
261+
id = list(filter(lambda f: f.name == "department", employee_type_fields))[0]
262+
assert type(id.type) == StrawberryOptional

0 commit comments

Comments
 (0)