-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDefaultTemplateFactoryTests.cs
More file actions
83 lines (67 loc) · 2.7 KB
/
DefaultTemplateFactoryTests.cs
File metadata and controls
83 lines (67 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#if ASYNC_API
namespace ApiCodeGenerator.AsyncApi.Tests;
#else
namespace ApiCodeGenerator.OpenApi.Tests;
#endif
public class DefaultTemplateFactoryTests
{
[Test]
public void SplitTemplateCacheBySource()
{
var settings = new NJsonSchema.CodeGeneration.CSharp.CSharpGeneratorSettings();
var src1 = new TestTemplateProvider("template1");
var factory1 = new DefaultTemplateFactory(settings, [src1]);
var src2 = new TestTemplateProvider("template2");
var factory2 = new DefaultTemplateFactory(settings, [src2]);
var actual1 = factory1.CreateTemplate("CSharp", "Class", new object());
var actual2 = factory2.CreateTemplate("CSharp", "Class", new object());
Assert.AreEqual("template1", actual1.Render());
Assert.AreEqual("template2", actual2.Render());
}
[Test]
public void CallBase()
{
var settings = new NJsonSchema.CodeGeneration.CSharp.CSharpGeneratorSettings();
var src1 = new TestTemplateProvider("template1\n{% template Class.base %}");
var src2 = new TestTemplateProvider("template2\n{% template Class.base %}");
var src3 = new TestTemplateProvider("template3");
var factory = new DefaultTemplateFactory(settings, [src1, src2, src3]);
settings.TemplateFactory = factory;
var actual = factory.CreateTemplate("CSharp", "Class", new object()).Render();
Assert.AreEqual("template1\ntemplate2\ntemplate3", actual);
}
[Test]
public void TemplateDir()
{
var settings = new NJsonSchema.CodeGeneration.CSharp.CSharpGeneratorSettings();
var src1 = new TestTemplateProvider("template1\n{% template Class.base %}");
var factory = new DefaultTemplateFactory(settings, [src1]);
settings.TemplateFactory = factory;
settings.TemplateDirectory = "Templates";
var actual = factory.CreateTemplate("CSharp", "File", new object()).Render();
Assert.AreEqual("overrided", actual);
}
private class TestTemplateProvider : ITemplateProvider
{
private readonly string _providerKey = Guid.NewGuid().ToString();
private readonly string _templateText;
public TestTemplateProvider(string templateText)
{
_templateText = templateText;
}
string? ITemplateProvider.GetFullName(string name, string language)
{
return name == "Class"
? $"{_providerKey}.{name}"
: null;
}
string? ITemplateProvider.GetTemplateText(string name, string language)
{
if (name.StartsWith(_providerKey))
{
return _templateText;
}
return null;
}
}
}