diff --git a/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs b/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs index 9eaf4df..0a6bc32 100644 --- a/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs +++ b/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs @@ -63,7 +63,8 @@ public override CodeGenOutput GenerateOutput(ServiceInfo service) var moduleName = ModuleName ?? service.Name; var capModuleName = CodeGenUtility.Capitalize(moduleName); - var typesFileName = CodeGenUtility.Uncapitalize(moduleName) + "Types" + (FileNameSuffix ?? "") + (TypeScript ? ".ts" : ".js"); + var typesFileNameNoExt = CodeGenUtility.Uncapitalize(moduleName) + "Types" + (FileNameSuffix ?? ""); + var typesFileName = typesFileNameNoExt + (TypeScript ? ".ts" : ".js"); var clientFileName = CodeGenUtility.Uncapitalize(moduleName) + (FileNameSuffix ?? "") + (TypeScript ? ".ts" : ".js"); var serverFileName = CodeGenUtility.Uncapitalize(moduleName) + "Server" + (FileNameSuffix ?? "") + (TypeScript ? ".ts" : ".js"); @@ -144,8 +145,8 @@ public override CodeGenOutput GenerateOutput(ServiceInfo service) if (TypeScript) { - WriteImports(code, typeNames, $"./{CodeGenUtility.Uncapitalize(moduleName)}Types"); - code.WriteLine($"export * from './{CodeGenUtility.Uncapitalize(moduleName)}Types';"); + WriteImports(code, typeNames, $"./{typesFileNameNoExt}"); + code.WriteLine($"export * from './{typesFileNameNoExt}';"); } code.WriteLine(); @@ -385,8 +386,8 @@ public override CodeGenOutput GenerateOutput(ServiceInfo service) WriteImports(code, facilityImports, "facility-core"); if (TypeScript) { - WriteImports(code, typeNames, $"./{CodeGenUtility.Uncapitalize(moduleName)}Types"); - code.WriteLine($"export * from './{CodeGenUtility.Uncapitalize(moduleName)}Types';"); + WriteImports(code, typeNames, $"./{typesFileNameNoExt}"); + code.WriteLine($"export * from './{typesFileNameNoExt}';"); } code.WriteLine(); diff --git a/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs b/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs index 18ca755..31933e5 100644 --- a/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs +++ b/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs @@ -296,13 +296,29 @@ public void GenerateWithCustomFileNameSuffix(string suffix, bool isTypeScript) Assert.That(result.Files, Has.Count.EqualTo(isTypeScript ? 3 : 2)); var fullSuffix = suffix + (isTypeScript ? ".ts" : ".js"); Assert.That(result.Files, Has.One.Matches(f => f.Name == $"testApi{fullSuffix}")); - Assert.That(result.Files, Has.One.Matches(f => f.Name == $"testApi{fullSuffix}")); Assert.That(result.Files, Has.One.Matches(f => f.Name == $"testApiServer{fullSuffix}")); if (isTypeScript) Assert.That(result.Files.SingleOrDefault(f => f.Name == $"testApiTypes{fullSuffix}"), Is.Not.Null); } + [Test] + public void GenerateWithCustomFileNameSuffix_TypeScriptFileNameReferencesCorrect() + { + const string definition = "service TestApi { }"; + var parser = new FsdParser(); + var service = parser.ParseDefinition(new ServiceDefinitionText("TestApi.fsd", definition)); + var generator = new JavaScriptGenerator { GeneratorName = "JavaScriptGeneratorTests", TypeScript = true, Express = true, FileNameSuffix = ".g" }; + var result = generator.GenerateOutput(service); + Assert.That(result, Is.Not.Null); + + var clientFile = result.Files.Single(x => x.Name == "testApi.g.ts"); + Assert.That(clientFile.Text, Does.Contain("export * from './testApiTypes.g';")); + + var serverFile = result.Files.Single(x => x.Name == "testApiServer.g.ts"); + Assert.That(serverFile.Text, Does.Contain("export * from './testApiTypes.g';")); + } + private void ThrowsServiceDefinitionException(string definition, string message) { var parser = new FsdParser();