5e5423c545
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 lines
1.4 KiB
TypeScript
34 lines
1.4 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { mount } from '@vue/test-utils'
|
|
import MonthPicker from './MonthPicker.vue'
|
|
|
|
const mountPicker = (props: { currentYear: number, selectedMonth?: number, min?: string, max?: string }) =>
|
|
mount(MonthPicker, { props })
|
|
|
|
describe('MalioDateMonthPicker', () => {
|
|
it('renders 12 months', () => {
|
|
const wrapper = mountPicker({ currentYear: 2026 })
|
|
expect(wrapper.findAll('[data-test="month"]')).toHaveLength(12)
|
|
})
|
|
|
|
it('emits select with the clicked month index', async () => {
|
|
const wrapper = mountPicker({ currentYear: 2026 })
|
|
await wrapper.get('[data-test="month"][data-month="0"]').trigger('click')
|
|
expect(wrapper.emitted('select')?.[0]).toEqual([0])
|
|
})
|
|
|
|
it('disables months before min in the current year and does not emit', async () => {
|
|
const wrapper = mountPicker({ currentYear: 2026, min: '2026-05-01' })
|
|
const april = wrapper.get('[data-test="month"][data-month="3"]')
|
|
expect(april.attributes('disabled')).toBeDefined()
|
|
await april.trigger('click')
|
|
expect(wrapper.emitted('select')).toBeUndefined()
|
|
})
|
|
|
|
it('disables months after max in the current year', () => {
|
|
const wrapper = mountPicker({ currentYear: 2026, max: '2026-05-31' })
|
|
expect(wrapper.get('[data-test="month"][data-month="5"]').attributes('disabled')).toBeDefined()
|
|
expect(wrapper.get('[data-test="month"][data-month="4"]').attributes('disabled')).toBeUndefined()
|
|
})
|
|
})
|