Просмотр исходного кода

test(web): cover plugin settings tab states

ZiyaZhang 1 месяц назад
Родитель
Сommit
14e70b1bf4

+ 12 - 0
packages/client/ui-plugin-config/tests/apply.client.spec.ts

@@ -83,9 +83,21 @@ describe('ui-plugin-config apply', () => {
 
     const section = slots.entries('settings.section')[0]!
     const sectionFace = (section.inject as unknown as () => PluginConfigSectionInjected)()
+    const initialTabs = sectionFace.hooks.tabs.getSnapshot()
+    expect(initialTabs).toEqual([
+      { id: 'configurable', order: 0, label: '插件配置' },
+    ])
+    expect(sectionFace.hooks.tabs.getSnapshot()).toBe(initialTabs)
+
+    const listener = vi.fn()
+    const unsubscribe = sectionFace.hooks.tabs.subscribe(listener)
+    slots.register({ name: 'settings.plugins.tab', id: 'plain' } as never, () => null)
     expect(sectionFace.hooks.tabs.getSnapshot()).toEqual([
       { id: 'configurable', order: 0, label: '插件配置' },
+      { id: 'plain', order: 0, label: '' },
     ])
+    unsubscribe()
+
     const tab = slots.entries('settings.plugins.tab')[0]!
     expect((tab.inject as unknown as () => ConfigurablePluginsTabInjected)()).toEqual({ cardCount: 3 })
     for (const entry of slots.entries('settings.plugin.item')) {

+ 4 - 0
packages/client/ui-plugin-config/tests/section.client.spec.tsx

@@ -105,6 +105,10 @@ describe('PluginConfigSection', () => {
     expect(all.getAttribute('aria-selected')).toBe('true')
     expect(screen.getByText('all')).toBeTruthy()
     expect(screen.getByText('configurable').closest('[role="tabpanel"]')).toHaveProperty('hidden', true)
+
+    fireEvent.click(configurable)
+    expect(configurable.getAttribute('aria-selected')).toBe('true')
+    expect(screen.getByText('all').closest('[role="tabpanel"]')).toHaveProperty('hidden', true)
   })
 
   it('leads with its own heading and intro', () => {

+ 5 - 4
packages/client/ui-plugins/tests/components.client.spec.tsx

@@ -27,6 +27,7 @@ const SNAPSHOT = {
     { entryId: 'loading', moduleName: '@fixture/loading-name', enabled: true, fiberPhase: 'loading' },
     { entryId: 'failed', moduleName: '@fixture/failed-name', enabled: true, fiberPhase: 'failed' },
     { entryId: 'unloading', moduleName: '@fixture/unloading-name', enabled: true, fiberPhase: 'unloading' },
+    { entryId: 'unobserved', moduleName: '@fixture/unobserved-name', enabled: true, fiberPhase: null },
     { entryId: 'disabled-entry', moduleName: '@deepseek-ai/dsh-host-directory-picker-native', enabled: false, fiberPhase: null },
   ],
 } as unknown as Snapshot
@@ -42,9 +43,9 @@ describe('PluginSettingsSection', () => {
     expect(list).toHaveBeenCalledOnce()
     expect(screen.getByRole('searchbox', { name: en.search })).toBeTruthy()
     expect(screen.getByRole('heading', { name: en.catalog })).toBeTruthy()
-    expect(view.container.querySelector('[data-plugin-count]')?.textContent).toBe('6')
-    expect(screen.getAllByRole('listitem')).toHaveLength(6)
-    expect(screen.getAllByText(en.enabledTag)).toHaveLength(5)
+    expect(view.container.querySelector('[data-plugin-count]')?.textContent).toBe('7')
+    expect(screen.getAllByRole('listitem')).toHaveLength(7)
+    expect(screen.getAllByText(en.enabledTag)).toHaveLength(6)
     expect(screen.getByText(en.disabledTag)).toBeTruthy()
     for (const value of [
       'Mounted',
@@ -52,10 +53,10 @@ describe('PluginSettingsSection', () => {
       'Loading',
       'Mount failed',
       'Unloading',
+      'Not mounted',
     ]) {
       expect(screen.getByRole('img', { name: value })).toBeTruthy()
     }
-    expect(screen.queryByRole('img', { name: 'Not mounted' })).toBeNull()
     const active = screen.getByRole('button', { name: 'hmr, Mounted, Enabled' })
     expect(active.getAttribute('aria-expanded')).toBe('false')
     fireEvent.click(active)