Files
AtomUI/tests/AtomUI.Desktop.Controls.Tests/Theme/DesktopControlsDataDisplayThemeScopeMigrationTests.cs

79 lines
2.5 KiB
C#

using Shouldly;
using Xunit;
namespace AtomUI.Desktop.Controls.Tests.Theme;
public class DesktopControlsDataDisplayThemeScopeMigrationTests
{
private static readonly string[] ControlDirectories =
[
"src/AtomUI.Desktop.Controls/Avatar",
"src/AtomUI.Desktop.Controls/Badge",
"src/AtomUI.Desktop.Controls/Calendar",
"src/AtomUI.Desktop.Controls/Card",
"src/AtomUI.Desktop.Controls/Carousel",
"src/AtomUI.Desktop.Controls/Descriptions",
"src/AtomUI.Desktop.Controls/Empty",
"src/AtomUI.Desktop.Controls/Expander",
"src/AtomUI.Desktop.Controls/ImagePreviewer",
"src/AtomUI.Desktop.Controls/ListBox",
"src/AtomUI.Desktop.Controls/ListView",
"src/AtomUI.Desktop.Controls/QRCode",
"src/AtomUI.Desktop.Controls/Segmented",
"src/AtomUI.Desktop.Controls/Statistic",
"src/AtomUI.Desktop.Controls/Tag",
"src/AtomUI.Desktop.Controls/Timeline",
"src/AtomUI.Desktop.Controls/TreeView"
];
private static readonly string[] ThemeDirectories =
ControlDirectories.Select(static directory => $"{directory}/Themes").ToArray();
[Fact]
public void DataDisplay_Controls_Remove_Legacy_Token_Scope_Registration()
{
foreach (var relativeDirectory in ControlDirectories)
{
var codeFiles = Directory.GetFiles(
GetRepoFile(relativeDirectory),
"*.cs",
SearchOption.AllDirectories);
codeFiles.ShouldNotBeEmpty();
foreach (var codeFile in codeFiles)
{
var text = File.ReadAllText(codeFile);
text.ShouldNotContain("RegisterTokenResourceScope");
text.ShouldNotContain("ScopeProvider");
}
}
}
[Fact]
public void DataDisplay_Control_Themes_Use_Explicit_Token_Resources()
{
foreach (var relativeDirectory in ThemeDirectories)
{
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(relativeDirectory);
}
}
private static string GetRepoFile(string relativePath)
{
var directory = AppContext.BaseDirectory;
while (directory is not null)
{
var candidate = Path.Combine(directory, relativePath);
if (File.Exists(candidate) || Directory.Exists(candidate))
{
return candidate;
}
directory = Directory.GetParent(directory)?.FullName;
}
throw new FileNotFoundException(relativePath);
}
}