| 1 | using CascadeIDE.Models; |
| 2 | using CascadeIDE.Services; |
| 3 | using CascadeIDE.Views; |
| 4 | using Xunit; |
| 5 | |
| 6 | namespace CascadeIDE.Tests; |
| 7 | |
| 8 | public 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 | |