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

82 lines
3.4 KiB
C#

using Shouldly;
using Xunit;
namespace AtomUI.Desktop.Controls.Tests.Theme;
public class DesktopControlsNavigationThemeScopeMigrationTests
{
[Fact]
public void Navigation_Controls_Remove_Legacy_Token_Scope_Registration()
{
AssertNoLegacyScope(
"src/AtomUI.Desktop.Controls/Breadcrumb/BreadcrumbToken.cs",
"src/AtomUI.Desktop.Controls/Breadcrumb/Breadcrumb.cs",
"src/AtomUI.Desktop.Controls/Menu/MenuToken.cs",
"src/AtomUI.Desktop.Controls/Menu/Menu.cs",
"src/AtomUI.Desktop.Controls/Menu/ContextMenu.cs",
"src/AtomUI.Desktop.Controls/Menu/MenuSeparator.cs",
"src/AtomUI.Desktop.Controls/Flyouts/MenuFlyoutPresenter.cs",
"src/AtomUI.Desktop.Controls/NavMenu/NavMenuToken.cs",
"src/AtomUI.Desktop.Controls/NavMenu/NavMenu.cs",
"src/AtomUI.Desktop.Controls/Pagination/PaginationToken.cs",
"src/AtomUI.Desktop.Controls/Pagination/Pagination.cs",
"src/AtomUI.Desktop.Controls/Pagination/SimplePagination.cs",
"src/AtomUI.Desktop.Controls/Steps/StepsToken.cs",
"src/AtomUI.Desktop.Controls/Steps/Steps.cs",
"src/AtomUI.Desktop.Controls/TabControl/TabControlToken.cs",
"src/AtomUI.Desktop.Controls/TabControl/BaseTabControl.cs",
"src/AtomUI.Desktop.Controls/TabControl/TabStrip/BaseTabStrip.cs");
}
[Fact]
public void Navigation_Control_Themes_Use_Explicit_Token_Resources()
{
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(
"src/AtomUI.Desktop.Controls/Breadcrumb/Themes");
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(
"src/AtomUI.Desktop.Controls/Menu/Themes");
ThemeAssetScopeAssertions.AssertFileUsesExplicitTokenResources(
"src/AtomUI.Desktop.Controls/Flyouts/Themes/MenuFlyoutPresenterTheme.axaml");
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(
"src/AtomUI.Desktop.Controls/NavMenu/Themes");
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(
"src/AtomUI.Desktop.Controls/Pagination/Themes");
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(
"src/AtomUI.Desktop.Controls/Steps/Themes");
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(
"src/AtomUI.Desktop.Controls/TabControl/Themes");
}
private static void AssertNoLegacyScope(params string[] relativePaths)
{
foreach (var relativePath in relativePaths)
{
var text = ReadRepoFile(relativePath);
text.ShouldNotContain("RegisterTokenResourceScope");
text.ShouldNotContain("ScopeProvider");
}
}
private static string ReadRepoFile(string relativePath)
{
return File.ReadAllText(GetRepoFile(relativePath));
}
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);
}
}