using System.Text;
using Moq;
using Util.Ui.Razor.Internal;
using Xunit;
namespace Util.Ui.Tests.Razor;
///
/// 分部视图路径解析器测试
///
public class PartViewPathResolverTest {
///
/// 分部视图路径解析器
///
private readonly PartViewPathResolver _resolver;
///
/// 测试初始化
///
public PartViewPathResolverTest() {
var mockFinder = new Mock();
mockFinder.Setup( t => t.Find( It.IsAny(), It.IsAny() ) ).Returns( ( _, partName ) => partName );
_resolver = new PartViewPathResolver( mockFinder.Object );
}
///
/// 测试解析分部视图路径 - 解析空值
///
[Fact]
public void TestResolve_1() {
Assert.Empty( _resolver.Resolve( null, "a" ) );
Assert.Empty( _resolver.Resolve( "a", null ) );
Assert.Empty( _resolver.Resolve( "a", "" ) );
Assert.Empty( _resolver.Resolve( "a", " " ) );
Assert.Empty( _resolver.Resolve( "a", "a" ) );
}
///
/// 测试解析分部视图路径 - 包含1个分部视图
///
[Fact]
public void TestResolve_2() {
var result = _resolver.Resolve( "Views/Home", "@page\r\n\r\ntest\r\n\r\n\r\n\r\n abc" );
Assert.Single( result );
Assert.Equal( "Part", result[0] );
}
///
/// 测试解析分部视图路径 - 包含2个分部视图
///
[Fact]
public void TestResolve_3() {
var content = new StringBuilder();
content.AppendLine( " @page\r\n\r\ntest\r\n\r\n\r\n\r\n abc " );
content.AppendLine( "r\ntest\r\n\r\n\r\n\r\n < partial name = \"Part2\" / > bbb " );
var result = _resolver.Resolve( "Views/Home", content.ToString() );
Assert.Equal( 2, result.Count );
Assert.Equal( "Part", result[0] );
Assert.Equal( "Part2", result[1] );
}
}