@eeacms/volto-widget-theme-picker
Version:
@eeacms/volto-widget-theme-picker: Volto add-on
49 lines (40 loc) • 1.44 kB
JSX
import React from 'react';
import { render, fireEvent } from '@testing-library/react';
import '@testing-library/jest-dom';
import ThemePicker from './ThemePicker';
describe('ThemePicker', () => {
const props = {
id: 'test-theme-picker',
title: 'Test Theme Picker',
value: 'color1',
colors: [
{ name: 'color1', label: 'Color 1' },
{ name: 'color2', label: 'Color 2' },
],
onChange: () => {},
};
it('renders correctly', () => {
const { container } = render(<ThemePicker {...props} />);
expect(container.querySelector('.wrapper label')).toBeInTheDocument();
expect(
container.querySelector('.wrapper .buttons .color1[title="Color 1"]'),
).toBeInTheDocument();
expect(
container.querySelector('.wrapper .buttons .color2[title="Color 2"]'),
).toBeInTheDocument();
});
it('calls onChange with correct value when a color button is clicked', () => {
const onChange = jest.fn();
const { getByTitle } = render(
<ThemePicker {...props} onChange={onChange} />,
);
fireEvent.click(getByTitle('Color 2'));
expect(onChange).toHaveBeenCalledWith('test-theme-picker', 'color2');
});
it('does not render when no colors are provided', () => {
const { container } = render(<ThemePicker {...props} colors={[]} />);
expect(
container.querySelector('.wrapper .field-test-theme-picker'),
).not.toBeInTheDocument();
});
});