Files
supabase/apps/studio/tests/components/CommandMenu/FeaturePreviews.utils.test.ts
Monica Khoury 7454d5140d test: cover Cmd+K feature preview toggle routing logic
Extract the enable/disable-and-route decision out of
useFeaturePreviewCommands into a pure resolveFeaturePreviewToggle
util, and unit test every permutation: disabling, enabling with a
route, enabling outside a project-scoped page, missing ref, and
previews without a route.
2026-09-21 17:52:20 +03:00

98 lines
2.8 KiB
TypeScript

import { describe, expect, it, vi } from 'vitest'
import { resolveFeaturePreviewToggle } from '@/components/interfaces/App/CommandMenu/FeaturePreviews.utils'
describe('resolveFeaturePreviewToggle', () => {
it('returns disabled when the preview is being turned off', () => {
const preview = { getRoute: vi.fn(() => '/project/abc/explorer') }
const outcome = resolveFeaturePreviewToggle({
preview,
isEnabling: false,
pathname: '/project/[ref]/explorer',
ref: 'abc',
})
expect(outcome).toStrictEqual({ type: 'disabled' })
expect(preview.getRoute).not.toHaveBeenCalled()
})
it('returns disabled regardless of pathname/ref when turning off', () => {
const preview = { getRoute: () => '/project/abc/explorer' }
const outcome = resolveFeaturePreviewToggle({
preview,
isEnabling: false,
pathname: '/org/some-org',
ref: undefined,
})
expect(outcome).toStrictEqual({ type: 'disabled' })
})
it('returns a route when enabling on a project-scoped page with a ref', () => {
const preview = { getRoute: (ref?: string) => `/project/${ref}/explorer` }
const outcome = resolveFeaturePreviewToggle({
preview,
isEnabling: true,
pathname: '/project/[ref]/explorer',
ref: 'abc',
})
expect(outcome).toStrictEqual({ type: 'enabled', route: '/project/abc/explorer' })
})
it('does not route when enabling on a non-project-scoped page (e.g. org view)', () => {
const preview = { getRoute: (ref?: string) => `/project/${ref}/explorer` }
const outcome = resolveFeaturePreviewToggle({
preview,
isEnabling: true,
pathname: '/org/some-org',
ref: 'abc',
})
expect(outcome).toStrictEqual({ type: 'enabled' })
})
it('does not route when enabling with no ref, even on a project-scoped pathname', () => {
const preview = { getRoute: (ref?: string) => `/project/${ref}/explorer` }
const outcome = resolveFeaturePreviewToggle({
preview,
isEnabling: true,
pathname: '/project/[ref]/explorer',
ref: undefined,
})
expect(outcome).toStrictEqual({ type: 'enabled' })
})
it('does not route when the preview has no getRoute', () => {
const preview = {}
const outcome = resolveFeaturePreviewToggle({
preview,
isEnabling: true,
pathname: '/project/[ref]/explorer',
ref: 'abc',
})
expect(outcome).toStrictEqual({ type: 'enabled' })
})
it('does not route when getRoute returns undefined', () => {
const preview = { getRoute: () => undefined as unknown as string }
const outcome = resolveFeaturePreviewToggle({
preview,
isEnabling: true,
pathname: '/project/[ref]/explorer',
ref: 'abc',
})
expect(outcome).toStrictEqual({ type: 'enabled' })
})
})