diff --git a/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/DataLoaderTests.cs b/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/DataLoaderTests.cs index 3b756b89190..1399a2e8f48 100644 --- a/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/DataLoaderTests.cs +++ b/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/DataLoaderTests.cs @@ -119,6 +119,45 @@ public async Task Filter_With_Filtering() .MatchMarkdownSnapshot(); } + [Fact] + public async Task Filter_With_Aliased_Filtering() + { + // Arrange + var queries = new List(); + var context = new CatalogContext(); + await context.SeedAsync(); + + // Act + var result = await new ServiceCollection() + .AddScoped(_ => queries) + .AddTransient(_ => context) + .AddGraphQL() + .AddFiltering() + .AddQueryType() + .AddPagingArguments() + .ModifyRequestOptions(o => o.IncludeExceptionDetails = true) + .ExecuteRequestAsync( + """ + { + a: filterContext(brandId: 1, where: { name: { startsWith: "Product" } }) { + name + } + b: filterContext(brandId: 1, where: { name: { eq: "Product 0-0" } }) { + name + } + } + """); + + Snapshot + .Create( + postFix: TestEnvironment.TargetFramework == "NET10_0" + ? TestEnvironment.TargetFramework + : null) + .AddSql(queries) + .AddResult(result) + .MatchMarkdownSnapshot(); + } + [Fact] public async Task Filter_With_Expression_Null() { diff --git a/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/__snapshots__/DataLoaderTests.Filter_With_Aliased_Filtering.md b/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/__snapshots__/DataLoaderTests.Filter_With_Aliased_Filtering.md new file mode 100644 index 00000000000..b50d5e8f149 --- /dev/null +++ b/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/__snapshots__/DataLoaderTests.Filter_With_Aliased_Filtering.md @@ -0,0 +1,44 @@ +# Filter_With_Aliased_Filtering + +## SQL + +```text +.param set @__keys_0 '[1]' +.param set @__p_1_rewritten 'Product%' + +SELECT "p"."Id", "p"."AvailableStock", "p"."BrandId", "p"."Description", "p"."ImageFileName", "p"."MaxStockThreshold", "p"."Name", "p"."OnReorder", "p"."Price", "p"."RestockThreshold", "p"."TypeId" +FROM "Products" AS "p" +WHERE "p"."BrandId" IN ( + SELECT "k"."value" + FROM json_each(@__keys_0) AS "k" +) AND "p"."Name" LIKE @__p_1_rewritten ESCAPE '\' +.param set @__keys_0 '[1]' +.param set @__p_1 'Product 0-0' + +SELECT "p"."Id", "p"."AvailableStock", "p"."BrandId", "p"."Description", "p"."ImageFileName", "p"."MaxStockThreshold", "p"."Name", "p"."OnReorder", "p"."Price", "p"."RestockThreshold", "p"."TypeId" +FROM "Products" AS "p" +WHERE "p"."BrandId" IN ( + SELECT "k"."value" + FROM json_each(@__keys_0) AS "k" +) AND "p"."Name" = @__p_1 +``` + +## Result + +```json +{ + "data": { + "a": [ + { + "name": "Product 0-0" + } + ], + "b": [ + { + "name": "Product 0-0" + } + ] + } +} +``` + diff --git a/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/__snapshots__/DataLoaderTests.Filter_With_Aliased_Filtering_NET10_0.md b/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/__snapshots__/DataLoaderTests.Filter_With_Aliased_Filtering_NET10_0.md new file mode 100644 index 00000000000..68d93e76a69 --- /dev/null +++ b/src/HotChocolate/Data/test/Data.Filters.SqlServer.Tests/__snapshots__/DataLoaderTests.Filter_With_Aliased_Filtering_NET10_0.md @@ -0,0 +1,44 @@ +# Filter_With_Aliased_Filtering + +## SQL + +```text +.param set @keys '[1]' +.param set @p_startswith 'Product%' + +SELECT "p"."Id", "p"."AvailableStock", "p"."BrandId", "p"."Description", "p"."ImageFileName", "p"."MaxStockThreshold", "p"."Name", "p"."OnReorder", "p"."Price", "p"."RestockThreshold", "p"."TypeId" +FROM "Products" AS "p" +WHERE "p"."BrandId" IN ( + SELECT "k"."value" + FROM json_each(@keys) AS "k" +) AND "p"."Name" LIKE @p_startswith ESCAPE '\' +.param set @keys '[1]' +.param set @p 'Product 0-0' + +SELECT "p"."Id", "p"."AvailableStock", "p"."BrandId", "p"."Description", "p"."ImageFileName", "p"."MaxStockThreshold", "p"."Name", "p"."OnReorder", "p"."Price", "p"."RestockThreshold", "p"."TypeId" +FROM "Products" AS "p" +WHERE "p"."BrandId" IN ( + SELECT "k"."value" + FROM json_each(@keys) AS "k" +) AND "p"."Name" = @p +``` + +## Result + +```json +{ + "data": { + "a": [ + { + "name": "Product 0-0" + } + ], + "b": [ + { + "name": "Product 0-0" + } + ] + } +} +``` +