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

85 lines
2.9 KiB
C#

using Shouldly;
using Xunit;
namespace AtomUI.Desktop.Controls.Tests.Theme;
public class DesktopControlsDataEntryThemeScopeMigrationTests
{
private static readonly string[] ControlDirectories =
[
"src/AtomUI.Desktop.Controls/AutoComplete",
"src/AtomUI.Desktop.Controls/ButtonSpinner",
"src/AtomUI.Desktop.Controls/Cascader",
"src/AtomUI.Desktop.Controls/CheckBox",
"src/AtomUI.Desktop.Controls/ComboBox",
"src/AtomUI.Desktop.Controls/DatePicker",
"src/AtomUI.Desktop.Controls/Form",
"src/AtomUI.Desktop.Controls/Input",
"src/AtomUI.Desktop.Controls/Mentions",
"src/AtomUI.Desktop.Controls/NumericUpDown",
"src/AtomUI.Desktop.Controls/OtpLineEdit",
"src/AtomUI.Desktop.Controls/OptionButtonGroup",
"src/AtomUI.Desktop.Controls/RadioButton",
"src/AtomUI.Desktop.Controls/Rate",
"src/AtomUI.Desktop.Controls/Select",
"src/AtomUI.Desktop.Controls/Slider",
"src/AtomUI.Desktop.Controls/Switch",
"src/AtomUI.Desktop.Controls/TimePicker",
"src/AtomUI.Desktop.Controls/Transfer",
"src/AtomUI.Desktop.Controls/TreeSelect",
"src/AtomUI.Desktop.Controls/Upload",
"src/AtomUI.Desktop.Controls/Primitives/AddOnDecoratedBox",
"src/AtomUI.Desktop.Controls/Primitives/InfoPickerInput"
];
private static readonly string[] ThemeDirectories =
ControlDirectories.Select(static directory => $"{directory}/Themes").ToArray();
[Fact]
public void DataEntry_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 DataEntry_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);
}
}