Forge
csharpdeeb25a2
1using CascadeIDE.Models;
2using CascadeIDE.Services;
3using CascadeIDE.Views;
4using Xunit;
5
6namespace CascadeIDE.Tests;
7
8public sealed class SettingsCategoryCatalogTests
9{
10 [Fact]
11 public void DiscoverFromAssembly_includes_all_builtin_panels()
12 {
13 var discovered = SettingsPanelRegistry.DiscoverFromAssembly();
14 Assert.Contains(discovered, c => c.Panel == SettingsPanelIds.AiChat);
15 Assert.Contains(discovered, c => c.Panel == SettingsPanelIds.Themes);
16 Assert.Contains(discovered, c => c.Panel == SettingsPanelIds.Hci);
17 Assert.Contains(discovered, c => c.Panel == SettingsPanelIds.WorkspaceNavigationMap);
18 }
19
20 [Fact]
21 public void LoadOrdered_without_toml_overlay_uses_discovery()
22 {
23 var ordered = SettingsPanelRegistry.LoadOrdered();
24 Assert.True(ordered.Count >= 6);
25 Assert.Equal(SettingsPanelIds.Themes, ordered[0].Panel);
26 }
27
28 [Fact]
29 public void BuildNavigation_inserts_group_headers()
30 {
31 var nav = SettingsShellView.BuildNavigation(SettingsPanelRegistry.DiscoverFromAssembly());
32 Assert.Contains(nav, i => i is Features.Settings.SettingsNavigationGroupHeader g && g.Title == "Агент");
33 Assert.Contains(nav, i => i is Features.Settings.SettingsNavigationCategory c && c.Panel == SettingsPanelIds.CSharpLsp);
34 }
35
36 [Fact]
37 public void Merge_overlay_can_hide_panel()
38 {
39 var baseList = SettingsCategoryCatalog.LoadBuiltinFallbackList();
40 var overlay = new[]
41 {
42 new SettingsCategoryDefinition { Panel = SettingsPanelIds.Hci, Hidden = true, Order = 1 },
43 };
44 var merged = SettingsPanelRegistry.Merge(baseList, overlay);
45 Assert.DoesNotContain(merged, c => c.Panel == SettingsPanelIds.Hci);
46 }
47}
48
View only · write via MCP/CIDE