Skip to content

Commit 40af4af

Browse files
committed
Fixed issues with IsSelected and composite lists. (#7941)
1 parent 2d9d70e commit 40af4af

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
@@ -811,6 +811,49 @@ public async Task Select_Category_Level_2()
811811
result.MatchMarkdownSnapshot();
812812
}
813813

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

9891058
public class BrokenQuery
@@ -1071,4 +1140,8 @@ public class Audit
10711140
public string EditedBy { get; set; }
10721141
public string EditedAt { get; set; }
10731142
}
1143+
1144+
public record Book(string Title, Author Author);
1145+
1146+
public record Author(string Name);
10741147
}
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)