8aa3620a16
fixes #20626 No changes needed in next-swc, see comments from @kdy1 below. Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
/* eslint-env jest */
|
|
import { transformSync } from '@babel/core'
|
|
|
|
const babel = (code) =>
|
|
transformSync(code, {
|
|
filename: 'page.tsx',
|
|
presets: ['@babel/preset-typescript'],
|
|
plugins: [require('next/dist/build/babel/plugins/next-page-config')],
|
|
babelrc: false,
|
|
configFile: false,
|
|
sourceType: 'module',
|
|
compact: true,
|
|
caller: {
|
|
name: 'tests',
|
|
isDev: false,
|
|
},
|
|
} as any).code
|
|
|
|
describe('babel plugin (next-page-config)', () => {
|
|
test('export config with type annotation', () => {
|
|
const output = babel('export const config: PageConfig = {};')
|
|
|
|
expect(output).toMatch(`export const config={};`)
|
|
})
|
|
|
|
test('export config with AsExpression', () => {
|
|
const output = babel('export const config = {} as PageConfig;')
|
|
|
|
expect(output).toMatch('export const config={};')
|
|
})
|
|
|
|
test('amp enabled', () => {
|
|
jest.spyOn(Date, 'now').mockReturnValue(1234)
|
|
const output = babel(`
|
|
export const config = { amp: true }
|
|
|
|
function About(props) {
|
|
return <h3>My AMP About Page!</h3>
|
|
}
|
|
|
|
export default About`)
|
|
|
|
expect(output).toMatch(
|
|
'const __NEXT_DROP_CLIENT_FILE__="__NEXT_DROP_CLIENT_FILE__ 1234";'
|
|
)
|
|
})
|
|
|
|
test('amp hybrid enabled', () => {
|
|
const output = babel(`
|
|
export const config = { amp: 'hybrid' }
|
|
|
|
function About(props) {
|
|
return <h3>My AMP About Page!</h3>
|
|
}
|
|
|
|
export default About`)
|
|
|
|
expect(output).toMatch(
|
|
"export const config={amp:'hybrid'};function About(props){return<h3>My AMP About Page!</h3>;}export default About;"
|
|
)
|
|
})
|
|
})
|