samgis / static /tests /types.test.ts
alessandro trinca tornidor
test: add test cases for types
a46bcfc
import { describe, it, expect } from 'vitest'
import { ExcludeIncludeLabelPrompt } from '@/components/types.d'
// ──────────────────────────────────────────────────────────
// ExcludeIncludeLabelPrompt enum
// ──────────────────────────────────────────────────────────
describe('ExcludeIncludeLabelPrompt', () => {
/**
* This enum is the only runtime artifact from types.d.ts.
* helpers.ts uses `Number(excludeIncludeLabelPrompt[event.shape])` (line 291)
* to resolve point labels β€” wrong values here silently break include/exclude logic.
*/
it('ExcludeMarkerPrompt equals 0', () => {
expect(ExcludeIncludeLabelPrompt.ExcludeMarkerPrompt).toBe(0)
})
it('IncludeMarkerPrompt equals 1', () => {
expect(ExcludeIncludeLabelPrompt.IncludeMarkerPrompt).toBe(1)
})
it('has exactly 2 members', () => {
/**
* TypeScript numeric enums produce reverse mappings (value β†’ name),
* so Object.keys contains both names and numeric keys: ["0", "1", "ExcludeMarkerPrompt", "IncludeMarkerPrompt"].
* We filter to non-numeric keys to count actual members.
*/
const members = Object.keys(ExcludeIncludeLabelPrompt).filter((k) => isNaN(Number(k)))
expect(members).toHaveLength(2)
})
/** helpers.ts relies on reverse mapping: enum[shapeName] β†’ numeric label */
it('reverse mapping: 0 resolves to "ExcludeMarkerPrompt"', () => {
expect(ExcludeIncludeLabelPrompt[0]).toBe('ExcludeMarkerPrompt')
})
it('reverse mapping: 1 resolves to "IncludeMarkerPrompt"', () => {
expect(ExcludeIncludeLabelPrompt[1]).toBe('IncludeMarkerPrompt')
})
})