import React from 'react'
import { describe, it, expect, vi } from 'vitest'
import { render } from '@testing-library/react'
import { ThemeProvider, createTheme } from '@material-ui/core/styles'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import { SchemaConfigEditor } from './SchemaConfigEditor'
const theme = createTheme()
// JSONForms requires Redux
const mockStore = createStore(() => ({}))
const renderWithProviders = (component) => {
return render(
{component}
,
)
}
describe('SchemaConfigEditor', () => {
const basicSchema = {
type: 'object',
properties: {
name: {
type: 'string',
title: 'Name',
},
enabled: {
type: 'boolean',
title: 'Enabled',
},
},
}
it('renders nothing when schema is null', () => {
const { container } = renderWithProviders(
,
)
expect(container.firstChild).toBeNull()
})
it('renders the component wrapper with valid schema', () => {
const { container } = renderWithProviders(
,
)
// Check that the wrapper div is rendered (class name is generated)
expect(
container.querySelector('[class*="NDSchemaConfigEditor-root"]'),
).toBeTruthy()
})
it('calls onChange on initial render', () => {
const onChange = vi.fn()
renderWithProviders(
,
)
// JSONForms calls onChange on initial render with initial state
expect(onChange).toHaveBeenCalled()
})
it('passes data and errors to onChange callback', () => {
const onChange = vi.fn()
const initialData = { name: 'Test Value' }
renderWithProviders(
,
)
// Check that onChange was called with data and errors
expect(onChange).toHaveBeenCalledWith(
expect.objectContaining({ name: 'Test Value' }),
expect.any(Array),
)
})
})