Skip to content

Commit 6895bd4

Browse files
committed
UIFC-451-useEditCard-from-leipzig-components fix package.json, adapt tests and translation
1 parent 4a624ae commit 6895bd4

6 files changed

Lines changed: 66 additions & 61 deletions

File tree

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@
3434
"react-router-dom": "^5.2.0"
3535
},
3636
"dependencies": {
37+
"@folio/stripes-leipzig-components": "^1.0.0",
3738
"file-saver": "^2.0.0",
3839
"final-form": "^4.18.7",
3940
"final-form-arrays": "^3.0.2",
40-
"@folio/stripes-leipzig-components": "^1.0.0",
4141
"lodash": "^4.17.4",
4242
"moment": "^2.24.0",
4343
"prop-types": "^15.6.0",
@@ -73,6 +73,9 @@
7373
"finc-select-ezb-credentials": "1.0",
7474
"organizations-storage.organizations": "3.0"
7575
},
76+
"stripesDeps": [
77+
"@folio/stripes-leipzig-components"
78+
],
7679
"permissionSets": [
7780
{
7881
"permissionName": "module.finc-select.enabled",

src/components/Filters/FilterFile/FilterFileForm.test.js

Lines changed: 38 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,37 @@
11
import { MemoryRouter } from 'react-router-dom';
22
import { Form } from 'react-final-form';
3-
import { FieldArray } from 'react-final-form-arrays';
3+
import arrayMutators from 'final-form-arrays';
44

5-
import { fireEvent, screen, waitFor } from '@folio/jest-config-stripes/testing-library/react';
5+
import { screen, waitFor } from '@folio/jest-config-stripes/testing-library/react';
66
import userEvent from '@folio/jest-config-stripes/testing-library/user-event';
77
import { StripesContext, useStripes } from '@folio/stripes/core';
88

99
import renderWithIntlConfiguration from '../../../../test/jest/helpers/renderWithIntlConfiguration';
10-
import FilterForm from '../FilterForm';
1110
import FilterFileForm from './FilterFileForm';
12-
import FILTER from '../../../../test/fixtures/filter';
1311

1412
const onToggle = jest.fn();
15-
const onDelete = jest.fn();
16-
const onClose = jest.fn();
17-
const handleSubmit = jest.fn();
1813
const onSubmit = jest.fn();
19-
const onUploadFile = jest.fn();
20-
const onDownloadFile = jest.fn();
2114

2215
const file = new File(['foo'], 'file.json', { type: 'text/plain' });
2316

24-
const renderFilterFileForm = (stripes, initialValues = FILTER) => {
17+
const mockPost = jest.fn(() => Promise.resolve({
18+
ok: true,
19+
json: () => Promise.resolve({ file }),
20+
}));
21+
22+
const renderFilterFileForm = (stripes) => {
2523
return renderWithIntlConfiguration(
2624
<StripesContext.Provider value={stripes}>
2725
<MemoryRouter>
2826
<Form
2927
onSubmit={onSubmit}
28+
mutators={arrayMutators}
3029
render={() => (
31-
<FilterForm
32-
initialValues={initialValues}
33-
handlers={{ onClose, onDelete }}
34-
handleSubmit={handleSubmit}
35-
onSubmit={onSubmit}
36-
onDelete={onDelete}
37-
>
38-
<FilterFileForm
39-
accordionId="accordionId"
40-
expanded
41-
onToggle={onToggle}
42-
stripes={stripes}
43-
>
44-
<FieldArray
45-
name="filterFiles"
46-
onDownloadFile={onDownloadFile}
47-
onUploadFile={onUploadFile}
48-
/>
49-
</FilterFileForm>
50-
</FilterForm>
30+
<FilterFileForm
31+
accordionId="accordionId"
32+
expanded
33+
onToggle={onToggle}
34+
/>
5135
)}
5236
/>
5337
</MemoryRouter>
@@ -58,43 +42,52 @@ const renderFilterFileForm = (stripes, initialValues = FILTER) => {
5842
jest.unmock('react-intl');
5943

6044
describe('FilterFileForm', () => {
61-
let stripes;
45+
beforeEach(() => {
46+
jest.clearAllMocks();
47+
global.fetch = mockPost;
48+
});
6249

6350
describe('render FilterFileForm', () => {
6451
beforeEach(() => {
65-
stripes = useStripes();
52+
const stripes = useStripes();
6653
renderFilterFileForm(stripes);
6754
});
6855

56+
afterEach(() => {
57+
delete global.fetch;
58+
});
59+
6960
test('Add file button is rendered', () => {
70-
const selectFile = screen.getByRole('button', {
71-
name: 'Add file to filter',
72-
});
61+
const selectFile = screen.getByRole('button', { name: 'Add file to filter' });
7362
expect(selectFile).toBeInTheDocument();
7463
});
7564

7665
describe('Click add file button', () => {
7766
beforeEach(async () => {
78-
const selectFile = screen.getByRole('button', {
79-
name: 'Add file to filter',
80-
});
67+
const selectFile = screen.getByRole('button', { name: 'Add file to filter' });
8168
await userEvent.click(selectFile);
8269
});
8370

84-
test('should render filter file upload button', () => {
85-
expect(document.querySelector('#filter-file-label-1')).toBeInTheDocument();
71+
it('should render filter file upload card', () => {
72+
expect(document.querySelector('#filter-file-label-0')).toBeInTheDocument();
8673
expect(document.querySelector('#filter-file-upload-button')).toBeInTheDocument();
8774
});
8875

89-
test('should render filter file upload button', async () => {
90-
const filenameInput = document.querySelector('#filter-file-label-1');
76+
test('upload file should call fetch', async () => {
77+
const filenameInput = document.querySelector('#filter-file-label-0');
9178
const uploadFileInput = document.querySelector('#filter-file-input');
92-
const saveButton = screen.getByRole('button', { name: 'Save & close' });
9379

9480
await userEvent.type(filenameInput, 'my filename');
95-
fireEvent.change(uploadFileInput, { target: { filterFiles: [file] } });
81+
await userEvent.upload(uploadFileInput, file);
82+
9683
await waitFor(() => {
97-
expect(saveButton).toBeEnabled();
84+
expect(mockPost).toHaveBeenCalledWith(
85+
expect.stringContaining('/finc-select/files'),
86+
expect.objectContaining({
87+
method: 'POST',
88+
body: file,
89+
})
90+
);
9891
});
9992
});
10093
});

src/components/Filters/FilterFile/UploadFile/DocumentsFieldArray.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,14 @@ const DocumentsFieldArray = ({
5656
const renderFields = () => {
5757
return fields.map((field, index) => (
5858
<EditCard
59-
deleteButtonTooltipText={`${intl.formatMessage({ id: 'ui-finc-select.filter.file.label.delete' })} #${index + 1}`}
60-
header={`${intl.formatMessage({ id: 'ui-finc-select.filter.file.label' })} #${index + 1}`}
59+
deleteButtonTooltipText={intl.formatMessage(
60+
{ id: 'ui-finc-select.filter.file.label.delete.number' },
61+
{ number: index + 1 },
62+
)}
63+
header={intl.formatMessage(
64+
{ id: 'ui-finc-select.filter.file.label.number' },
65+
{ number: index + 1 },
66+
)}
6167
key={field}
6268
onDelete={() => fields.remove(index)}
6369
>

src/components/Filters/FilterFile/UploadFile/DocumentsFieldArray.test.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { MemoryRouter } from 'react-router-dom';
22
import { Form } from 'react-final-form';
33
import arrayMutators from 'final-form-arrays';
44

5-
import { act, screen } from '@folio/jest-config-stripes/testing-library/react';
5+
import { screen } from '@folio/jest-config-stripes/testing-library/react';
66
import userEvent from '@folio/jest-config-stripes/testing-library/user-event';
77
import { StripesContext, useStripes } from '@folio/stripes/core';
88

@@ -43,25 +43,23 @@ describe('DocumentsFieldArray', () => {
4343

4444
const addFileToFilterButton = screen.getByRole('button', { name: 'Add file to filter' });
4545
expect(addFileToFilterButton).toBeInTheDocument();
46-
await act(async () => {
47-
await userEvent.click(addFileToFilterButton);
48-
});
46+
47+
await userEvent.click(addFileToFilterButton);
4948

5049
expect(await screen.findByRole('textbox', { name: 'File' })).toBeInTheDocument();
5150
expect(await screen.findByRole('textbox', { name: 'Criteria' })).toBeInTheDocument();
5251

5352
const deleteButton = screen.getByRole('button', { name: /delete/i });
5453
expect(deleteButton).toBeInTheDocument();
55-
await act(async () => {
56-
await userEvent.click(deleteButton);
57-
});
54+
55+
await userEvent.click(deleteButton);
56+
5857
expect(screen.queryByRole('textbox', { name: 'File' })).not.toBeInTheDocument();
5958
expect(screen.queryByRole('textbox', { name: 'Criteria' })).not.toBeInTheDocument();
6059

61-
await act(async () => {
62-
await userEvent.click(addFileToFilterButton);
63-
await userEvent.click(addFileToFilterButton);
64-
});
60+
await userEvent.click(addFileToFilterButton);
61+
await userEvent.click(addFileToFilterButton);
62+
6563
expect(await screen.findAllByRole('textbox', { name: 'File' })).toHaveLength(2);
6664
expect(await screen.findAllByRole('textbox', { name: 'Criteria' })).toHaveLength(2);
6765
});

test/jest/helpers/renderWithIntlConfiguration.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import React from 'react';
21
import { IntlProvider } from 'react-intl';
32

43
import { render } from '@folio/jest-config-stripes/testing-library/react';
54
import stripesComponentsTranslations from '@folio/stripes-components/translations/stripes-components/en';
5+
import stripesLeipzigComponentsTranslations from '@folio/stripes-leipzig-components/translations/stripes-leipzig-components/en';
66
import stripesSmartComponentsTranslations from '@folio/stripes-smart-components/translations/stripes-smart-components/en';
77

88
import localTranslations from '../../../translations/ui-finc-select/en';
@@ -20,6 +20,10 @@ const translationSets = [
2020
prefix: 'stripes-smart-components',
2121
translations: stripesSmartComponentsTranslations,
2222
},
23+
{
24+
prefix: 'stripes-leipzig-components',
25+
translations: stripesLeipzigComponentsTranslations,
26+
},
2327
];
2428

2529

translations/ui-finc-select/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@
8989
"filter.type": "Type",
9090

9191
"filter.file.label": "File",
92-
"filter.file.label.delete": "Delete file",
92+
"filter.file.label.number": "File #{number}",
93+
"filter.file.label.delete.number": "Delete file #{number}",
9394
"filter.file.criteria": "Criteria",
9495
"filter.file.download": "Download",
9596
"filter.file.name": "Name",

0 commit comments

Comments
 (0)