mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	refactor: test useFeaturesFilter (#795)
This commit is contained in:
		
							parent
							
								
									bee9fadbc9
								
							
						
					
					
						commit
						d1e96501ec
					
				@ -44,6 +44,7 @@
 | 
				
			|||||||
    "@testing-library/dom": "8.11.3",
 | 
					    "@testing-library/dom": "8.11.3",
 | 
				
			||||||
    "@testing-library/jest-dom": "5.16.2",
 | 
					    "@testing-library/jest-dom": "5.16.2",
 | 
				
			||||||
    "@testing-library/react": "12.1.4",
 | 
					    "@testing-library/react": "12.1.4",
 | 
				
			||||||
 | 
					    "@testing-library/react-hooks": "^7.0.2",
 | 
				
			||||||
    "@testing-library/user-event": "13.5.0",
 | 
					    "@testing-library/user-event": "13.5.0",
 | 
				
			||||||
    "@types/debounce": "1.2.1",
 | 
					    "@types/debounce": "1.2.1",
 | 
				
			||||||
    "@types/deep-diff": "1.0.1",
 | 
					    "@types/deep-diff": "1.0.1",
 | 
				
			||||||
@ -80,8 +81,8 @@
 | 
				
			|||||||
    "react-scripts": "4.0.3",
 | 
					    "react-scripts": "4.0.3",
 | 
				
			||||||
    "react-test-renderer": "17.0.2",
 | 
					    "react-test-renderer": "17.0.2",
 | 
				
			||||||
    "react-timeago": "6.2.1",
 | 
					    "react-timeago": "6.2.1",
 | 
				
			||||||
    "semver": "^7.3.5",
 | 
					 | 
				
			||||||
    "sass": "1.49.9",
 | 
					    "sass": "1.49.9",
 | 
				
			||||||
 | 
					    "semver": "^7.3.5",
 | 
				
			||||||
    "swr": "1.2.2",
 | 
					    "swr": "1.2.2",
 | 
				
			||||||
    "typescript": "4.6.2"
 | 
					    "typescript": "4.6.2"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										213
									
								
								frontend/src/hooks/__snapshots__/useFeaturesFilter.test.ts.snap
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								frontend/src/hooks/__snapshots__/useFeaturesFilter.test.ts.snap
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,213 @@
 | 
				
			|||||||
 | 
					// Jest Snapshot v1, https://goo.gl/fbAQLP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports[`useFeaturesFilter constraints 1`] = `
 | 
				
			||||||
 | 
					Object {
 | 
				
			||||||
 | 
					  "filter": Object {
 | 
				
			||||||
 | 
					    "project": "*",
 | 
				
			||||||
 | 
					    "query": "xyz",
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "filtered": Array [
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "a",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [
 | 
				
			||||||
 | 
					        Object {
 | 
				
			||||||
 | 
					          "constraints": Array [],
 | 
				
			||||||
 | 
					          "id": "1",
 | 
				
			||||||
 | 
					          "name": "1",
 | 
				
			||||||
 | 
					          "parameters": Object {},
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        Object {
 | 
				
			||||||
 | 
					          "constraints": Array [],
 | 
				
			||||||
 | 
					          "id": "1",
 | 
				
			||||||
 | 
					          "name": "1",
 | 
				
			||||||
 | 
					          "parameters": Object {},
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        Object {
 | 
				
			||||||
 | 
					          "constraints": Array [
 | 
				
			||||||
 | 
					            Object {
 | 
				
			||||||
 | 
					              "contextName": "",
 | 
				
			||||||
 | 
					              "operator": "IN",
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            Object {
 | 
				
			||||||
 | 
					              "contextName": "",
 | 
				
			||||||
 | 
					              "operator": "IN",
 | 
				
			||||||
 | 
					              "value": "xyz",
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            Object {
 | 
				
			||||||
 | 
					              "contextName": "",
 | 
				
			||||||
 | 
					              "operator": "IN",
 | 
				
			||||||
 | 
					              "values": Array [
 | 
				
			||||||
 | 
					                "xyz",
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "id": "1",
 | 
				
			||||||
 | 
					          "name": "1",
 | 
				
			||||||
 | 
					          "parameters": Object {},
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "setFilter": [Function],
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports[`useFeaturesFilter empty 1`] = `
 | 
				
			||||||
 | 
					Object {
 | 
				
			||||||
 | 
					  "filter": Object {
 | 
				
			||||||
 | 
					    "project": "*",
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "filtered": Array [],
 | 
				
			||||||
 | 
					  "setFilter": [Function],
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports[`useFeaturesFilter equal 1`] = `
 | 
				
			||||||
 | 
					Object {
 | 
				
			||||||
 | 
					  "filter": Object {
 | 
				
			||||||
 | 
					    "project": "*",
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "filtered": Array [
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "1",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "1",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "1",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "setFilter": [Function],
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports[`useFeaturesFilter project 1`] = `
 | 
				
			||||||
 | 
					Object {
 | 
				
			||||||
 | 
					  "filter": Object {
 | 
				
			||||||
 | 
					    "project": "2",
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "filtered": Array [
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "2",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "2",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "setFilter": [Function],
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports[`useFeaturesFilter query 1`] = `
 | 
				
			||||||
 | 
					Object {
 | 
				
			||||||
 | 
					  "filter": Object {
 | 
				
			||||||
 | 
					    "project": "*",
 | 
				
			||||||
 | 
					    "query": "bc",
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "filtered": Array [
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "abc",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    Object {
 | 
				
			||||||
 | 
					      "archived": false,
 | 
				
			||||||
 | 
					      "createdAt": "22006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "description": "1",
 | 
				
			||||||
 | 
					      "enabled": false,
 | 
				
			||||||
 | 
					      "environments": Array [],
 | 
				
			||||||
 | 
					      "impressionData": false,
 | 
				
			||||||
 | 
					      "lastSeenAt": "2006-01-02T15:04:05Z",
 | 
				
			||||||
 | 
					      "name": "1",
 | 
				
			||||||
 | 
					      "project": "abcd",
 | 
				
			||||||
 | 
					      "stale": false,
 | 
				
			||||||
 | 
					      "strategies": Array [],
 | 
				
			||||||
 | 
					      "type": "1",
 | 
				
			||||||
 | 
					      "variants": Array [],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "setFilter": [Function],
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					`;
 | 
				
			||||||
							
								
								
									
										129
									
								
								frontend/src/hooks/useFeaturesFilter.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								frontend/src/hooks/useFeaturesFilter.test.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,129 @@
 | 
				
			|||||||
 | 
					import { renderHook, act } from '@testing-library/react-hooks';
 | 
				
			||||||
 | 
					import { useFeaturesFilter } from 'hooks/useFeaturesFilter';
 | 
				
			||||||
 | 
					import { IFeatureToggle } from 'interfaces/featureToggle';
 | 
				
			||||||
 | 
					import { IConstraint, IFeatureStrategy } from 'interfaces/strategy';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test('useFeaturesFilter empty', () => {
 | 
				
			||||||
 | 
					    const { result } = renderHook(() => useFeaturesFilter([]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(result.current.filtered.length).toEqual(0);
 | 
				
			||||||
 | 
					    expect(result.current).toMatchSnapshot();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test('useFeaturesFilter equal', () => {
 | 
				
			||||||
 | 
					    const { result } = renderHook(() =>
 | 
				
			||||||
 | 
					        useFeaturesFilter([
 | 
				
			||||||
 | 
					            mockFeatureToggle(),
 | 
				
			||||||
 | 
					            mockFeatureToggle(),
 | 
				
			||||||
 | 
					            mockFeatureToggle(),
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(result.current.filtered.length).toEqual(3);
 | 
				
			||||||
 | 
					    expect(result.current).toMatchSnapshot();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test('useFeaturesFilter project', () => {
 | 
				
			||||||
 | 
					    const { result } = renderHook(() =>
 | 
				
			||||||
 | 
					        useFeaturesFilter([
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: '1' }),
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: '2' }),
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: '2' }),
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: '3' }),
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    act(() => {
 | 
				
			||||||
 | 
					        result.current.setFilter({ project: '2' });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(result.current.filtered.length).toEqual(2);
 | 
				
			||||||
 | 
					    expect(result.current).toMatchSnapshot();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test('useFeaturesFilter query', () => {
 | 
				
			||||||
 | 
					    const { result } = renderHook(() =>
 | 
				
			||||||
 | 
					        useFeaturesFilter([
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: 'a' }),
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: 'ab' }),
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: 'abc' }),
 | 
				
			||||||
 | 
					            mockFeatureToggle({ project: 'abcd' }),
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    act(() => {
 | 
				
			||||||
 | 
					        result.current.setFilter({ project: '*', query: 'bc' });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(result.current.filtered.length).toEqual(2);
 | 
				
			||||||
 | 
					    expect(result.current).toMatchSnapshot();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test('useFeaturesFilter constraints', () => {
 | 
				
			||||||
 | 
					    const { result } = renderHook(() =>
 | 
				
			||||||
 | 
					        useFeaturesFilter([
 | 
				
			||||||
 | 
					            mockFeatureToggle({
 | 
				
			||||||
 | 
					                project: 'a',
 | 
				
			||||||
 | 
					                strategies: [
 | 
				
			||||||
 | 
					                    mockFeatureStrategy(),
 | 
				
			||||||
 | 
					                    mockFeatureStrategy(),
 | 
				
			||||||
 | 
					                    mockFeatureStrategy({
 | 
				
			||||||
 | 
					                        constraints: [
 | 
				
			||||||
 | 
					                            mockConstraint(),
 | 
				
			||||||
 | 
					                            mockConstraint({ value: 'xyz' }),
 | 
				
			||||||
 | 
					                            mockConstraint({ values: ['xyz'] }),
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                    }),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					            }),
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    act(() => {
 | 
				
			||||||
 | 
					        result.current.setFilter({ project: '*', query: 'xyz' });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(result.current.filtered.length).toEqual(1);
 | 
				
			||||||
 | 
					    expect(result.current).toMatchSnapshot();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const mockFeatureToggle = (
 | 
				
			||||||
 | 
					    overrides?: Partial<IFeatureToggle>
 | 
				
			||||||
 | 
					): IFeatureToggle => {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					        name: '1',
 | 
				
			||||||
 | 
					        description: '1',
 | 
				
			||||||
 | 
					        type: '1',
 | 
				
			||||||
 | 
					        project: '1',
 | 
				
			||||||
 | 
					        archived: false,
 | 
				
			||||||
 | 
					        enabled: false,
 | 
				
			||||||
 | 
					        stale: false,
 | 
				
			||||||
 | 
					        impressionData: false,
 | 
				
			||||||
 | 
					        strategies: [],
 | 
				
			||||||
 | 
					        variants: [],
 | 
				
			||||||
 | 
					        environments: [],
 | 
				
			||||||
 | 
					        createdAt: '22006-01-02T15:04:05Z',
 | 
				
			||||||
 | 
					        lastSeenAt: '2006-01-02T15:04:05Z',
 | 
				
			||||||
 | 
					        ...overrides,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const mockFeatureStrategy = (
 | 
				
			||||||
 | 
					    overrides?: Partial<IFeatureStrategy>
 | 
				
			||||||
 | 
					): IFeatureStrategy => {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					        id: '1',
 | 
				
			||||||
 | 
					        name: '1',
 | 
				
			||||||
 | 
					        constraints: [],
 | 
				
			||||||
 | 
					        parameters: {},
 | 
				
			||||||
 | 
					        ...overrides,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const mockConstraint = (overrides?: Partial<IConstraint>): IConstraint => {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					        contextName: '',
 | 
				
			||||||
 | 
					        operator: 'IN',
 | 
				
			||||||
 | 
					        ...overrides,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -1805,6 +1805,17 @@
 | 
				
			|||||||
    lodash "^4.17.15"
 | 
					    lodash "^4.17.15"
 | 
				
			||||||
    redent "^3.0.0"
 | 
					    redent "^3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@testing-library/react-hooks@^7.0.2":
 | 
				
			||||||
 | 
					  version "7.0.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz#3388d07f562d91e7f2431a4a21b5186062ecfee0"
 | 
				
			||||||
 | 
					  integrity sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@babel/runtime" "^7.12.5"
 | 
				
			||||||
 | 
					    "@types/react" ">=16.9.0"
 | 
				
			||||||
 | 
					    "@types/react-dom" ">=16.9.0"
 | 
				
			||||||
 | 
					    "@types/react-test-renderer" ">=16.9.0"
 | 
				
			||||||
 | 
					    react-error-boundary "^3.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@testing-library/react@12.1.4":
 | 
					"@testing-library/react@12.1.4":
 | 
				
			||||||
  version "12.1.4"
 | 
					  version "12.1.4"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.4.tgz#09674b117e550af713db3f4ec4c0942aa8bbf2c0"
 | 
					  resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.4.tgz#09674b117e550af713db3f4ec4c0942aa8bbf2c0"
 | 
				
			||||||
@ -2038,7 +2049,7 @@
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@types/react" "*"
 | 
					    "@types/react" "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@types/react-dom@17.0.13":
 | 
					"@types/react-dom@17.0.13", "@types/react-dom@>=16.9.0":
 | 
				
			||||||
  version "17.0.13"
 | 
					  version "17.0.13"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.13.tgz#a3323b974ee4280070982b3112351bb1952a7809"
 | 
					  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.13.tgz#a3323b974ee4280070982b3112351bb1952a7809"
 | 
				
			||||||
  integrity sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==
 | 
					  integrity sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==
 | 
				
			||||||
@ -2062,7 +2073,7 @@
 | 
				
			|||||||
    "@types/history" "*"
 | 
					    "@types/history" "*"
 | 
				
			||||||
    "@types/react" "*"
 | 
					    "@types/react" "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@types/react-test-renderer@17.0.1":
 | 
					"@types/react-test-renderer@17.0.1", "@types/react-test-renderer@>=16.9.0":
 | 
				
			||||||
  version "17.0.1"
 | 
					  version "17.0.1"
 | 
				
			||||||
  resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz"
 | 
					  resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz"
 | 
				
			||||||
  integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==
 | 
					  integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==
 | 
				
			||||||
@ -2092,7 +2103,7 @@
 | 
				
			|||||||
    "@types/scheduler" "*"
 | 
					    "@types/scheduler" "*"
 | 
				
			||||||
    csstype "^3.0.2"
 | 
					    csstype "^3.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@types/react@17.0.40":
 | 
					"@types/react@17.0.40", "@types/react@>=16.9.0":
 | 
				
			||||||
  version "17.0.40"
 | 
					  version "17.0.40"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.40.tgz#dc010cee6254d5239a138083f3799a16638e6bad"
 | 
					  resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.40.tgz#dc010cee6254d5239a138083f3799a16638e6bad"
 | 
				
			||||||
  integrity sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==
 | 
					  integrity sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==
 | 
				
			||||||
@ -10051,6 +10062,13 @@ react-dom@17.0.2:
 | 
				
			|||||||
    object-assign "^4.1.1"
 | 
					    object-assign "^4.1.1"
 | 
				
			||||||
    scheduler "^0.20.2"
 | 
					    scheduler "^0.20.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					react-error-boundary@^3.1.0:
 | 
				
			||||||
 | 
					  version "3.1.4"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0"
 | 
				
			||||||
 | 
					  integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@babel/runtime" "^7.12.5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
react-error-overlay@^6.0.9:
 | 
					react-error-overlay@^6.0.9:
 | 
				
			||||||
  version "6.0.9"
 | 
					  version "6.0.9"
 | 
				
			||||||
  resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz"
 | 
					  resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user