Files
archy/neode-ui/src/components/__tests__/ScreensaverRing.test.ts
T

37 lines
1.5 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { mount } from '@vue/test-utils'
import ScreensaverRing from '../ScreensaverRing.vue'
// The ring is shared by the screensaver (default), SystemDangerZone (compact)
// and — as of FED-06 — the payment-success tick (badge). These assertions pin
// the variant mapping so adding a size can never silently re-point an existing
// call site at different geometry.
describe('ScreensaverRing', () => {
it('maps each size variant to its own ring class', () => {
expect(mount(ScreensaverRing).classes()).toContain('viz-ring-default')
expect(mount(ScreensaverRing, { props: { size: 'compact' } }).classes()).toContain(
'viz-ring-compact',
)
expect(mount(ScreensaverRing, { props: { size: 'badge' } }).classes()).toContain(
'viz-ring-badge',
)
})
it('keeps the existing variants off the badge class', () => {
expect(mount(ScreensaverRing).classes()).not.toContain('viz-ring-badge')
expect(mount(ScreensaverRing, { props: { size: 'compact' } }).classes()).not.toContain(
'viz-ring-badge',
)
})
it('renders one segment per segmentCount, defaulting to 48', () => {
expect(mount(ScreensaverRing).findAll('.viz-segment')).toHaveLength(48)
expect(
mount(ScreensaverRing, { props: { segmentCount: 12 } }).findAll('.viz-segment'),
).toHaveLength(12)
expect(
mount(ScreensaverRing, { props: { size: 'badge', segmentCount: 24 } }).findAll('.viz-segment'),
).toHaveLength(24)
})
})