Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
  • Loading branch information
Kanta committed Jan 15, 2021
1 parent c08c77a commit 991dbc7
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 0 deletions.
11 changes: 11 additions & 0 deletions test/integration/getinitialprops/next.config.js
@@ -0,0 +1,11 @@
module.exports = {
// replace me
async rewrites() {
return [
{
source: '/blog/post/:pid',
destination: '/blog/:pid',
},
]
},
}
16 changes: 16 additions & 0 deletions test/integration/getinitialprops/pages/blog/[post].js
@@ -0,0 +1,16 @@
import React from 'react'
import { useRouter } from 'next/router'

const Post = () => {
const router = useRouter()

return (
<>
<div id="as-path">{router.asPath}</div>
</>
)
}

Post.getInitialProps = () => ({ hello: 'hi' })

export default Post
3 changes: 3 additions & 0 deletions test/integration/getinitialprops/pages/index.js
@@ -0,0 +1,3 @@
const page = () => 'hello from sub id'
page.getInitialProps = () => ({ hello: 'hi' })
export default page
1 change: 1 addition & 0 deletions test/integration/getinitialprops/pages/normal.js
@@ -0,0 +1 @@
export default () => <p id="normal-text">a normal page</p>
81 changes: 81 additions & 0 deletions test/integration/getinitialprops/test/index.test.js
@@ -0,0 +1,81 @@
import cheerio from 'cheerio'
import { join } from 'path'
import {
findPort,
launchApp,
killApp,
nextStart,
nextBuild,
renderViaHTTP,
File,
} from 'next-test-utils'

jest.setTimeout(1000 * 60 * 5)
let app
let appPort
const appDir = join(__dirname, '..')
const nextConfig = new File(join(appDir, 'next.config.js'))

const runTests = () => {
it('should have gip in __NEXT_DATA__', async () => {
const html = await renderViaHTTP(appPort, '/')
const $ = cheerio.load(html)
expect(JSON.parse($('#__NEXT_DATA__').text()).gip).toBe(true)
})

it('should not have gip in __NEXT_DATA__ for non-GIP page', async () => {
const html = await renderViaHTTP(appPort, '/normal')
const $ = cheerio.load(html)
expect('gip' in JSON.parse($('#__NEXT_DATA__').text())).toBe(false)
})

it('should have correct router.asPath for direct visit dynamic page', async () => {
const html = await renderViaHTTP(appPort, '/blog/1')
const $ = cheerio.load(html)
expect($('#as-path').text()).toBe('/blog/1')
})

it('should have correct router.asPath for direct visit dynamic page rewrite direct', async () => {
const html = await renderViaHTTP(appPort, '/blog/post/1')
const $ = cheerio.load(html)
expect($('#as-path').text()).toBe('/blog/post/1')
})
}

describe('getInitialProps', () => {
describe('dev mode', () => {
beforeAll(async () => {
appPort = await findPort()
app = await launchApp(appDir, appPort)
})
afterAll(() => killApp(app))

runTests()
})

describe('serverless mode', () => {
beforeAll(async () => {
await nextConfig.replace('// replace me', `target: 'serverless', `)
await nextBuild(appDir)
appPort = await findPort()
app = await nextStart(appDir, appPort)
})
afterAll(async () => {
await killApp(app)
nextConfig.restore()
})

runTests()
})

describe('production mode', () => {
beforeAll(async () => {
await nextBuild(appDir)
appPort = await findPort()
app = await nextStart(appDir, appPort)
})
afterAll(() => killApp(app))

runTests()
})
})

0 comments on commit 991dbc7

Please sign in to comment.