UNPKG

1.61 kBPlain TextView Raw
1import tap from 'tap'
2import fs from 'fs-extra'
3import path from 'path'
4
5import { createConfig } from '../lib/config'
6import { outputLambda, outputLambdas } from '../lib/outputLambdas'
7import { Env } from '../lib/constants'
8
9tap.test('outputLambda', async (t) => {
10 const content = `module.exports = { route: '*' }`
11
12 t.testdir({
13 'lambda.min.js': content,
14 })
15 const fixture = path.join(t.testdirName, 'lambda.min.js')
16
17 const config = await createConfig({
18 env: Env.DEVELOPMENT,
19 cli: {
20 files: path.join(t.testdirName, '*.js'),
21 output: path.join(t.testdirName, 'output'),
22 },
23 })
24
25 const [route, filename] = outputLambda(fixture, config)
26 const lambda = fs.readFileSync(filename, 'utf8')
27
28 t.ok(filename.includes(`lambda.min.js`))
29 t.ok(lambda.includes(fixture))
30 t.equal(route, '*')
31})
32
33tap.test('outputLambdas', async (t) => {
34 t.testdir({
35 'slug.js': `module.exports = { route: '/:slug' }`,
36 'fallback.js': `module.exports = { route: '/:slug?' }`,
37 })
38
39 const config = await createConfig({
40 env: Env.DEVELOPMENT,
41 cli: {
42 files: path.join(t.testdirName, '*.js'),
43 output: path.join(t.testdirName, 'output'),
44 },
45 })
46
47 const [slug, fallback] = outputLambdas(
48 [path.join(t.testdirName, 'slug.js'), path.join(t.testdirName, 'fallback.js')],
49 config
50 )
51
52 t.equal(slug[0], `/:slug`)
53 t.ok(slug[1].includes(`slug.js`))
54
55 t.equal(fallback[0], `/:slug?`)
56 t.ok(fallback[1].includes(`fallback.js`))
57
58 const manifest = require(config.functionsManifest)
59
60 t.equal(manifest[slug[0]], slug[1])
61 t.equal(manifest[fallback[0]], fallback[1])
62})