Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e1a282a

Browse files
authored
Fix types file references when using file-name-suffix option . (FacilityApi#63)
1 parent 2b22cfa commit e1a282a

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ public override CodeGenOutput GenerateOutput(ServiceInfo service)
6363

6464
var moduleName = ModuleName ?? service.Name;
6565
var capModuleName = CodeGenUtility.Capitalize(moduleName);
66-
var typesFileName = CodeGenUtility.Uncapitalize(moduleName) + "Types" + (FileNameSuffix ?? "") + (TypeScript ? ".ts" : ".js");
66+
var typesFileNameNoExt = CodeGenUtility.Uncapitalize(moduleName) + "Types" + (FileNameSuffix ?? "");
67+
var typesFileName = typesFileNameNoExt + (TypeScript ? ".ts" : ".js");
6768
var clientFileName = CodeGenUtility.Uncapitalize(moduleName) + (FileNameSuffix ?? "") + (TypeScript ? ".ts" : ".js");
6869
var serverFileName = CodeGenUtility.Uncapitalize(moduleName) + "Server" + (FileNameSuffix ?? "") + (TypeScript ? ".ts" : ".js");
6970

@@ -144,8 +145,8 @@ public override CodeGenOutput GenerateOutput(ServiceInfo service)
144145

145146
if (TypeScript)
146147
{
147-
WriteImports(code, typeNames, $"./{CodeGenUtility.Uncapitalize(moduleName)}Types");
148-
code.WriteLine($"export * from './{CodeGenUtility.Uncapitalize(moduleName)}Types';");
148+
WriteImports(code, typeNames, $"./{typesFileNameNoExt}");
149+
code.WriteLine($"export * from './{typesFileNameNoExt}';");
149150
}
150151

151152
code.WriteLine();
@@ -385,8 +386,8 @@ public override CodeGenOutput GenerateOutput(ServiceInfo service)
385386
WriteImports(code, facilityImports, "facility-core");
386387
if (TypeScript)
387388
{
388-
WriteImports(code, typeNames, $"./{CodeGenUtility.Uncapitalize(moduleName)}Types");
389-
code.WriteLine($"export * from './{CodeGenUtility.Uncapitalize(moduleName)}Types';");
389+
WriteImports(code, typeNames, $"./{typesFileNameNoExt}");
390+
code.WriteLine($"export * from './{typesFileNameNoExt}';");
390391
}
391392

392393
code.WriteLine();

tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,13 +296,29 @@ public void GenerateWithCustomFileNameSuffix(string suffix, bool isTypeScript)
296296
Assert.That(result.Files, Has.Count.EqualTo(isTypeScript ? 3 : 2));
297297
var fullSuffix = suffix + (isTypeScript ? ".ts" : ".js");
298298
Assert.That(result.Files, Has.One.Matches<CodeGenFile>(f => f.Name == $"testApi{fullSuffix}"));
299-
Assert.That(result.Files, Has.One.Matches<CodeGenFile>(f => f.Name == $"testApi{fullSuffix}"));
300299
Assert.That(result.Files, Has.One.Matches<CodeGenFile>(f => f.Name == $"testApiServer{fullSuffix}"));
301300

302301
if (isTypeScript)
303302
Assert.That(result.Files.SingleOrDefault(f => f.Name == $"testApiTypes{fullSuffix}"), Is.Not.Null);
304303
}
305304

305+
[Test]
306+
public void GenerateWithCustomFileNameSuffix_TypeScriptFileNameReferencesCorrect()
307+
{
308+
const string definition = "service TestApi { }";
309+
var parser = new FsdParser();
310+
var service = parser.ParseDefinition(new ServiceDefinitionText("TestApi.fsd", definition));
311+
var generator = new JavaScriptGenerator { GeneratorName = "JavaScriptGeneratorTests", TypeScript = true, Express = true, FileNameSuffix = ".g" };
312+
var result = generator.GenerateOutput(service);
313+
Assert.That(result, Is.Not.Null);
314+
315+
var clientFile = result.Files.Single(x => x.Name == "testApi.g.ts");
316+
Assert.That(clientFile.Text, Does.Contain("export * from './testApiTypes.g';"));
317+
318+
var serverFile = result.Files.Single(x => x.Name == "testApiServer.g.ts");
319+
Assert.That(serverFile.Text, Does.Contain("export * from './testApiTypes.g';"));
320+
}
321+
306322
private void ThrowsServiceDefinitionException(string definition, string message)
307323
{
308324
var parser = new FsdParser();

0 commit comments

Comments
 (0)