public RazorLightDependencyBuilder UseEmbeddedResourcesProject(Type rootType) { _services.RemoveAll <RazorLightProject>(); RazorLightProject project = new EmbeddedRazorProject(rootType); _services.AddSingleton <RazorLightProject>(project); return(this); }
public void Throws_TemplateNotFoundException_If_ProjectItem_NotExist() { var project = new EmbeddedRazorProject(typeof(Root).Assembly); var compiler = TestRazorTemplateCompiler.Create(project: project); Func <Task> task = new Func <Task>(() => compiler.CompileAsync("Not.Existing.Key")); Assert.ThrowsAsync <TemplateNotFoundException>(task); }
public async Task Ensure_TemplateKey_IsNormalizedAsync() { var project = new EmbeddedRazorProject(typeof(Root)); var item = await project.GetItemAsync(EMPTY_TEMPLATE); Assert.NotNull(item); Assert.Equal(item.Key, EMPTY_TEMPLATE + project.Extension); }
public void Assembly_IsApplied_OnConstructor_FromRootType() { var type = typeof(EmbeddedRazorProject); var project = new EmbeddedRazorProject(type); Assert.NotNull(project.Assembly); Assert.Equal(project.Assembly, type.Assembly); }
public RazorLightDependencyBuilder UseEmbeddedResourcesProject(Type rootType) { _services.RemoveAll <RazorLightProject>(); RazorLightProject project = new EmbeddedRazorProject(rootType); // ReSharper disable once RedundantTypeArgumentsOfMethod _services.AddSingleton <RazorLightProject>(project); return(this); }
public void RootType_IsApplied_OnConstructor() { var type = typeof(EmbeddedRazorProject); var project = new EmbeddedRazorProject(type); Assert.NotNull(project.RootType); Assert.Equal(project.RootType, type); }
public void TemplateKey_NotNormalized_On_NonFileSystemProject() { string templateKey = "key"; var project = new EmbeddedRazorProject(typeof(Root).Assembly); var compiler = TestRazorTemplateCompiler.Create(project: project); string normalizedKey = compiler.GetNormalizedKey(templateKey); Assert.NotNull(normalizedKey); Assert.Equal(templateKey, normalizedKey); }
public async Task Ensure_TemplateIsCompiled_ForExisting_ProjectItem() { var project = new EmbeddedRazorProject(typeof(Root).Assembly, "Assets.Embedded"); var compiler = TestRazorTemplateCompiler.Create(project: project); string templateKey = "Empty.cshtml"; var result = await compiler.CompileAsync(templateKey); Assert.NotNull(result); Assert.NotNull(result.TemplateAttribute.TemplateType); Assert.Equal(result.TemplateKey, templateKey); Assert.False(result.IsPrecompiled); }
public async Task Ensure_TemplateNotFoundException_KnownKeys_Null_When_EnableDebugMode_False() { var options = new RazorLightOptions { EnableDebugMode = false }; var project = new EmbeddedRazorProject(typeof(Root)); var compiler = TestRazorTemplateCompiler.Create(options, project); var item = new EmbeddedRazorProjectItem(typeof(Root), "Any.Key"); var exception = await compiler.CreateTemplateNotFoundException(item); Assert.Null(exception.KnownDynamicTemplateKeys); Assert.Null(exception.KnownProjectTemplateKeys); }
public async Task Ensure_GetKnownKeysAsync_Returns_Existing_Keys() { var project = new EmbeddedRazorProject(typeof(Root)); var knownKeys = await project.GetKnownKeysAsync(); Assert.NotNull(knownKeys); Assert.True(knownKeys.Count() > 0); foreach (var key in knownKeys) { var projectItem = await project.GetItemAsync(key); Assert.True(projectItem.Exists); } }
public async Task Ensure_GetKnownKeysAsync_Returns_Existing_Keys_When_RootNamespace_Set() { var project = new EmbeddedRazorProject(typeof(Root).Assembly, "RazorLight.Tests.Assets.Embedded"); var knownKeys = await project.GetKnownKeysAsync(); Assert.NotNull(knownKeys); Assert.True(knownKeys.Count() > 0); foreach (var key in knownKeys) { var projectItem = await project.GetItemAsync(key); Assert.True(projectItem.Exists); } }
public void Ensure_Throws_OnNull_Constructor_Dependencies() { var options = new RazorLightOptions(); var metadataManager = new DefaultMetadataReferenceManager(); var assembly = Assembly.GetCallingAssembly(); var project = new EmbeddedRazorProject(assembly); var compilerService = new RoslynCompilationService(metadataManager, assembly); var generator = new RazorSourceGenerator(DefaultRazorEngine.Instance, project); Action p1 = new Action(() => { new RazorTemplateCompiler(null, compilerService, project, options); }); Action p2 = new Action(() => { new RazorTemplateCompiler(generator, null, project, options); }); Action p3 = new Action(() => { new RazorTemplateCompiler(generator, compilerService, null, options); }); Action p4 = new Action(() => { new RazorTemplateCompiler(generator, compilerService, project, null); }); Assert.Throws <ArgumentNullException>(p1); Assert.Throws <ArgumentNullException>(p2); Assert.Throws <ArgumentNullException>(p3); Assert.Throws <ArgumentNullException>(p4); }
public async Task Ensure_TemplateNotFoundException_KnownDynamicTemplateKeys_Exist_When_EnableDebugMode_True() { var dynamicTemplateKeys = new[] { "dynamicKey1", "dynamicKey2" }; var project = new EmbeddedRazorProject(typeof(Root).Assembly, "RazorLight.Tests.Assets.Embedded"); var options = new RazorLightOptions { EnableDebugMode = true }; foreach (var dynamicKey in dynamicTemplateKeys) { options.DynamicTemplates.Add(dynamicKey, "Content"); } var compiler = TestRazorTemplateCompiler.Create(options, project); var item = new EmbeddedRazorProjectItem(typeof(Root), "Any.Key"); var exception = await compiler.CreateTemplateNotFoundException(item); Assert.NotNull(exception.KnownDynamicTemplateKeys); Assert.Equal(dynamicTemplateKeys.OrderBy(x => x), exception.KnownDynamicTemplateKeys.OrderBy(x => x)); }
/// <summary> /// Creates RazorLightEngine with a embedded resource razor project /// </summary> /// <param name="rootType">Type of the root.</param> /// <param name="options">Engine options</param> /// <returns>Instance of RazorLightEngine</returns> public virtual RazorLightEngine ForEmbeddedResources(Type rootType, RazorLightOptions options) { var project = new EmbeddedRazorProject(rootType); return(Create(project, options)); }
public void Ensure_Throws_OnNullTemplateKey() { var project = new EmbeddedRazorProject(typeof(EmbeddedRazorProject)); Assert.ThrowsAsync <ArgumentNullException>(async() => { await project.GetItemAsync(null); }); }