Skip to content

Commit 6478048

Browse files
committed
prevent filename/operation name causing duplicate types
fixes #8
1 parent 9df8b4f commit 6478048

7 files changed

Lines changed: 82 additions & 15 deletions

File tree

Tocsoft.GraphQLCodeGen.Cli/Models/ViewModel.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,15 @@ private string GenerateType(SetSelection selection, string operationName = null)
9999

100100
string name = FindBestName(operationName ?? selection.RootType.Name, "Result");
101101

102-
TypeViewModel type = new TypeViewModel(name)
103-
{
104-
Fields = selection.Fields.Select(x => new NamedTypeViewModel()
105-
{
106-
Name = x.Name,
107-
Type = GenerateTypeReference(x)
108-
}).ToList()
109-
};
102+
TypeViewModel type = new TypeViewModel(name);
103+
110104
this.typeLookup.Add($"{operationName}_{selection.UniqueIdentifier}", type);
111105
this.typeCollection.Add(type);
106+
type.Fields = selection.Fields.Select(x => new NamedTypeViewModel()
107+
{
108+
Name = x.Name,
109+
Type = GenerateTypeReference(x)
110+
}).ToList();
112111

113112
return type.Name;
114113
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#! schema: Schema.gql
2+
#! class: Test
3+
#! output: test.cs
4+
5+
query {
6+
quote(id: "safsa"){
7+
id
8+
}
9+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
schema {
2+
query: Query
3+
mutation: Mutation
4+
}
5+
6+
type Query {
7+
quote(id: string!): Quote
8+
}
9+
10+
type Quote {
11+
id: Date!
12+
}
13+
14+
scalar Date

Tocsoft.GraphQLCodeGen.Tests/Files/Issue_9/Schema.gql renamed to Tocsoft.GraphQLCodeGen.Tests/Files/Issue_9/Issue9Schema.gql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
type Query {
77
test(id: string!): Droid
88
}
9+
910
type Droid {
1011
nullable: Date
1112
nonnullable: Date!

Tocsoft.GraphQLCodeGen.Tests/Files/Issue_9/Query.gql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
#! schema: Schema.gql
1+
#! schema: Issue9Schema.gql
22
#! class: Test
33
#! output: test.cs
44

5-
query{
5+
query q{
66
test(id: "safsa"){
77
nullable,
88
nonnullable
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using Xunit;
7+
using CodeGenerator = Tocsoft.GraphQLCodeGen.CodeGenerator;
8+
9+
namespace Tocsoft.GraphQLCodeGen.Tests
10+
{
11+
public class Issue_8
12+
{
13+
FakeLogger logger;
14+
CodeGeneratorSettingsLoader settingsLoader;
15+
public Issue_8()
16+
{
17+
logger = new FakeLogger();
18+
settingsLoader = new CodeGeneratorSettingsLoader(logger);
19+
}
20+
21+
[Fact]
22+
public async Task TypeNamesShouldBeUnique()
23+
{
24+
var settings = settingsLoader.GenerateSettings(new[] { "./Files/Issue_8/Quote.gql" });
25+
26+
CodeGenerator generator = new CodeGenerator(logger, settings.Single());
27+
28+
await generator.LoadSource();
29+
generator.Parse();
30+
31+
var model = generator.Model;
32+
33+
var resultType = Assert.Single(model.Types.Where(x => x.Name == "QuoteResult"));
34+
}
35+
}
36+
}

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,29 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12+
<None Remove="Files\Issue_8\Quote.gql" />
13+
<None Remove="Files\Issue_9\Issue9Schema.gql" />
1214
<None Remove="Files\Issue_9\Query.gql" />
1315
<None Remove="Files\Issue_9\QueryGitHub.gql" />
14-
<None Remove="Files\Issue_9\Schema.gql" />
16+
<None Remove="Files\Issue_8\Schema.gql" />
1517
</ItemGroup>
1618

1719
<ItemGroup>
20+
<Content Include="Files\Issue_9\Query.gql">
21+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
22+
</Content>
1823
<Content Include="Files\Issue_9\QueryGitHub.gql">
19-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
24+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
2025
</Content>
21-
<Content Include="Files\Issue_9\Query.gql">
22-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
26+
<Content Include="Files\Issue_9\Issue9Schema.gql">
27+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
2328
</Content>
24-
<Content Include="Files\Issue_9\Schema.gql">
29+
<Content Include="Files\Issue_8\Quote.gql">
2530
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
2631
</Content>
32+
<Content Include="Files\Issue_8\Schema.gql">
33+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
34+
</Content>
2735
</ItemGroup>
2836

2937
<ItemGroup>

0 commit comments

Comments
 (0)