Files
malio-layer-ui/app/components/malio/time/internal/TimeWheel.test.ts
T
tristan e6a46a9d60 [#MUI-39] Création d'un sélecteur d'heure à molettes (MalioTimePicker) ; DateTime rebranché dessus (remplace l'input time natif intérimaire) (#55)
| Numéro du ticket | Titre du ticket |
|------------------|-----------------|
|                  |                 |

## Description de la PR

## Modification du .env

## Check list

- [ ] Pas de régression
- [ ] TU/TI/TF rédigée
- [ ] TU/TI/TF OK
- [ ] CHANGELOG modifié

Reviewed-on: #55
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
2026-05-27 12:01:29 +00:00

42 lines
1.5 KiB
TypeScript

import {describe, expect, it} from 'vitest'
import {mount} from '@vue/test-utils'
import TimeWheel from './TimeWheel.vue'
const HOURS = Array.from({length: 24}, (_, i) => i)
const mountWheel = (modelValue = 9) =>
mount(TimeWheel, {
props: {modelValue, values: HOURS, ariaLabel: 'Heures'},
attachTo: document.body,
})
describe('MalioTimeWheel', () => {
it('expose le rôle spinbutton et les attributs aria', () => {
const wrapper = mountWheel(9)
const el = wrapper.get('[role="spinbutton"]')
expect(el.attributes('aria-label')).toBe('Heures')
expect(el.attributes('aria-valuenow')).toBe('9')
expect(el.attributes('aria-valuemin')).toBe('0')
expect(el.attributes('aria-valuemax')).toBe('23')
expect(el.attributes('aria-valuetext')).toBe('09')
})
it('rend 3 copies des valeurs (buffer infini)', () => {
const wrapper = mountWheel()
expect(wrapper.findAll('[data-test="wheel-item"]')).toHaveLength(24 * 3)
})
it('émet la nouvelle valeur au clavier ArrowDown', async () => {
const wrapper = mountWheel(9)
await wrapper.get('[role="spinbutton"]').trigger('keydown', {key: 'ArrowDown'})
expect(wrapper.emitted('update:modelValue')?.at(-1)).toEqual([10])
})
it('émet la valeur cliquée', async () => {
const wrapper = mountWheel(9)
const item = wrapper.findAll('[data-test="wheel-item"]').find((w) => w.text() === '11')!
await item.trigger('click')
expect(wrapper.emitted('update:modelValue')?.at(-1)).toEqual([11])
})
})