Skip to content

Commit 65fdaed

Browse files
authored
Fixed issues with IsSelected and composite lists. (#7941)
1 parent 02a5cc1 commit 65fdaed

File tree

4 files changed

+112
-12
lines changed

4 files changed

+112
-12
lines changed

src/HotChocolate/Core/src/Types/Extensions/ResolverContextExtensions.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -662,13 +662,13 @@ public static bool IsSelected(this IResolverContext context, string fieldName)
662662
nameof(fieldName));
663663
}
664664

665-
if (!context.Selection.Type.IsCompositeType())
665+
var namedType = context.Selection.Type.NamedType();
666+
667+
if (!namedType.IsCompositeType())
666668
{
667669
return false;
668670
}
669671

670-
var namedType = context.Selection.Type.NamedType();
671-
672672
if (namedType.IsAbstractType())
673673
{
674674
foreach (var possibleType in context.Schema.GetPossibleTypes(namedType))
@@ -741,13 +741,13 @@ public static bool IsSelected(this IResolverContext context, string fieldName1,
741741
nameof(fieldName2));
742742
}
743743

744-
if (!context.Selection.Type.IsCompositeType())
744+
var namedType = context.Selection.Type.NamedType();
745+
746+
if (!namedType.IsCompositeType())
745747
{
746748
return false;
747749
}
748750

749-
var namedType = context.Selection.Type.NamedType();
750-
751751
if (namedType.IsAbstractType())
752752
{
753753
foreach (var possibleType in context.Schema.GetPossibleTypes(namedType))
@@ -839,13 +839,13 @@ public static bool IsSelected(
839839
nameof(fieldName3));
840840
}
841841

842-
if (!context.Selection.Type.IsCompositeType())
842+
var namedType = context.Selection.Type.NamedType();
843+
844+
if (!namedType.IsCompositeType())
843845
{
844846
return false;
845847
}
846848

847-
var namedType = context.Selection.Type.NamedType();
848-
849849
if (namedType.IsAbstractType())
850850
{
851851
foreach (var possibleType in context.Schema.GetPossibleTypes(namedType))
@@ -913,13 +913,13 @@ public static bool IsSelected(
913913
throw new ArgumentNullException(nameof(fieldNames));
914914
}
915915

916-
if (!context.Selection.Type.IsCompositeType())
916+
var namedType = context.Selection.Type.NamedType();
917+
918+
if (!namedType.IsCompositeType())
917919
{
918920
return false;
919921
}
920922

921-
var namedType = context.Selection.Type.NamedType();
922-
923923
if (namedType.IsAbstractType())
924924
{
925925
foreach (var possibleType in context.Schema.GetPossibleTypes(namedType))

src/HotChocolate/Core/test/Types.Tests/Resolvers/IsSelectedTests.cs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,49 @@ public async Task Select_Category_Level_2()
810810
result.MatchMarkdownSnapshot();
811811
}
812812

813+
[Fact]
814+
public async Task IsSelected_Pattern_Lists()
815+
{
816+
var result =
817+
await new ServiceCollection()
818+
.AddGraphQL()
819+
.AddQueryType<Query>()
820+
.ExecuteRequestAsync(
821+
"""
822+
query {
823+
user_Attribute_List {
824+
email
825+
tags {
826+
name
827+
}
828+
}
829+
}
830+
""");
831+
832+
833+
result.MatchMarkdownSnapshot();
834+
}
835+
836+
[Fact]
837+
public async Task IsSelected_Pattern_Root_Lists()
838+
{
839+
var result =
840+
await new ServiceCollection()
841+
.AddGraphQL()
842+
.AddQueryType<Query>()
843+
.ExecuteRequestAsync(
844+
"""
845+
query {
846+
books {
847+
author { name }
848+
}
849+
}
850+
""");
851+
852+
853+
result.MatchMarkdownSnapshot();
854+
}
855+
813856
public class Query
814857
{
815858
public static User DummyUser { get; } =
@@ -983,6 +1026,32 @@ public User GetUser_Context_4(IResolverContext context)
9831026
City = "f",
9841027
};
9851028
}
1029+
1030+
public User GetUser_Attribute_List(
1031+
[IsSelected("tags { name }")]
1032+
bool isSelected,
1033+
IResolverContext context)
1034+
{
1035+
((IMiddlewareContext)context).OperationResult.SetExtension("isSelected", isSelected);
1036+
return new User
1037+
{
1038+
Name = "a",
1039+
Email = "b",
1040+
Password = "c",
1041+
PhoneNumber = "d",
1042+
Address = "e",
1043+
City = "f",
1044+
};
1045+
}
1046+
1047+
public List<Book> GetBooks(
1048+
[IsSelected("author")]
1049+
bool isSelected,
1050+
IResolverContext context)
1051+
{
1052+
((IMiddlewareContext)context).OperationResult.SetExtension("isSelected", isSelected);
1053+
return new List<Book>();
1054+
}
9861055
}
9871056

9881057
public class BrokenQuery
@@ -1070,4 +1139,8 @@ public class Audit
10701139
public string EditedBy { get; set; }
10711140
public string EditedAt { get; set; }
10721141
}
1142+
1143+
public record Book(string Title, Author Author);
1144+
1145+
public record Author(string Name);
10731146
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# IsSelected_Pattern_Lists
2+
3+
```json
4+
{
5+
"data": {
6+
"user_Attribute_List": {
7+
"email": "b",
8+
"tags": null
9+
}
10+
},
11+
"extensions": {
12+
"isSelected": true
13+
}
14+
}
15+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# IsSelected_Pattern_Root_Lists
2+
3+
```json
4+
{
5+
"data": {
6+
"books": []
7+
},
8+
"extensions": {
9+
"isSelected": true
10+
}
11+
}
12+
```

0 commit comments

Comments
 (0)