mirror of
https://github.com/supabase/supabase.git
synced 2026-05-23 19:13:13 +08:00
## What kind of change does this PR introduce? Chore that references DEPR-394. ## What is the current behavior? This stack is consolidating RHF key/value array UIs in smaller reviewable steps. After PR 1, Database Webhooks HTTP parameters and Database Functions configuration parameters still use separate bespoke implementations. ## What is the new behavior? - reuses the shared `KeyValueFieldArray` for Database Webhooks HTTP parameters - reuses the shared `KeyValueFieldArray` for Database Functions configuration parameters - keeps existing form shapes and submission logic intact - adds focused tests for those two follow-up consumers ## Additional context This is PR 2 of a 3-PR stack for DEPR-394. Base PR: #43938
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { render, screen } from '@testing-library/react'
|
|
import userEvent from '@testing-library/user-event'
|
|
import { useForm } from 'react-hook-form'
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
import { Form_Shadcn_ } from 'ui'
|
|
|
|
import { CreateFunctionConfigParamsSection } from './CreateFunctionConfigParamsSection'
|
|
|
|
type ConfigParamsFormValues = {
|
|
config_params: Array<{ name: string; value: string }>
|
|
}
|
|
|
|
const CreateFunctionConfigParamsHarness = () => {
|
|
const form = useForm<ConfigParamsFormValues>({
|
|
defaultValues: {
|
|
config_params: [{ name: 'search_path', value: 'public' }],
|
|
},
|
|
})
|
|
|
|
return (
|
|
<Form_Shadcn_ {...form}>
|
|
<CreateFunctionConfigParamsSection />
|
|
</Form_Shadcn_>
|
|
)
|
|
}
|
|
|
|
describe('CreateFunctionConfigParamsSection', () => {
|
|
it('appends a new config parameter row with name and value fields', async () => {
|
|
const user = userEvent.setup()
|
|
|
|
render(<CreateFunctionConfigParamsHarness />)
|
|
|
|
await user.click(screen.getByRole('button', { name: 'Add a new config' }))
|
|
|
|
expect(screen.getAllByPlaceholderText('parameter_name')).toHaveLength(2)
|
|
expect(screen.getAllByPlaceholderText('parameter_value')).toHaveLength(2)
|
|
})
|
|
|
|
it('removes an existing config parameter row', async () => {
|
|
const user = userEvent.setup()
|
|
|
|
render(<CreateFunctionConfigParamsHarness />)
|
|
|
|
expect(screen.getByDisplayValue('search_path')).toBeInTheDocument()
|
|
|
|
await user.click(screen.getByRole('button', { name: 'Remove configuration parameter' }))
|
|
|
|
expect(screen.queryByDisplayValue('search_path')).not.toBeInTheDocument()
|
|
})
|
|
})
|