presta
Version:
Hyper minimal framework for the modern web.
63 lines (49 loc) • 1.61 kB
text/typescript
import tap from 'tap'
import fs from 'fs-extra'
import path from 'path'
import { createConfig } from '../lib/config'
import { outputLambda, outputLambdas } from '../lib/outputLambdas'
import { Env } from '../lib/constants'
tap.test('outputLambda', async (t) => {
const content = `module.exports = { route: '*' }`
t.testdir({
'lambda.min.js': content,
})
const fixture = path.join(t.testdirName, 'lambda.min.js')
const config = await createConfig({
env: Env.DEVELOPMENT,
cli: {
files: path.join(t.testdirName, '*.js'),
output: path.join(t.testdirName, 'output'),
},
})
const [route, filename] = outputLambda(fixture, config)
const lambda = fs.readFileSync(filename, 'utf8')
t.ok(filename.includes(`lambda.min.js`))
t.ok(lambda.includes(fixture))
t.equal(route, '*')
})
tap.test('outputLambdas', async (t) => {
t.testdir({
'slug.js': `module.exports = { route: '/:slug' }`,
'fallback.js': `module.exports = { route: '/:slug?' }`,
})
const config = await createConfig({
env: Env.DEVELOPMENT,
cli: {
files: path.join(t.testdirName, '*.js'),
output: path.join(t.testdirName, 'output'),
},
})
const [slug, fallback] = outputLambdas(
[path.join(t.testdirName, 'slug.js'), path.join(t.testdirName, 'fallback.js')],
config
)
t.equal(slug[0], `/:slug`)
t.ok(slug[1].includes(`slug.js`))
t.equal(fallback[0], `/:slug?`)
t.ok(fallback[1].includes(`fallback.js`))
const manifest = require(config.functionsManifest)
t.equal(manifest[slug[0]], slug[1])
t.equal(manifest[fallback[0]], fallback[1])
})