Skip to content

Commit

Permalink
Fix e.group codegen when grouping a nested e.select (#450)
Browse files Browse the repository at this point in the history
  • Loading branch information
jaclarke committed Sep 26, 2022
1 parent 125e635 commit b14445f
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 1 deletion.
52 changes: 52 additions & 0 deletions qb/test/group.test.ts
Expand Up @@ -74,6 +74,58 @@ test("basic group", async () => {
expect(result[1].elements[0].characters[0].name).toBeDefined();
});

test("group nested select", async () => {
if (await version_lt(client, 2)) return;
const query = e.group(
e.select(e.Movie, m => ({
filter: e.op(m.release_year, ">", 2015),
})),
movie => {
const release_year = movie.release_year;
return {
release_year: true,
title: true,
characters: {name: true},
by: {
release_year,
},
};
}
);

type query = $infer<typeof query>;
const result = await query.run(client);
tc.assert<
tc.IsExact<
query,
{
grouping: string[];
key: {
release_year: number | null;
};
elements: {
release_year: number;
title: string;
characters: {
name: string;
}[];
}[];
}[]
>
>(true);

expect(result).toMatchObject([
{
grouping: ["release_year"],
},
]);
expect(result.length).toEqual(1);
expect(result[0].elements.length).toEqual(1);
expect(result[0].elements[0].title).toBeDefined();
expect(result[0].elements[0].release_year).toBeDefined();
expect(result[0].elements[0].characters[0].name).toBeDefined();
});

test("multiple keys", async () => {
if (await version_lt(client, 2)) return;
const query = e.group(e.Movie, movie => {
Expand Down
2 changes: 1 addition & 1 deletion src/syntax/toEdgeQL.ts
Expand Up @@ -1045,7 +1045,7 @@ function renderEdgeQL(
const selectStatement: string[] = [];
const groupStatement: string[] = [];

const groupTarget = renderEdgeQL(expr.__scope__, ctx);
const groupTarget = renderEdgeQL(expr.__scope__, ctx, false);
groupStatement.push(`GROUP ${groupTarget}`);

// render scoped withvars in using
Expand Down

0 comments on commit b14445f

Please sign in to comment.