32 lines
1.3 KiB
TypeScript
32 lines
1.3 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
import React from 'react'
|
|
import BuilderClientPage from '@/components/BuilderClientPage'
|
|
import { NextIntlClientProvider } from 'next-intl'
|
|
import enMessages from '@/messages/en.json'
|
|
const messages: Record<string, string> = enMessages as Record<string, string>
|
|
|
|
describe('BuilderClientPage - form preview', () => {
|
|
it('폼 필드 목록과 필수 여부가 미리보기에 표시된다', () => {
|
|
render(
|
|
<NextIntlClientProvider locale="en" messages={messages}>
|
|
<BuilderClientPage />
|
|
</NextIntlClientProvider>
|
|
)
|
|
|
|
// FormBuilderPanel의 텍스트 필드 추가 버튼 클릭 (data-testid 사용)
|
|
fireEvent.click(screen.getByTestId('btn-add-text'))
|
|
|
|
// 프리뷰 존재 확인(컴팩트 인스펙터 영역으로 이동됨)
|
|
expect(screen.getByText(/Locale:/)).toBeInTheDocument()
|
|
|
|
// 첫 필드 항목 표기: 라벨/네임/required 여부(초기 false)
|
|
expect(screen.getByText(/Text 1 \(field1\)/)).toBeInTheDocument()
|
|
expect(screen.queryByText(/required/)).not.toBeNull()
|
|
|
|
// required 토글 후 프리뷰 갱신 확인
|
|
fireEvent.click(screen.getByLabelText('Required 0'))
|
|
expect(screen.getAllByText('required').length).toBeGreaterThan(0)
|
|
})
|
|
})
|