29 行
1.1 KiB
TypeScript
29 行
1.1 KiB
TypeScript
import { fireEvent, render, screen } from '@testing-library/react'
|
|
import { describe, expect, it, vi } from 'vitest'
|
|
|
|
import DateTimeField from '@/components/common/DateTimeField'
|
|
|
|
describe ('DateTimeField', () => {
|
|
it ('renders an ISO value as a datetime-local value', () => {
|
|
render (<DateTimeField aria-label="日時" value="2026-01-02T03:04:05.000Z"/>)
|
|
|
|
const input = screen.getByLabelText ('日時')
|
|
|
|
expect (input).toHaveValue ('2026-01-02T12:04')
|
|
})
|
|
|
|
it ('reports local changes as ISO strings and empty values as null', () => {
|
|
const handleChange = vi.fn ()
|
|
render (<DateTimeField aria-label="日時" onChange={handleChange}/>)
|
|
|
|
const input = screen.getByLabelText ('日時')
|
|
fireEvent.change (input, { target: { value: '2026-01-02T03:04' } })
|
|
fireEvent.change (input, { target: { value: '' } })
|
|
|
|
const first = handleChange.mock.calls[0]?.[0]
|
|
expect (first).toMatch (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}Z$/)
|
|
expect (new Date (first).getUTCSeconds ()).toBe (0)
|
|
expect (handleChange).toHaveBeenLastCalledWith (null)
|
|
})
|
|
})
|