feat(centralui): TemplateFolderTree.RevealKeys — expand to a preselected node
Claude-Session: https://claude.ai/code/session_01G2GHPnbbKGvyyfbr2XBRVH
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
||||
using Bunit;
|
||||
using ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared;
|
||||
using ZB.MOM.WW.ScadaBridge.Commons.Entities.Templates;
|
||||
|
||||
namespace ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared;
|
||||
|
||||
/// <summary>
|
||||
/// Covers the additive <c>RevealKeys</c> parameter: the tree opens the ancestors of
|
||||
/// a caller-named node when no filter is active, and an active filter still wins.
|
||||
/// </summary>
|
||||
public class TemplateFolderTreeRevealKeysTests : BunitContext
|
||||
{
|
||||
public TemplateFolderTreeRevealKeysTests()
|
||||
{
|
||||
JSInterop.Mode = JSRuntimeMode.Loose;
|
||||
}
|
||||
|
||||
private static (List<TemplateFolder> folders, List<Template> templates) Catalogue()
|
||||
{
|
||||
var a = new TemplateFolder("A") { Id = 1 };
|
||||
var b = new TemplateFolder("B") { Id = 2, ParentFolderId = 1 };
|
||||
var other = new TemplateFolder("Other") { Id = 3 };
|
||||
var t7 = new Template("Deep") { Id = 7, FolderId = 2 };
|
||||
var t8 = new Template("Elsewhere") { Id = 8, FolderId = 3 };
|
||||
return (new() { a, b, other }, new() { t7, t8 });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithoutRevealKeys_AllFoldersStartCollapsed()
|
||||
{
|
||||
var (f, t) = Catalogue();
|
||||
var cut = Render<TemplateFolderTree>(p => p.Add(x => x.Folders, f).Add(x => x.Templates, t));
|
||||
Assert.DoesNotContain("Deep", cut.Markup);
|
||||
Assert.DoesNotContain("Elsewhere", cut.Markup);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RevealKeys_ExpandsOnlyTheAncestorsOfTheListedTemplate()
|
||||
{
|
||||
var (f, t) = Catalogue();
|
||||
var cut = Render<TemplateFolderTree>(p => p
|
||||
.Add(x => x.Folders, f).Add(x => x.Templates, t)
|
||||
.Add(x => x.RevealKeys, (IReadOnlyCollection<string>)new[] { "t:7" }));
|
||||
Assert.Contains("Deep", cut.Markup); // A → B expanded
|
||||
Assert.DoesNotContain("Elsewhere", cut.Markup); // Other untouched
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ActiveFilter_WinsOverRevealKeys()
|
||||
{
|
||||
var (f, t) = Catalogue();
|
||||
var cut = Render<TemplateFolderTree>(p => p
|
||||
.Add(x => x.Folders, f).Add(x => x.Templates, t)
|
||||
.Add(x => x.RevealKeys, (IReadOnlyCollection<string>)new[] { "t:7" })
|
||||
.Add(x => x.Filter, "Elsewhere"));
|
||||
Assert.Contains("Elsewhere", cut.Markup);
|
||||
Assert.DoesNotContain("Deep", cut.Markup);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user