From e541f665e38fc71f4f83e6670f89992a552f0d75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Andr=C3=A9?= Date: Fri, 24 Nov 2023 09:21:36 -0300 Subject: [PATCH 1/4] test: provide a separate cache for each test --- .../strategies/SinglePostFetchStrategy.ts | 2 +- .../__tests__/PostOrPostsFetchStrategy.ts | 2 +- .../react/hooks/__tests__/useFetchPost.tsx | 19 ++++++++++++++++--- .../hooks/__tests__/useFetchPostOrPosts.tsx | 17 +++++++++++++---- .../react/hooks/__tests__/useFetchPosts.tsx | 9 +++++++-- .../react/hooks/__tests__/useFetchSearch.tsx | 7 ++++++- 6 files changed, 44 insertions(+), 12 deletions(-) diff --git a/packages/core/src/data/strategies/SinglePostFetchStrategy.ts b/packages/core/src/data/strategies/SinglePostFetchStrategy.ts index fe36bf9d4..5ba018529 100644 --- a/packages/core/src/data/strategies/SinglePostFetchStrategy.ts +++ b/packages/core/src/data/strategies/SinglePostFetchStrategy.ts @@ -249,7 +249,7 @@ export class SinglePostFetchStrategy< if (!post) { throw new NotFoundError( - `Post was found but did not match current path: "${this.path}""`, + `Post #${result[0].id} - "${result[0].link}" was found but did not match current path: "${this.path}""`, ); } diff --git a/packages/core/src/data/strategies/__tests__/PostOrPostsFetchStrategy.ts b/packages/core/src/data/strategies/__tests__/PostOrPostsFetchStrategy.ts index 9d12a92a3..2af7cb18d 100644 --- a/packages/core/src/data/strategies/__tests__/PostOrPostsFetchStrategy.ts +++ b/packages/core/src/data/strategies/__tests__/PostOrPostsFetchStrategy.ts @@ -183,7 +183,7 @@ describe('PostOrPostsFetchStrategy', () => { ); await expect(() => fetchStrategy.fetcher('', params)).rejects.toThrow( - 'Neither single or archive returned data: The request to /wp-json/wp/v2/posts?_embed=true&categories=distinctio-rerum-ratione-maxime-repudiandae-laboriosam-quam returned no data, Post was found but did not match current path: "/uncategorized/distinctio-rerum-ratione-maxime-repudiandae-laboriosam-quam"', + 'Neither single or archive returned data: The request to /wp-json/wp/v2/posts?_embed=true&categories=distinctio-rerum-ratione-maxime-repudiandae-laboriosam-quam returned no data, Post #54 - "https://js1.10up.com/2020/05/07/distinctio-rerum-ratione-maxime-repudiandae-laboriosam-quam/" was found but did not match current path: "/uncategorized/distinctio-rerum-ratione-maxime-repudiandae-laboriosam-quam"', ); // now make it work by faking full path diff --git a/packages/core/src/react/hooks/__tests__/useFetchPost.tsx b/packages/core/src/react/hooks/__tests__/useFetchPost.tsx index cb089a064..bde415af9 100644 --- a/packages/core/src/react/hooks/__tests__/useFetchPost.tsx +++ b/packages/core/src/react/hooks/__tests__/useFetchPost.tsx @@ -1,6 +1,7 @@ import { renderHook, waitFor } from '@testing-library/react'; import * as React from 'react'; import { expectTypeOf } from 'expect-type'; +import { SWRConfig } from 'swr'; import { DRAFT_POST_ID, VALID_AUTH_TOKEN } from '../../../../test/server'; import { PostEntity, PostParams } from '../../../data'; import { SettingsProvider } from '../../provider'; @@ -10,7 +11,11 @@ import { mockUseFetchErrorResponse } from '../mocks'; describe('useFetchPost', () => { const wrapper = ({ children }) => { - return {children}; + return ( + new Map() }}> + {children} + + ); }; it('throws errors if accessing data before fetch', async () => { @@ -185,7 +190,15 @@ describe('useFetchPost', () => { it('reads param from the url and sets isMainQuery flag', async () => { const { result } = renderHook( - () => useFetchPost({}, {}, '/modi-qui-dignissimos-sed-assumenda-sint-iusto'), + () => + useFetchPost( + { + fullPath: + 'https://js1.10up.com/2020/05/07/modi-qui-dignissimos-sed-assumenda-sint-iusto/', + }, + {}, + '/modi-qui-dignissimos-sed-assumenda-sint-iusto/', + ), { wrapper, }, @@ -200,7 +213,7 @@ describe('useFetchPost', () => { }); const { result: secondResult } = renderHook( - () => useFetchPost({ slug: 'modi-qui-dignissimos-sed-assumenda-sint-iusto' }), + () => useFetchPost({ slug: 'modi-qui-dignissimos-sed-assumenda-sint-iusto' }, {}), { wrapper, }, diff --git a/packages/core/src/react/hooks/__tests__/useFetchPostOrPosts.tsx b/packages/core/src/react/hooks/__tests__/useFetchPostOrPosts.tsx index c712bfae0..d65894a16 100644 --- a/packages/core/src/react/hooks/__tests__/useFetchPostOrPosts.tsx +++ b/packages/core/src/react/hooks/__tests__/useFetchPostOrPosts.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import { renderHook, waitFor } from '@testing-library/react'; +import { SWRConfig } from 'swr'; import { SettingsProvider } from '../../provider'; import { setHeadstartWPConfig } from '../../../utils'; import { useFetchPostOrPosts } from '../useFetchPostOrPosts'; @@ -11,6 +12,14 @@ import { mockUseFetchErrorResponse } from '../mocks'; describe('useFetchPostOrPosts', () => { const wrapper = ({ children }) => { + return ( + new Map() }}> + {children} + + ); + }; + + const wrapperWithCache = ({ children }) => { return {children}; }; @@ -120,7 +129,7 @@ describe('useFetchPostOrPosts', () => { '/distinctio-rerum-ratione-maxime-repudiandae-laboriosam-quam', ), { - wrapper, + wrapper: wrapperWithCache, }, ); @@ -138,7 +147,7 @@ describe('useFetchPostOrPosts', () => { '/distinctio-rerum-ratione-maxime-repudiandae-laboriosam-quam', ), { - wrapper, + wrapper: wrapperWithCache, }, ); @@ -161,7 +170,7 @@ describe('useFetchPostOrPosts', () => { }; const { result } = renderHook(() => useFetchPostOrPosts(p, undefined, '/uncategorized'), { - wrapper, + wrapper: wrapperWithCache, }); await waitFor(() => { @@ -171,7 +180,7 @@ describe('useFetchPostOrPosts', () => { const { result: result2 } = renderHook( () => useFetchPosts(p.archive, undefined, '/uncategorized'), { - wrapper, + wrapper: wrapperWithCache, }, ); diff --git a/packages/core/src/react/hooks/__tests__/useFetchPosts.tsx b/packages/core/src/react/hooks/__tests__/useFetchPosts.tsx index 3d5a2f3ef..33065ac6b 100644 --- a/packages/core/src/react/hooks/__tests__/useFetchPosts.tsx +++ b/packages/core/src/react/hooks/__tests__/useFetchPosts.tsx @@ -2,6 +2,7 @@ import { renderHook, waitFor } from '@testing-library/react'; import { expectTypeOf } from 'expect-type'; import * as React from 'react'; +import { SWRConfig } from 'swr'; import { PostEntity, PostsArchiveParams } from '../../../data'; import { SettingsProvider } from '../../provider'; import { useFetchPosts } from '../useFetchPosts'; @@ -11,7 +12,11 @@ import { mockUseFetchErrorResponse } from '../mocks'; describe('useFetchPosts', () => { const wrapper = ({ children }) => { - return {children}; + return ( + new Map() }}> + {children} + + ); }; beforeEach(() => { @@ -338,7 +343,7 @@ describe('useFetchPosts', () => { () => useFetchPosts( { - randomArgument: 10, // bypass swr cache + // randomArgument: 10, // bypass swr cache category: 'uncategorized', per_page: 1, }, diff --git a/packages/core/src/react/hooks/__tests__/useFetchSearch.tsx b/packages/core/src/react/hooks/__tests__/useFetchSearch.tsx index bcb021cbb..901936205 100644 --- a/packages/core/src/react/hooks/__tests__/useFetchSearch.tsx +++ b/packages/core/src/react/hooks/__tests__/useFetchSearch.tsx @@ -2,6 +2,7 @@ import { renderHook, waitFor } from '@testing-library/react'; import { expectTypeOf } from 'expect-type'; import * as React from 'react'; +import { SWRConfig } from 'swr'; import { PostEntity, PostsArchiveParams } from '../../../data'; import { SettingsProvider } from '../../provider'; import { useFetchSearch } from '../useFetchSearch'; @@ -11,7 +12,11 @@ import { mockUseFetchErrorResponse } from '../mocks'; describe('useFetchSearch', () => { const wrapper = ({ children }) => { - return {children}; + return ( + new Map() }}> + {children} + + ); }; setHeadlessConfig({ From 97d720aa3dc2d80785ca431b9d83c1a4c7578326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Andr=C3=A9?= Date: Fri, 1 Dec 2023 13:59:22 -0300 Subject: [PATCH 2/4] docs: linaria --- docs/documentation/08-Guides/linaria.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 docs/documentation/08-Guides/linaria.md diff --git a/docs/documentation/08-Guides/linaria.md b/docs/documentation/08-Guides/linaria.md new file mode 100644 index 000000000..045960313 --- /dev/null +++ b/docs/documentation/08-Guides/linaria.md @@ -0,0 +1,13 @@ +# Linaria (CSS-in-JS) + +HeadstartWP offers a straightforward integration with [Linaria](https://github.com/callstack/linaria), a zero-runtime CSS-in-JS solution. To use it, simply install the following linaria packages. + +``` +npm install --save-dev @linaria/babel-preset @linaria/core @linaria/react @linaria/shaker @linaria/webpack-loader +``` + +The [withHeadstartWPConfig](/docs/api/namespaces/headstartwp_next.config/#withheadstartwpconfig) function will detect the presence of the Linaria packages and will enable the build steps necessary to compile Linaria. + +:::caution +If you're on a monorepo setup, these packages should be installed on the Next.js project. +:::caution \ No newline at end of file From 7b0340d58f24a2f12b8ce0408c616339e2bd9f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Andr=C3=A9?= Date: Fri, 1 Dec 2023 14:01:04 -0300 Subject: [PATCH 3/4] docs: remove empty docs page --- docs/documentation/08-Guides/complex-urls-structure.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 docs/documentation/08-Guides/complex-urls-structure.md diff --git a/docs/documentation/08-Guides/complex-urls-structure.md b/docs/documentation/08-Guides/complex-urls-structure.md deleted file mode 100644 index be7de90fd..000000000 --- a/docs/documentation/08-Guides/complex-urls-structure.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -sidebar_label: Complex URL Structures ---- - -# Complex URL structures \ No newline at end of file From ddb11c448e062993b0836561e9c485c051d77ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Andr=C3=A9?= Date: Fri, 1 Dec 2023 14:08:32 -0300 Subject: [PATCH 4/4] docs: fix search --- docs/docusaurus.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 350dcfbd4..01053107c 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -95,8 +95,8 @@ const config = { require.resolve('@easyops-cn/docusaurus-search-local'), { indexDocs: true, - docsRouteBasePath: ['reference', 'docs'], - docsDir: ['default', 'docs'], + docsRouteBasePath: ['api', 'learn'], + docsDir: ['documentation', 'docs'], hashed: true, }, ],