test(quick-261022-imo): settings section panel coverage
- settingsSectionOf: null cases, category order, link entry placement - SettingsPanel: labels, links, current entry, empty category, collapse - AppShell: hidden cases, settings-link controllers, collapse, offset, narrow, focus hand-off
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
settingsGroups,
|
||||
settingsLinkFor,
|
||||
settingsPath,
|
||||
settingsSectionOf,
|
||||
useSettings,
|
||||
} from '../../src/state/useSettings'
|
||||
import { settingsFixture } from '../fixtures/typed'
|
||||
@@ -65,3 +66,41 @@ describe('useSettings (D-21)', () => {
|
||||
expect(useSettings().settingsLinkFor).toBe(settingsLinkFor)
|
||||
})
|
||||
})
|
||||
|
||||
describe('settingsSectionOf (quick-261022-imo)', () => {
|
||||
const link = (code: string, order: number, controller: string) => ({
|
||||
...settingsFixture.list.data[0]!,
|
||||
code,
|
||||
label: code,
|
||||
model: '',
|
||||
controller,
|
||||
order,
|
||||
})
|
||||
|
||||
it('is null without a current entry or for a one-entry category', () => {
|
||||
setSettings(settingsFixture.list.data)
|
||||
expect(settingsSectionOf(null)).toBeNull()
|
||||
expect(settingsSectionOf(settingsEntry('branding'))).toBeNull()
|
||||
})
|
||||
|
||||
it('returns the current category in settingsGroups order', () => {
|
||||
setSettings(settingsFixture.list.data)
|
||||
const section = settingsSectionOf(settingsEntry('mail'))
|
||||
expect(section?.category).toBe('System')
|
||||
expect(section?.current.code).toBe('mail')
|
||||
expect(section?.entries.map((entry) => entry.code)).toEqual(['mail', 'search'])
|
||||
})
|
||||
|
||||
it('places a link entry by its order and never lists another category', () => {
|
||||
setSettings([...settingsFixture.list.data, link('locales', 15, 'acme.lang.locales')])
|
||||
const section = settingsSectionOf(settingsLinkFor('acme.lang.locales'))
|
||||
expect(section?.current.code).toBe('locales')
|
||||
expect(section?.entries.map((entry) => entry.code)).toEqual(['mail', 'locales', 'search'])
|
||||
expect(section?.entries.some((entry) => entry.category === 'Appearance')).toBe(false)
|
||||
expect(settingsSectionOf(settingsEntry('search'))?.entries.map((entry) => entry.code)).not.toContain('branding')
|
||||
})
|
||||
|
||||
it('is exposed through useSettings', () => {
|
||||
expect(useSettings().settingsSectionOf).toBe(settingsSectionOf)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user