|
1 | 1 | import * as React from 'react';
|
2 | 2 | import expect from 'expect';
|
3 | 3 | import { fireEvent, render, screen, waitFor } from '@testing-library/react';
|
4 |
| -import { minLength } from 'ra-core'; |
| 4 | +import { |
| 5 | + ListContext, |
| 6 | + minLength, |
| 7 | + ResourceContextProvider, |
| 8 | + testDataProvider, |
| 9 | +} from 'ra-core'; |
5 | 10 |
|
6 | 11 | import {
|
7 | 12 | FilterForm,
|
8 | 13 | getFilterFormValues,
|
9 | 14 | mergeInitialValuesWithDefaultValues,
|
10 | 15 | } from './FilterForm';
|
11 |
| -import { TextInput } from '../../input'; |
| 16 | +import { ReferenceInput, SelectInput, TextInput } from '../../input'; |
12 | 17 | import { AdminContext } from '../../AdminContext';
|
| 18 | +import { Filter } from './Filter'; |
13 | 19 |
|
14 | 20 | describe('<FilterForm />', () => {
|
15 | 21 | const defaultProps = {
|
@@ -86,6 +92,68 @@ describe('<FilterForm />', () => {
|
86 | 92 | };
|
87 | 93 | const setFilters = jest.fn();
|
88 | 94 |
|
| 95 | + render( |
| 96 | + <AdminContext> |
| 97 | + <FilterForm |
| 98 | + {...defaultProps} |
| 99 | + filters={filters} |
| 100 | + displayedFilters={displayedFilters} |
| 101 | + setFilters={setFilters} |
| 102 | + /> |
| 103 | + </AdminContext> |
| 104 | + ); |
| 105 | + fireEvent.change(screen.queryByLabelText('Title') as HTMLElement, { |
| 106 | + target: { value: 'foo' }, |
| 107 | + }); |
| 108 | + await waitFor(() => { |
| 109 | + expect(setFilters).not.toHaveBeenCalled(); |
| 110 | + }); |
| 111 | + }); |
| 112 | + |
| 113 | + it('should provide ressource context for ReferenceInput filters', async () => { |
| 114 | + const defaultProps: any = { |
| 115 | + context: 'form', |
| 116 | + resource: 'comments', |
| 117 | + setFilters: jest.fn(), |
| 118 | + hideFilter: jest.fn(), |
| 119 | + showFilter: jest.fn(), |
| 120 | + displayedFilters: { post_id: true }, |
| 121 | + }; |
| 122 | + const dataProvider = testDataProvider({ |
| 123 | + // @ts-ignore |
| 124 | + getList: () => Promise.resolve({ data: [], total: 0 }), |
| 125 | + }); |
| 126 | + |
| 127 | + render( |
| 128 | + <AdminContext dataProvider={dataProvider}> |
| 129 | + <ResourceContextProvider value="comments"> |
| 130 | + <ListContext.Provider value={defaultProps}> |
| 131 | + <Filter> |
| 132 | + <ReferenceInput source="post_id" reference="posts"> |
| 133 | + <SelectInput optionText="title" /> |
| 134 | + </ReferenceInput> |
| 135 | + </Filter> |
| 136 | + </ListContext.Provider> |
| 137 | + </ResourceContextProvider> |
| 138 | + </AdminContext> |
| 139 | + ); |
| 140 | + await waitFor(() => { |
| 141 | + expect( |
| 142 | + screen.getByText('resources.comments.fields.post_id') |
| 143 | + ).not.toBeNull(); |
| 144 | + }); |
| 145 | + const filters = [ |
| 146 | + <TextInput |
| 147 | + source="title" |
| 148 | + label="Title" |
| 149 | + validate={[minLength(5)]} |
| 150 | + />, |
| 151 | + ]; |
| 152 | + const displayedFilters = { |
| 153 | + title: true, |
| 154 | + }; |
| 155 | + const setFilters = jest.fn(); |
| 156 | + |
89 | 157 | render(
|
90 | 158 | <AdminContext>
|
91 | 159 | <FilterForm
|
|
0 commit comments