Files
landing-builder/components/BuilderClientPage.formPreview.test.tsx
T

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)
})
})