aspnetcore/test/Microsoft.AspNetCore.Razor..../IntegrationTests/BasicIntegrationTest.cs

118 lines
3.8 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNetCore.Razor.Language.Legacy;
using Xunit;
namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
{
public class BasicIntegrationTest : IntegrationTestBase
{
[Fact]
public void Empty()
{
// Arrange
var projectEngine = CreateProjectEngine();
var projectItem = CreateProjectItem();
// Act
var codeDocument = projectEngine.Process(projectItem);
// Assert
AssertDocumentNodeMatchesBaseline(codeDocument.GetDocumentIntermediateNode());
}
[Fact]
public void HelloWorld()
{
// Arrange
var projectEngine = CreateProjectEngine();
var projectItem = CreateProjectItem();
// Act
var codeDocument = projectEngine.Process(projectItem);
// Assert
AssertDocumentNodeMatchesBaseline(codeDocument.GetDocumentIntermediateNode());
}
[Fact]
public void CustomDirective()
{
// Arrange
var projectEngine = CreateProjectEngine(b =>
{
b.AddDirective(DirectiveDescriptor.CreateDirective("test", DirectiveKind.SingleLine));
});
var projectItem = CreateProjectItem();
// Act
var codeDocument = projectEngine.Process(projectItem);
// Assert
AssertDocumentNodeMatchesBaseline(codeDocument.GetDocumentIntermediateNode());
}
[Fact]
public void BuildEngine_CallProcess()
{
// Arrange
var projectEngine = CreateProjectEngine();
var projectItem = new TestRazorProjectItem("Index.cshtml");
// Act
var codeDocument = projectEngine.Process(projectItem);
// Assert
Assert.NotNull(codeDocument.GetSyntaxTree());
Assert.NotNull(codeDocument.GetDocumentIntermediateNode());
}
[Fact]
public void CSharpDocument_Runtime_PreservesParserErrors()
{
// Arrange
var projectEngine = CreateProjectEngine();
var projectItem = new TestRazorProjectItem("test.cshtml")
{
Content = "@!!!"
};
var expected = RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation("test.cshtml", 1, 0, 1), contentLength: 1),
"!");
// Act
var codeDocument = projectEngine.Process(projectItem);
// Assert
var csharpDocument = codeDocument.GetCSharpDocument();
var error = Assert.Single(csharpDocument.Diagnostics);
Assert.Equal(expected, error);
}
[Fact]
public void CSharpDocument_DesignTime_PreservesParserErrors()
{
// Arrange
var projectEngine = CreateProjectEngine();
var projectItem = new TestRazorProjectItem("test.cshtml")
{
Content = "@{"
};
var expected = RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation("test.cshtml", 1, 0, 1), contentLength: 1), Resources.BlockName_Code, "}", "{");
// Act
var codeDocument = projectEngine.ProcessDesignTime(projectItem);
// Assert
var csharpDocument = codeDocument.GetCSharpDocument();
var error = Assert.Single(csharpDocument.Diagnostics);
Assert.Equal(expected, error);
}
}
}