Skip to content

Commit

Permalink
Merge pull request #17 from eea/develop
Browse files Browse the repository at this point in the history
Release
  • Loading branch information
avoinea authored Jun 13, 2023
2 parents 62f3927 + 9206bc5 commit 3635439
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 1 deletion.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file. Dates are d

Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).

### [0.3.3](https://github.com/eea/volto-widget-dataprovenance/compare/0.3.2...0.3.3) - 13 June 2023

#### :hammer_and_wrench: Others

- test: add unit tests for DataProvenance and DataProvenanceView - refs #253277 [ana-oprea - [`c23bf80`](https://github.com/eea/volto-widget-dataprovenance/commit/c23bf80e05b27ebf504b6273ec238da3c94743c8)]
### [0.3.2](https://github.com/eea/volto-widget-dataprovenance/compare/0.3.1...0.3.2) - 12 June 2023

#### :hammer_and_wrench: Others
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@eeacms/volto-widget-dataprovenance",
"version": "0.3.2",
"version": "0.3.3",
"description": "@eeacms/volto-widget-dataprovenance: Volto Data Provenance add-on",
"main": "src/index.js",
"author": "European Environment Agency: IDM2 A-Team",
Expand Down
42 changes: 42 additions & 0 deletions src/components/theme/Widgets/DataProvenance.test.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import React from 'react';
import { render, fireEvent } from '@testing-library/react';
import { DataProvenance } from './DataProvenance';
import { Provider } from 'react-intl-redux';
import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import '@testing-library/jest-dom/extend-expect';

const middlewares = [thunk];
const mockStore = configureStore(middlewares);
const store = mockStore({
intl: {
locale: 'en',
messages: {},
},
});

describe('DataProvenance', () => {
it('should render without crash', () => {
const { getByText } = render(
<Provider store={store}>
<DataProvenance />
</Provider>,
);
expect(getByText(`Add source`)).toBeInTheDocument();
});

it('should add an item to the list when the add button is clicked', () => {
const onChangeMock = jest.fn();
const { getByText } = render(
<Provider store={store}>
<DataProvenance
onChange={onChangeMock}
id="1"
value={{ data: [{ '@id': '1', name: 'test' }] }}
/>
</Provider>,
);
fireEvent.click(getByText(`Add source`));
expect(onChangeMock).toHaveBeenCalled();
});
});
62 changes: 62 additions & 0 deletions src/components/theme/Widgets/DataProvenanceView.test.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import React from 'react';
import { render } from '@testing-library/react';
import DataProvenanceView from './DataProvenanceView';
import { Provider } from 'react-intl-redux';
import configureStore from 'redux-mock-store';
import { BrowserRouter } from 'react-router-dom';
import '@testing-library/jest-dom/extend-expect';

const mockStore = configureStore();
const store = mockStore({
intl: {
locale: 'en',
messages: {},
},
});

const value = {
data: [
{ title: 'Title 1', link: '/link1', organisation: 'Organisation 1' },
{ title: 'Title 2', link: '/link2', organisation: 'Organisation 2' },
{ title: 'Title 3', organisation: 'Organisation 3' },
{ title: 'Title 4', organisation: undefined },
],
};

describe('DataProvenanceView', () => {
it('renders correctly with value', () => {
const { getByText } = render(
<Provider store={store}>
<BrowserRouter>
<DataProvenanceView value={value} className="test" />
</BrowserRouter>
</Provider>,
);
expect(getByText('Title 1')).toBeInTheDocument();
expect(getByText(', Organisation 1')).toBeInTheDocument();
expect(getByText('Title 2')).toBeInTheDocument();
expect(getByText(', Organisation 2')).toBeInTheDocument();
expect(getByText('Title 3, Organisation 3')).toBeInTheDocument();
});

it('renders correctly without value', () => {
render(<DataProvenanceView className="test" />);
});

it('creates links correctly', () => {
const { getByText } = render(
<Provider store={store}>
<BrowserRouter>
<DataProvenanceView value={value} className="test" />
</BrowserRouter>
</Provider>,
);

value.data
.filter((item) => item.link)
.forEach((item) => {
const listItem = getByText(item.title);
expect(listItem.getAttribute('href')).toBe(item.link);
});
});
});

0 comments on commit 3635439

Please sign in to comment.