Skip to content

Commit 5ae020b

Browse files
committed
entgql: fix field arguments collection
1 parent 24731ec commit 5ae020b

7 files changed

Lines changed: 169 additions & 191 deletions

File tree

entgql/internal/todo/ent/gql_collection.go

Lines changed: 19 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

entgql/internal/todo/todo_test.go

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1313,7 +1313,87 @@ func TestNestedConnection(t *testing.T) {
13131313
bulkU[i] = ec.User.Create().SetName(fmt.Sprintf("user-%d", i)).AddGroups(groups[:len(groups)-i]...)
13141314
}
13151315
users := ec.User.CreateBulk(bulkU...).SaveX(ctx)
1316-
users[0].Update().AddFriends(users[1:]...).SaveX(ctx)
1316+
users[0].Update().AddFriends(users[1:]...).SaveX(ctx) // user 0 is friends with all
1317+
users[1].Update().AddFriends(users[2:]...).SaveX(ctx) // user 1 is friends with all
1318+
1319+
t.Run("After Cursor", func(t *testing.T) {
1320+
var (
1321+
query = `query ($id: ID!, $after: Cursor) {
1322+
user: node(id: $id) {
1323+
... on User {
1324+
id
1325+
name
1326+
friends(after: $after) {
1327+
totalCount
1328+
edges {
1329+
cursor
1330+
node {
1331+
id
1332+
name
1333+
friends {
1334+
totalCount
1335+
edges {
1336+
node {
1337+
id
1338+
name
1339+
}
1340+
}
1341+
}
1342+
}
1343+
}
1344+
}
1345+
}
1346+
}
1347+
}`
1348+
rsp struct {
1349+
User struct {
1350+
ID string
1351+
Name string
1352+
Friends struct {
1353+
TotalCount int
1354+
Edges []struct {
1355+
Cursor string
1356+
Node struct {
1357+
ID string
1358+
Name string
1359+
Friends struct {
1360+
TotalCount int
1361+
Edges []struct {
1362+
Node struct {
1363+
ID string
1364+
Name string
1365+
}
1366+
}
1367+
}
1368+
}
1369+
}
1370+
}
1371+
}
1372+
}
1373+
after any
1374+
)
1375+
err = gqlc.Post(query, &rsp, client.Var("id", users[0].ID), client.Var("after", after))
1376+
require.NoError(t, err)
1377+
require.Equal(t, 9, rsp.User.Friends.TotalCount)
1378+
require.Len(t, rsp.User.Friends.Edges, 9, "All users are friends with user 0")
1379+
// First friend of user 0 is user 1.
1380+
require.Equal(t, strconv.Itoa(users[1].ID), rsp.User.Friends.Edges[0].Node.ID)
1381+
require.Len(t, rsp.User.Friends.Edges[0].Node.Friends.Edges, 9, "All users are friends with user 1")
1382+
// All other users have 2 friends (user 0 and user 1).
1383+
for _, u := range rsp.User.Friends.Edges[1:] {
1384+
require.Len(t, u.Node.Friends.Edges, 2)
1385+
}
1386+
1387+
// Paginate over the friends of user 0.
1388+
n := len(rsp.User.Friends.Edges)
1389+
for i := 0; i < n; i++ {
1390+
err = gqlc.Post(query, &rsp, client.Var("id", users[0].ID), client.Var("after", after))
1391+
require.NoError(t, err)
1392+
require.Equal(t, 9, rsp.User.Friends.TotalCount)
1393+
require.Lenf(t, rsp.User.Friends.Edges, n-i, "There are %d friends after %v", n-i, after)
1394+
after = rsp.User.Friends.Edges[0].Cursor
1395+
}
1396+
})
13171397

13181398
t.Run("TotalCount", func(t *testing.T) {
13191399
var (

entgql/internal/todofed/ent/gql_collection.go

Lines changed: 10 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)