public void TestGenerateOutputOnEmptySpec() { // arrange var spec = new Spec { Targets = new Dictionary <string, TargetInfo> { { Constants.TypeScriptTarget, new TargetInfo { Path = "some_path" } } } }; var generator = new TypeScriptGenerator(); // act var outputs = generator.GenerateOutputs(spec); // assert Assert.Equal(0, outputs.Count()); }
public void TestGenerateOutputWithEnum() { // arrange var spec = new Spec { Enums = new Dictionary <string, List <EnumMember> > { { "blog_entry_status", new List <EnumMember> { new EnumMember { Name = "draft" }, new EnumMember { Name = "final" } } } }, Targets = new Dictionary <string, TargetInfo> { { Constants.TypeScriptTarget, new TargetInfo { Path = "some_path" } } } }; var generator = new TypeScriptGenerator(); // act var outputs = generator.GenerateOutputs(spec); // assert var outputList = outputs?.ToList(); var indexOutput = outputList.FirstOrDefault(_ => _.Path == Path.Combine("some_path", "index.ts")); var blogEntryStatusOutput = outputList.FirstOrDefault(_ => _.Path == Path.Combine("some_path", "blog-entry-status.ts")); var indexFile = (TypeScriptFile)indexOutput?.GenerationRoot; var blogEntryStatusOutputFile = (TypeScriptFile)blogEntryStatusOutput?.GenerationRoot; Assert.Equal(2, outputList?.Count); Assert.NotNull(indexOutput); Assert.NotNull(blogEntryStatusOutput); Assert.True( indexFile .Contents .Cast <TypeScriptReExportStatement>() .HasContents(_ => _.Object == null && _.FileName == "blog-entry-status")); Assert.True( blogEntryStatusOutputFile .Contents.OfType <TypeScriptEnum>() .HasContents( _ => _.Name == "BlogEntryStatus" && _.Members.HasContents( __ => __.Name == "Draft" && __.Value == null, __ => __.Name == "Final" && __.Value == null))); Assert.True( blogEntryStatusOutputFile .Contents.OfType <TypeScriptExportStatement>() .HasContents( _ => _.IsDefault && _.Object == "BlogEntryStatus")); }
public void TestGenerateOutputWithClass() { // arrange var spec = new Spec { Entities = new Dictionary <string, EntityInfo> { { "blog_entry", new EntityInfo { Members = new OrderedDictionary <string, IEntityMemberInfo> { { "id", new EntityMemberInfo { Type = "int" } }, { "title", new EntityMemberInfo { Type = "string" } } } } } }, Targets = new Dictionary <string, TargetInfo> { { Constants.TypeScriptTarget, new TargetInfo { Path = "some_path" } } } }; var typeScriptFiles = new GeneratorOutput[] { new GeneratorOutput { Path = Path.Combine("some_path", "blog-entry.ts"), GenerationRoot = TypeScriptFileBuilder.Start() .Content( TypeScriptExportStatementBuilder.Start() .DefaultExport( TypeScriptClassBuilder.Start() .Name("BlogEntry") .Member("id", "number") .Member("title", "string").Build() ) .Build()) .Build() }, new GeneratorOutput { Path = Path.Combine("some_path", "index.ts"), GenerationRoot = TypeScriptFileBuilder.Start() .Content(new TypeScriptReExportStatement { FileName = "blog-entry" }) .Build() } }; var ammendment = new AmmendmentFactory().CreateAmmendment(Constants.TypeScriptTarget); ammendment.AmmedSpecification(spec); var generator = new TypeScriptGenerator(); // act var outputs = generator.GenerateOutputs(spec); // assert Assert.NotNull(outputs); Assert.True(outputs.SequenceEqual(typeScriptFiles, EqualityComparer <GeneratorOutput> .Default)); }