| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import { describe, expect, it } from 'vitest'
- import { getSectionKeyFromPathname, resolveSectionDisplay } from './MobileMenuContent.utils'
- describe('getSectionKeyFromPathname', () => {
- it('returns section key for project section paths', () => {
- expect(getSectionKeyFromPathname('/project/abc123/database/schemas')).toBe('database')
- expect(getSectionKeyFromPathname('/project/abc123/auth/users')).toBe('auth')
- expect(getSectionKeyFromPathname('/project/abc123/settings/general')).toBe('settings')
- expect(getSectionKeyFromPathname('/project/abc123/integrations')).toBe('integrations')
- expect(getSectionKeyFromPathname('/project/abc123/realtime/inspector')).toBe('realtime')
- expect(getSectionKeyFromPathname('/project/abc123/functions')).toBe('functions')
- expect(getSectionKeyFromPathname('/project/abc123/logs/explorer')).toBe('logs')
- expect(getSectionKeyFromPathname('/project/abc123/advisors/security')).toBe('advisors')
- })
- it('returns null for project home (no section segment)', () => {
- expect(getSectionKeyFromPathname('/project/abc123')).toBeNull()
- expect(getSectionKeyFromPathname('/project/abc123/')).toBeNull()
- })
- it('returns null when pathname does not contain "project"', () => {
- expect(getSectionKeyFromPathname('/org/my-org')).toBeNull()
- expect(getSectionKeyFromPathname('/account/me')).toBeNull()
- expect(getSectionKeyFromPathname('/')).toBeNull()
- expect(getSectionKeyFromPathname('')).toBeNull()
- })
- it('returns null when project segment is missing or dynamic', () => {
- expect(getSectionKeyFromPathname('/project')).toBeNull()
- expect(getSectionKeyFromPathname('/project/')).toBeNull()
- expect(getSectionKeyFromPathname('/project/[ref]/database/schemas')).toBeNull()
- })
- it('returns first segment after project ref as section key', () => {
- expect(getSectionKeyFromPathname('/project/foo/bar/baz')).toBe('bar')
- })
- })
- describe('resolveSectionDisplay', () => {
- const routes = [
- { key: 'database', label: 'Database' },
- { key: 'auth', label: 'Authentication' },
- { key: 'settings', label: 'Settings' },
- ]
- it('returns nulls when viewLevel is top', () => {
- const result = resolveSectionDisplay({
- viewLevel: 'top',
- selectedSectionKey: 'database',
- currentSectionKey: 'auth',
- currentProduct: 'Authentication',
- routes,
- })
- expect(result).toEqual({ sectionKey: null, sectionLabel: null })
- })
- it('uses selectedSectionKey when set', () => {
- const result = resolveSectionDisplay({
- viewLevel: 'section',
- selectedSectionKey: 'database',
- currentSectionKey: 'auth',
- currentProduct: 'Authentication',
- routes,
- })
- expect(result).toEqual({ sectionKey: 'database', sectionLabel: 'Database' })
- })
- it('falls back to currentSectionKey when selectedSectionKey is null', () => {
- const result = resolveSectionDisplay({
- viewLevel: 'section',
- selectedSectionKey: null,
- currentSectionKey: 'auth',
- currentProduct: 'Authentication',
- routes,
- })
- expect(result).toEqual({ sectionKey: 'auth', sectionLabel: 'Authentication' })
- })
- it('uses currentProduct as label when sectionKey matches currentSectionKey', () => {
- const result = resolveSectionDisplay({
- viewLevel: 'section',
- selectedSectionKey: 'auth',
- currentSectionKey: 'auth',
- currentProduct: 'Auth Users',
- routes,
- })
- expect(result).toEqual({ sectionKey: 'auth', sectionLabel: 'Auth Users' })
- })
- it('falls back to sectionKey itself when no matching route', () => {
- const result = resolveSectionDisplay({
- viewLevel: 'section',
- selectedSectionKey: 'unknown',
- currentSectionKey: null,
- currentProduct: '',
- routes,
- })
- expect(result).toEqual({ sectionKey: 'unknown', sectionLabel: 'unknown' })
- })
- it('returns nulls when in section view but both keys are null', () => {
- const result = resolveSectionDisplay({
- viewLevel: 'section',
- selectedSectionKey: null,
- currentSectionKey: null,
- currentProduct: '',
- routes,
- })
- expect(result).toEqual({ sectionKey: null, sectionLabel: null })
- })
- })
|