Skip to content

Commit f0f4bb9

Browse files
author
Chris Podmore
committed
Resolves issue #19 where non-named mutations are not generated correctly
1 parent 326b09f commit f0f4bb9

File tree

6 files changed

+85
-7
lines changed

6 files changed

+85
-7
lines changed

Tocsoft.GraphQLCodeGen.Cli/AstPrinter.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -396,16 +396,13 @@ private string PrintOperationDefinition(GraphQLOperationDefinition definition)
396396
.ToString()
397397
.ToLower();
398398

399-
return string.IsNullOrWhiteSpace(name) &&
400-
string.IsNullOrWhiteSpace(name) &&
401-
string.IsNullOrWhiteSpace(name) &&
402-
definition.Operation != OperationType.Query
403-
? selectionSet
404-
: this.Join(
399+
var variables = string.IsNullOrWhiteSpace(name) ? variableDefinitions : this.Join(new[] { name, variableDefinitions });
400+
401+
return this.Join(
405402
new[]
406403
{
407404
operation,
408-
this.Join(new[] { name, variableDefinitions }),
405+
variables,
409406
directives,
410407
selectionSet
411408
},
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#! settings:./settings.json
2+
3+
mutation IfNamedUseNameInstead ($repositoyId : ID!){
4+
addStar(input :{clientMutationId : "123", starrableId :$repositoyId }){
5+
starrable {
6+
viewerHasStarred
7+
}
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#! settings:./settings.json
2+
3+
mutation ($repositoyId : ID!){
4+
addStar(input :{clientMutationId : "123", starrableId :$repositoyId }){
5+
starrable {
6+
viewerHasStarred
7+
}
8+
}
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"schema": "../GitHubSchema.json",
3+
"output": "Client.cs",
4+
"class": "Sample.Client.GitHub.GitHubClient"
5+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using System.Linq;
2+
using System.Threading.Tasks;
3+
using Xunit;
4+
5+
namespace Tocsoft.GraphQLCodeGen.Tests
6+
{
7+
public class Issue19
8+
{
9+
[Fact]
10+
public async Task GenerateNamedMutationIsCorrect()
11+
{
12+
var logger = new FakeLogger();
13+
var settingsLoader = new CodeGeneratorSettingsLoader(logger);
14+
15+
var paths = "./Files/Issue_19/named.gql";
16+
17+
var settings = settingsLoader.GenerateSettings(new CodeGeneratorSettingsLoaderDefaults(), new[] { paths });
18+
19+
var generator = new CodeGenerator(logger, settings.Single());
20+
21+
await generator.LoadSource();
22+
generator.Parse();
23+
generator.Render();
24+
var code = generator.GeneratedCode;
25+
26+
Assert.Contains("mutation IfNamedUseNameInstead($repositoyId: ID!)", code);
27+
}
28+
29+
[Fact]
30+
public async Task GenerateNonNamedMutationIsCorrect()
31+
{
32+
var logger = new FakeLogger();
33+
var settingsLoader = new CodeGeneratorSettingsLoader(logger);
34+
35+
var paths = "./Files/Issue_19/notNamed.gql";
36+
37+
var settings = settingsLoader.GenerateSettings(new CodeGeneratorSettingsLoaderDefaults(), new[] { paths });
38+
39+
var generator = new CodeGenerator(logger, settings.Single());
40+
41+
await generator.LoadSource();
42+
generator.Parse();
43+
generator.Render();
44+
var code = generator.GeneratedCode;
45+
46+
Assert.Contains("mutation ($repositoyId: ID!)", code);
47+
}
48+
}
49+
}

Tocsoft.GraphQLCodeGen.Tests/Tocsoft.GraphQLCodeGen.Tests.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,15 @@
9393
</ItemGroup>
9494

9595
<ItemGroup>
96+
<None Update="Files\Issue_19\notNamed.gql">
97+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
98+
</None>
99+
<None Update="Files\Issue_19\named.gql">
100+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
101+
</None>
102+
<None Update="Files\Issue_19\settings.json">
103+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
104+
</None>
96105
<None Update="Files\SchemaFiles\gqlsettings.json">
97106
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
98107
</None>

0 commit comments

Comments
 (0)