1 | import tap from 'tap'
|
2 | import fs from 'fs-extra'
|
3 | import path from 'path'
|
4 |
|
5 | import { createConfig } from '../lib/config'
|
6 | import { outputLambda, outputLambdas } from '../lib/outputLambdas'
|
7 | import { Env } from '../lib/constants'
|
8 |
|
9 | tap.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 |
|
33 | tap.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 | })
|