Skip to content

Commit 564bc39

Browse files
committed
Add xfail tests for links to std::Object not returning the correct type.
1 parent 7ceabc9 commit 564bc39

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

tests/dbsetup/orm.edgeql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,12 @@ insert MultiRangeTest {
161161
insert EnumTest {name := 'red', color := Color.Red};
162162
insert EnumTest {name := 'green', color := Color.Green};
163163
insert EnumTest {name := 'blue', color := Color.Blue};
164+
165+
insert NamedWrapper {
166+
name := 'custom_user',
167+
thing := (
168+
select User { @note := "hi" }
169+
filter .name = 'Zoe'
170+
limit 1
171+
)
172+
};

tests/dbsetup/orm.gel

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,16 @@ type TestSingleLinksOptOnly {
274274
strength: int32;
275275
}
276276
}
277+
type TestSingleLinksObjReqOnly {
278+
required link req_wprop_obj: std::Object {
279+
strength: int32;
280+
};
281+
}
282+
type TestSingleLinksObjOptOnly {
283+
link opt_wprop_obj: std::Object {
284+
strength: int32;
285+
};
286+
}
277287

278288

279289
type TestPropRewrites extending ExclusivelyNamed {
@@ -508,6 +518,12 @@ function complex_variadic(
508518
)
509519
};
510520

521+
type NamedWrapper extending Named {
522+
thing: std::Object {
523+
note: str;
524+
};
525+
}
526+
511527
}
512528

513529
module content {

tests/test_model_generator.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,22 @@ def test_modelgen_06(self):
261261
self.assertIsInstance(user, default.User)
262262
self.assertIsInstance(user, default.CustomUser)
263263

264+
@tb.xfail
265+
def test_modelgen_07(self):
266+
from models.orm import default, std
267+
268+
wrapper = self.client.get(
269+
default.NamedWrapper.select(
270+
name=True,
271+
thing=True,
272+
).filter(name="custom_user")
273+
)
274+
user = wrapper.thing
275+
assert user is not None
276+
277+
self.assertIsInstance(user, std.Object)
278+
self.assertIsInstance(user, default.CustomUser)
279+
264280
def test_modelgen_data_unpack_1a(self):
265281
import gel
266282
from models.orm import default
@@ -1359,6 +1375,40 @@ def test_modelgen_pydantic_apis_11d(self):
13591375
self.assertPydanticPickles(t)
13601376
self.assertPydanticSerializes(t)
13611377

1378+
@tb.xfail
1379+
def test_modelgen_pydantic_apis_11e(self):
1380+
# Test model_dump() and model_dump_json() on models;
1381+
# test *single required* link serialization in all combinations
1382+
1383+
from models.orm import default
1384+
1385+
u = default.User(name="aaa")
1386+
t = default.TestSingleLinksObjReqOnly(
1387+
req_wprop_obj=default.TestSingleLinksObjReqOnly.req_wprop_obj.link(
1388+
u, strength=123
1389+
),
1390+
)
1391+
1392+
self.assertPydanticPickles(t)
1393+
self.assertPydanticSerializes(t)
1394+
1395+
@tb.xfail
1396+
def test_modelgen_pydantic_apis_11f(self):
1397+
# Test model_dump() and model_dump_json() on models;
1398+
# test *single required* link serialization in all combinations
1399+
1400+
from models.orm import default
1401+
1402+
u = default.User(name="aaa")
1403+
t = default.TestSingleLinksObjOptOnly(
1404+
opt_wprop_obj=default.TestSingleLinksObjOptOnly.opt_wprop_obj.link(
1405+
u, strength=123
1406+
),
1407+
)
1408+
1409+
self.assertPydanticPickles(t)
1410+
self.assertPydanticSerializes(t)
1411+
13621412
def test_modelgen_pydantic_apis_12(self):
13631413
import uuid
13641414
from models.orm import default

0 commit comments

Comments
 (0)