@plone/volto
Version:
Volto
103 lines (94 loc) • 2.93 kB
JSX
import React from 'react';
import renderer from 'react-test-renderer';
import { Provider } from 'react-intl-redux';
import configureStore from 'redux-mock-store';
import EventView from './EventView';
import config from '@plone/volto/registry';
const mockStore = configureStore();
const store = mockStore({
intl: {
locale: 'en',
messages: {},
},
});
vi.mock('@plone/volto/helpers/Loadable/Loadable', async () => {
return await import(
'@plone/volto/helpers/Loadable/__mocks__/Loadable.vitest.jsx'
);
});
beforeAll(async () => {
const { __setLoadables } = await import(
'@plone/volto/helpers/Loadable/Loadable'
);
await __setLoadables();
});
const { settings } = config;
test('renders an event view component with all props', () => {
const component = renderer.create(
<Provider store={store}>
<EventView
content={{
'@id': 'http://localhost:8080/Plone/my-page',
title: 'Hello World!',
description: 'Hi',
text: {
data: '<p>Hello World!</p>',
},
attendees: ['John Doe', 'Mario Rossi'],
contact_email: 'test@example.com',
contact_name: 'John Doe',
contact_phone: '0123456789',
end: '2019-06-24T15:20:00+00:00',
event_url: 'https://www.example.com',
location: 'Volto, Plone',
open_end: false,
recurrence: 'RRULE:FREQ=DAILY;INTERVAL=7;COUNT=7',
start: '2019-06-23T15:20:00+00:00',
subjects: ['Guillotina', 'Volto'],
whole_day: false,
}}
/>
</Provider>,
);
const json = component.toJSON();
expect(json).toMatchSnapshot();
});
test('renders an event view component with only required props', () => {
const component = renderer.create(
<Provider store={store}>
<EventView
content={{
'@id': 'http://localhost:8080/Plone/my-page',
title: 'Hello World!',
attendees: [],
end: '2019-06-23T16:20:00+00:00',
start: '2019-06-23T15:20:00+00:00',
subjects: [],
}}
/>
</Provider>,
);
const json = component.toJSON();
expect(json).toMatchSnapshot();
});
test('renders an event view component without links to api in the text', () => {
const component = renderer.create(
<Provider store={store}>
<EventView
content={{
'@id': 'http://localhost:8080/Plone/my-page',
title: 'Hello World!',
attendees: [],
end: '2019-06-23T16:20:00+00:00',
start: '2019-06-23T15:20:00+00:00',
subjects: [],
text: {
data: `<p>Hello World!</p><p>This is an <a href="${settings.apiPath}/foo/bar">internal link</a> and a <a href="${settings.apiPath}/foo/baz">second link</a></p>`,
},
}}
/>
</Provider>,
);
const json = component.toJSON();
expect(json).toMatchSnapshot();
});