|
1 | | -/* eslint-env jest */ |
2 | 1 | import { join } from 'path' |
3 | 2 | import webdriver from 'next-webdriver' |
4 | 3 | import cheerio from 'cheerio' |
5 | | -import { check } from 'next-test-utils' |
6 | | -import { File } from 'next-test-utils' |
| 4 | +import { File, check } from 'next-test-utils' |
7 | 5 |
|
8 | | -const appDir = join(__dirname, '../prerelease') |
9 | | -const page = new File(join(appDir, 'components/dynamic-suspense.js')) |
10 | | - |
11 | | -function writeDynamicTestComponent({ ssr, suspense = false }) { |
12 | | - const content = `import { Suspense } from 'react' |
13 | | - import dynamic from 'next/dynamic' |
14 | | -
|
15 | | - const Hello = dynamic(() => import('./hello'), { |
16 | | - ${typeof ssr !== 'undefined' ? `ssr: ${ssr},` : ''} |
17 | | - unstable_suspense: ${suspense}, |
18 | | - }) |
| 6 | +export default (context, render) => { |
| 7 | + const dynamicHello = new File( |
| 8 | + join(context.appDir, 'components/dynamic-hello.js') |
| 9 | + ) |
19 | 10 |
|
20 | | - export default function SuspenseNoSSR({ thrown }) { |
21 | | - return ( |
22 | | - <Suspense fallback={'loading'}> |
23 | | - <Hello thrown={thrown} /> |
24 | | - </Suspense> |
| 11 | + function updateComponent({ ssr, suspense = false }) { |
| 12 | + dynamicHello.replace('const ssr = false', `const ssr = ${ssr + ''}`) |
| 13 | + dynamicHello.replace( |
| 14 | + 'const suspense = false', |
| 15 | + `const suspense = ${suspense + ''}` |
25 | 16 | ) |
26 | | - }` |
27 | | - page.write(content) |
28 | | -} |
| 17 | + } |
29 | 18 |
|
30 | | -export default (context, render) => { |
31 | 19 | async function get$(path, query) { |
32 | 20 | const html = await render(path, query) |
33 | 21 | return cheerio.load(html) |
34 | 22 | } |
35 | 23 |
|
36 | 24 | describe('suspense:true option', () => { |
37 | | - beforeAll(() => writeDynamicTestComponent({ suspense: true })) |
38 | | - afterAll(() => page.restore()) |
| 25 | + beforeAll(() => updateComponent({ suspense: true })) |
| 26 | + afterAll(() => dynamicHello.restore()) |
39 | 27 |
|
40 | 28 | describe('promise is thrown on server side', () => { |
41 | 29 | // let `ssr` option be auto overridden |
|
0 commit comments