using System.Text; using System.Threading.Tasks; using Util.Helpers; using Util.Templates.Razor.Tests.Integration.Samples.Models; using Xunit; namespace Util.Templates.Razor.Tests.Integration; /// /// Razor模板引擎测试 - 渲染模板字符串 /// public partial class RazorTemplateEngineTest { /// /// Razor模板引擎 /// private readonly ITemplateEngine _templateEngine; /// /// 测试初始化 /// public RazorTemplateEngineTest( ITemplateEngine templateEngine ) { _templateEngine = templateEngine; _templateEngine.ClearTemplateCache(); } /// /// 测试渲染模板 - 渲染没有数据的模板 /// [Fact] public void TestRender_1() { var result = _templateEngine.Render( "a" ); Assert.Equal( "a", result ); } /// /// 测试渲染模板 - 渲染带变量模板,使用匿名对象传递数据 /// [Fact] public void TestRender_2() { var result = _templateEngine.Render( "hello @Model.Name", new { Name = "util" } ); Assert.Equal( "hello util", result ); } /// /// 测试渲染模板 - 渲染带变量模板,传递TestModel对象 /// [Fact] public void TestRender_3() { var model = new TestModel { Name = "util" }; var result = _templateEngine.Render( "hello @Model.Name", model ); Assert.Equal( "hello util", result ); } /// /// 测试渲染模板 - 添加程序集引用 /// [Fact] public void TestRender_4() { RazorTemplateEngine.DisableAutoLoadAssemblies(); var template = new StringBuilder(); template.Append( "@using Util.Templates.Razor.Tests.Integration.Samples.Models\n" ); template.Append( "@inherits RazorEngineCore.RazorEngineTemplateBase\n" ); template.Append( "hello,@Model.Name" ); var model = new TestModel { Name = "util" }; var result = _templateEngine.Render( template.ToString(), model, builder => builder.AddAssemblyReference( GetType() ) ); Assert.Equal( "hello,util", result ); } /// /// 测试渲染模板 /// [Fact] public async Task TestRenderAsync_1() { var result = await _templateEngine.RenderAsync( "a" ); Assert.Equal( "a", result ); } /// /// 测试渲染模板 - 渲染带变量模板,使用匿名对象传递数据 /// [Fact] public async Task TestRenderAsync_2() { var result = await _templateEngine.RenderAsync( "hello @Model.Name", new { Name = "util" } ); Assert.Equal( "hello util", result ); } /// /// 测试渲染模板 - 渲染带变量模板,传递TestModel对象 /// [Fact] public async Task TestRenderAsync_3() { var model = new TestModel { Name = "util" }; var result = await _templateEngine.RenderAsync( "hello @Model.Name", model ); Assert.Equal( "hello util", result ); } /// /// 测试渲染模板 - 添加程序集引用 /// [Fact] public async Task TestRenderAsync_4() { RazorTemplateEngine.DisableAutoLoadAssemblies(); var template = new StringBuilder(); template.Append( "@using Util.Templates.Razor.Tests.Integration.Samples.Models\n" ); template.Append( "@inherits RazorEngineCore.RazorEngineTemplateBase\n" ); template.Append( "hello,@Model.Name" ); var model = new TestModel { Name = "util" }; var result = await _templateEngine.RenderAsync( template.ToString(), model, builder => builder.AddAssemblyReference( GetType() ) ); Assert.Equal( "hello,util", result ); } /// /// 测试渲染模板并保存到文件 /// [Fact] public void TestSave() { var filePath = Common.GetPhysicalPath( "result/save.txt" ); Util.Helpers.File.Delete( filePath ); var model = new TestModel { Name = "util" }; _templateEngine.Save( "hello @Model.Name", model, filePath ); var result = Util.Helpers.File.ReadToString( filePath ); Assert.Equal( "hello util", result ); } /// /// 测试渲染模板并保存到文件 /// [Fact] public async Task TestSaveAsync() { var filePath = Common.GetPhysicalPath( "result/saveasync.txt" ); Util.Helpers.File.Delete( filePath ); var model = new TestModel { Name = "util" }; await _templateEngine.SaveAsync( "hello @Model.Name", model, filePath ); var result = await Util.Helpers.File.ReadToStringAsync( filePath ); Assert.Equal( "hello util", result ); } }