import { describe, expect, it } from 'vitest' import { generateOrganizationSettingsMenuItems, generateOrganizationSettingsSections, normalizeOrganizationSettingsPath, } from './OrganizationSettingsLayout' describe('generateOrganizationSettingsMenuItems', () => { it('includes webhooks entry for organization settings nav', () => { const items = generateOrganizationSettingsMenuItems({ slug: 'my-org', showSecuritySettings: true, showSsoSettings: true, showLegalDocuments: true, }) expect(items.some((item) => item.label === 'Webhooks')).toBe(true) expect(items.some((item) => item.href === '/org/my-org/webhooks')).toBe(true) }) }) describe('OrganizationSettingsLayout helpers', () => { it('returns expected organization settings sections and links', () => { const sections = generateOrganizationSettingsSections({ slug: 'my-org', currentPath: '/org/my-org/general', showSecuritySettings: true, showSsoSettings: true, showLegalDocuments: true, }) expect(sections.map((section) => section.heading)).toEqual([ 'Configuration', 'Connections', 'Compliance', ]) expect(sections.flatMap((section) => section.links.map((item) => item.label))).toEqual([ 'General', 'Security', 'SSO', 'OAuth Apps', 'Webhooks', 'Audit Logs', 'Legal Documents', ]) expect( sections.flatMap((section) => section.links).find((item) => item.label === 'General') ?.isActive ).toBe(true) }) it('hides feature-flagged items when flags are disabled', () => { const sections = generateOrganizationSettingsSections({ slug: 'my-org', currentPath: '/org/my-org/general', showSecuritySettings: false, showSsoSettings: false, showLegalDocuments: false, }) expect(sections.map((section) => section.heading)).toEqual([ 'Configuration', 'Connections', 'Compliance', ]) expect(sections.flatMap((section) => section.links.map((item) => item.label))).toEqual([ 'General', 'OAuth Apps', 'Webhooks', 'Audit Logs', ]) }) it('normalizes hash paths for active state checks', () => { const currentPath = normalizeOrganizationSettingsPath('/org/my-org/security#sso') const sections = generateOrganizationSettingsSections({ slug: 'my-org', currentPath, showSecuritySettings: true, showSsoSettings: true, showLegalDocuments: true, }) expect( sections.flatMap((section) => section.links).find((item) => item.label === 'Security') ?.isActive ).toBe(true) }) it('keeps webhooks nav item active for nested endpoint routes', () => { const sections = generateOrganizationSettingsSections({ slug: 'my-org', currentPath: '/org/my-org/webhooks/org-endpoint-1', showSecuritySettings: true, showSsoSettings: true, showLegalDocuments: true, }) expect( sections.flatMap((section) => section.links).find((item) => item.label === 'Webhooks') ?.isActive ).toBe(true) }) })