From 1790e31c505902de7056c0fb64319a5fdcca1bbe Mon Sep 17 00:00:00 2001 From: Tiago Gimenes Date: Wed, 15 Jun 2022 09:50:50 -0300 Subject: [PATCH] fix tests --- packages/api/src/__generated__/schema.ts | 28 +++- .../test/__snapshots__/queries.test.ts.snap | 23 --- packages/api/test/schema.test.ts | 6 +- packages/sdk/test/search/Provider.test.tsx | 143 +++++++++++++++--- packages/ui/src/atoms/Slider/Slider.test.tsx | 15 +- .../molecules/PriceRange/PriceRange.test.tsx | 10 +- 6 files changed, 170 insertions(+), 55 deletions(-) diff --git a/packages/api/src/__generated__/schema.ts b/packages/api/src/__generated__/schema.ts index 437e05bfe4..94e1082e4b 100644 --- a/packages/api/src/__generated__/schema.ts +++ b/packages/api/src/__generated__/schema.ts @@ -321,17 +321,29 @@ export type StoreCurrency = { symbol: Scalars['String']; }; -/** Search facet information. */ -export type StoreFacet = { - __typename?: 'StoreFacet'; +export type StoreFacet = StoreFacetBoolean | StoreFacetRange; + +/** Search facet boolean information. */ +export type StoreFacetBoolean = { + __typename?: 'StoreFacetBoolean'; + /** Facet key. */ + key: Scalars['String']; + /** Facet label. */ + label: Scalars['String']; + /** Array with information on each facet value. */ + values: Array; +}; + +/** Search facet range information. */ +export type StoreFacetRange = { + __typename?: 'StoreFacetRange'; /** Facet key. */ key: Scalars['String']; /** Facet label. */ label: Scalars['String']; - /** Facet type. Possible values are `BOOLEAN` and `RANGE`. */ - type: StoreFacetType; + max: StoreFacetValueRange; /** Array with information on each facet value. */ - values: Array; + min: StoreFacetValueRange; }; /** Search facet type. */ @@ -343,8 +355,8 @@ export const enum StoreFacetType { }; /** Information of a specific facet value. */ -export type StoreFacetValue = { - __typename?: 'StoreFacetValue'; +export type StoreFacetValueBoolean = { + __typename?: 'StoreFacetValueBoolean'; /** Facet value label. */ label: Scalars['String']; /** Number of items with this facet. */ diff --git a/packages/api/test/__snapshots__/queries.test.ts.snap b/packages/api/test/__snapshots__/queries.test.ts.snap index f2dd88f8ec..943153d582 100644 --- a/packages/api/test/__snapshots__/queries.test.ts.snap +++ b/packages/api/test/__snapshots__/queries.test.ts.snap @@ -621,32 +621,10 @@ Object { Object { "key": "price", "label": "Pre�o", - "type": "RANGE", - "values": Array [ - Object { - "label": "unknown", - "quantity": 646, - "selected": false, - "value": "0.23-to-150", - }, - Object { - "label": "unknown", - "quantity": 601, - "selected": false, - "value": "360-to-995.92", - }, - Object { - "label": "unknown", - "quantity": 579, - "selected": false, - "value": "150-to-360", - }, - ], }, Object { "key": "category-2", "label": "Categoria", - "type": "BOOLEAN", "values": Array [ Object { "label": "Chairs", @@ -665,7 +643,6 @@ Object { Object { "key": "brand", "label": "Marca", - "type": "BOOLEAN", "values": Array [ Object { "label": "Acer", diff --git a/packages/api/test/schema.test.ts b/packages/api/test/schema.test.ts index ce112217e1..135ec210e9 100644 --- a/packages/api/test/schema.test.ts +++ b/packages/api/test/schema.test.ts @@ -18,7 +18,10 @@ const TYPES = [ 'StoreCollectionMeta', 'StoreCollection', 'StoreFacet', - 'StoreFacetValue', + 'StoreFacetRange', + 'StoreFacetBoolean', + 'StoreFacetValueRange', + 'StoreFacetValueBoolean', 'StoreImage', 'IStoreImage', 'StoreOffer', @@ -38,7 +41,6 @@ const TYPES = [ 'StoreCollectionConnection', 'StoreSort', 'IStoreSelectedFacet', - 'StoreFacetType', 'StoreSearchResult', 'StoreReviewRating', 'StoreReview', diff --git a/packages/sdk/test/search/Provider.test.tsx b/packages/sdk/test/search/Provider.test.tsx index 1212d7a36a..f4f5262cbf 100644 --- a/packages/sdk/test/search/Provider.test.tsx +++ b/packages/sdk/test/search/Provider.test.tsx @@ -6,7 +6,11 @@ import type { ComponentPropsWithoutRef } from 'react' import { formatSearchState, initSearchState, + removeFacet, SearchProvider, + setFacet, + toggleFacet, + toggleFacets, useSearch, } from '../../src' @@ -34,7 +38,12 @@ test('SearchProvider: change sort ordering', async () => { expect(result.current.state.sort).toBe('score_desc') - act(() => result.current.setSort('name_asc')) + act(() => { + result.current.setState({ + ...result.current.state, + sort: 'name_asc', + }) + }) expect(mock).toBeCalledWith(formatSearchState({ ...state, sort: 'name_asc' })) }) @@ -51,10 +60,20 @@ test('SearchProvider: Set full text term', async () => { expect(result.current.state.term).toBeNull() - act(() => result.current.setTerm(null)) + act(() => { + result.current.setState({ + ...result.current.state, + term: null, + }) + }) expect(mock).not.toHaveBeenCalled() - act(() => result.current.setTerm(fullTextTerm)) + act(() => { + result.current.setState({ + ...result.current.state, + term: fullTextTerm, + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, term: fullTextTerm }) ) @@ -72,7 +91,12 @@ test('SearchProvider: Set current page', async () => { expect(result.current.state.page).toBe(0) - act(() => result.current.setPage(page)) + act(() => { + result.current.setState({ + ...result.current.state, + page, + }) + }) expect(mock).toBeCalledWith(formatSearchState({ ...state, page })) }) @@ -92,7 +116,12 @@ test('SearchProvider: selects a simple facet', async () => { expect(result.current.state.selectedFacets).toHaveLength(0) - act(() => result.current.setFacet(facet1)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: setFacet(result.current.state.selectedFacets, facet1), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet1] }) ) @@ -120,7 +149,12 @@ test('SearchProvider: selects a simple facet when more facets are inside the sta ), }) - act(() => result.current.setFacet(facet2)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: setFacet(result.current.state.selectedFacets, facet2), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet1, facet2] }) ) @@ -148,10 +182,24 @@ test('SearchProvider: Facet uniqueness', async () => { ), }) - act(() => result.current.setFacet(facet2, true)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: setFacet( + result.current.state.selectedFacets, + facet2, + true + ), + }) + }) expect(mock).not.toHaveBeenCalled() - act(() => result.current.setFacet(facet1)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: setFacet(result.current.state.selectedFacets, facet1), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet2, facet1] }) ) @@ -179,7 +227,12 @@ test('SearchProvider: Remove facet selection', async () => { ), }) - act(() => result.current.removeFacet(facet2)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: removeFacet(result.current.state.selectedFacets, facet2), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet1, facet2] }) ) @@ -208,7 +261,12 @@ test('SearchProvider: Remove initial facet', async () => { }) /** Cannot remove the first facet */ - act(() => result.current.removeFacet(facet1)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: removeFacet(result.current.state.selectedFacets, facet1), + }) + }) expect(mock).not.toHaveBeenCalled() }) @@ -242,15 +300,30 @@ test('SearchProvider: Toggle Facet', async () => { expect(result.current.state.selectedFacets).toEqual([facet1, facet2]) /** Cannot remove the first facet */ - act(() => result.current.toggleFacet(facet1)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: toggleFacet(result.current.state.selectedFacets, facet1), + }) + }) expect(mock).not.toHaveBeenCalled() - act(() => result.current.toggleFacet(facet2)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: toggleFacet(result.current.state.selectedFacets, facet2), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet1] }) ) - act(() => result.current.toggleFacet(facet3)) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: toggleFacet(result.current.state.selectedFacets, facet3), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet1, facet2, facet3] }) ) @@ -283,12 +356,28 @@ test('SearchProvider: Toggle Facets', async () => { ), }) - act(() => result.current.toggleFacets([facet2, facet3])) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: toggleFacets(result.current.state.selectedFacets, [ + facet2, + facet3, + ]), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet1] }) ) - act(() => result.current.toggleFacets([facet1, facet2])) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: toggleFacets(result.current.state.selectedFacets, [ + facet1, + facet2, + ]), + }) + }) expect(mock).toBeCalledWith( formatSearchState({ ...state, selectedFacets: [facet1] }) ) @@ -316,8 +405,26 @@ test('SearchProvider: onChange is called', async () => { expect(mock).toHaveBeenCalledTimes(0) - act(() => result.current.setSort('name_asc')) - act(() => result.current.setFacet({ key: 'size', value: 'xm' })) - act(() => result.current.setPage(10)) + act(() => { + result.current.setState({ + ...result.current.state, + sort: 'name_asc', + }) + }) + act(() => { + result.current.setState({ + ...result.current.state, + selectedFacets: setFacet(result.current.state.selectedFacets, { + key: 'size', + value: 'xm', + }), + }) + }) + act(() => { + result.current.setState({ + ...result.current.state, + page: 10, + }) + }) expect(mock).toHaveBeenCalledTimes(3) }) diff --git a/packages/ui/src/atoms/Slider/Slider.test.tsx b/packages/ui/src/atoms/Slider/Slider.test.tsx index fe6b197da2..86f44c9387 100644 --- a/packages/ui/src/atoms/Slider/Slider.test.tsx +++ b/packages/ui/src/atoms/Slider/Slider.test.tsx @@ -4,16 +4,27 @@ import React from 'react' import Slider from './Slider' +const props = { + min: { + absolute: 0, + selected: 0, + }, + max: { + absolute: 100, + selected: 100, + }, +} + describe('Slider', () => { it('`data-store-slider` is present', () => { - const { getByTestId } = render() + const { getByTestId } = render() expect(getByTestId('store-slider')).toHaveAttribute('data-store-slider') }) describe('Accessibility', () => { it('should have no violations', async () => { - const { getByTestId } = render() + const { getByTestId } = render() expect(await axe(getByTestId('store-slider'))).toHaveNoViolations() }) diff --git a/packages/ui/src/molecules/PriceRange/PriceRange.test.tsx b/packages/ui/src/molecules/PriceRange/PriceRange.test.tsx index faf449fde3..36970c5c21 100644 --- a/packages/ui/src/molecules/PriceRange/PriceRange.test.tsx +++ b/packages/ui/src/molecules/PriceRange/PriceRange.test.tsx @@ -13,8 +13,14 @@ function formatter(price: number) { const props = { formatter, - min: 0, - max: 100, + min: { + absolute: 0, + selected: 0, + }, + max: { + absolute: 100, + selected: 100, + }, ariaLabel: 'My price range', }