Skip to content

Commit 9712453

Browse files
authored
Fix example to work with Pydantic V2, add test for examples
2 parents 2a9dbea + 8cee335 commit 9712453

File tree

5 files changed

+43
-6
lines changed

5 files changed

+43
-6
lines changed

Diff for: .gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,7 @@ dmypy.json
7575

7676
# PyCharm / IntelliJ
7777
.idea/
78+
79+
# vim
80+
*.swp
81+
*.swo

Diff for: examples/departments.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ class SalaryModel(pydantic.BaseModel):
2121

2222

2323
class EmployeeModel(PersonModel):
24-
hired_on: datetime.datetime = None
25-
salary: T.Optional[SalaryModel]
24+
hired_on: T.Optional[datetime.datetime] = None
25+
salary: T.Optional[SalaryModel] = None
2626

2727

2828
class ManagerModel(EmployeeModel):
@@ -96,13 +96,13 @@ def resolve_list_departments(self, info):
9696
salary=SalaryModel(rating="GS-9", amount=75000.23),
9797
hired_on=datetime.datetime(2019, 1, 1, 15, 26),
9898
),
99-
EmployeeModel(id=uuid.uuid4(), name="Derek"),
99+
EmployeeModel(id=uuid.uuid4(), name="Derek", salary=None),
100100
],
101101
)
102102
]
103103

104104

105-
if __name__ == "__main__":
105+
def main():
106106
schema = graphene.Schema(query=Query)
107107
query = """
108108
query {
@@ -128,7 +128,10 @@ def resolve_list_departments(self, info):
128128
}
129129
}
130130
"""
131-
result = schema.execute(query)
131+
return schema.execute(query)
132+
132133

134+
if __name__ == "__main__":
135+
result = main()
133136
print(result.errors)
134137
print(json.dumps(result.data, indent=2))

Diff for: pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "graphene_pydantic"
3-
version = "0.6.0"
3+
version = "0.6.1"
44
description = "Graphene Pydantic integration"
55
readme = "README.md"
66
repository = "https://github.com/graphql-python/graphene-pydantic"

Diff for: tests/test_examples/__init__.py

Whitespace-only changes.

Diff for: tests/test_examples/test_departments.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from examples import departments
2+
3+
4+
def test_departments():
5+
result = departments.main()
6+
assert not result.errors
7+
8+
deps = result.data["listDepartments"]
9+
assert len(deps) == 1
10+
11+
employees = deps[0]["employees"]
12+
assert len(employees) == 3
13+
14+
def employee_by_name(employees, name):
15+
return [e for e in employees if e["name"] == name][0]
16+
17+
jason = employee_by_name(employees, "Jason")
18+
carmen = employee_by_name(employees, "Carmen")
19+
derek = employee_by_name(employees, "Derek")
20+
21+
# Jason is a manager
22+
assert jason["teamSize"] == 2
23+
assert carmen.get("teamSize") is None
24+
25+
# some sanity checks on optional fields,
26+
# knowing what the test data is
27+
assert jason.get("hiredOn") is None
28+
assert carmen.get("hiredOn") is not None
29+
assert carmen["salary"]["rating"] == "GS-9"
30+
assert derek["salary"] is None

0 commit comments

Comments
 (0)