serverless/test/integration/create.test.js
2024-05-29 11:51:04 -04:00

82 lines
2.7 KiB
JavaScript

'use strict'
const path = require('path')
const fsp = require('fs').promises
const fse = require('fs-extra')
const spawn = require('child-process-ext/spawn')
const { getTmpDirPath } = require('../utils/fs')
const { expect } = require('chai')
const serverlessExec = require('../serverless-binary')
describe('test/integration/create.test.js', function () {
this.timeout(1000 * 60 * 2)
it('should generate scaffolding for "aws-nodejs" template in provided path and rename service', async () => {
const tmpDir = getTmpDirPath()
await spawn(serverlessExec, [
'create',
'--template',
'aws-nodejs',
'--path',
tmpDir,
'--name',
'new-service-name',
])
const dirContent = await fsp.readdir(tmpDir)
expect(dirContent).to.include('handler.js')
expect(dirContent).to.include('serverless.yml')
expect(dirContent).to.include('.gitignore')
const serverlessYmlfileContent = (
await fsp.readFile(path.join(tmpDir, 'serverless.yml'))
).toString()
expect(serverlessYmlfileContent).to.include('service: new-service-name')
})
it('should generate scaffolding for "aws-nodejs" template in current directory', async () => {
const tmpDir = getTmpDirPath()
await fse.ensureDir(tmpDir)
await spawn(serverlessExec, ['create', '--template', 'aws-nodejs'], {
cwd: tmpDir,
})
const dirContent = await fsp.readdir(tmpDir)
expect(dirContent).to.include('handler.js')
expect(dirContent).to.include('serverless.yml')
expect(dirContent).to.include('.gitignore')
const serverlessYmlfileContent = (
await fsp.readFile(path.join(tmpDir, 'serverless.yml'))
).toString()
// We are checking that it includes basename of dir as it will be included in service name
expect(serverlessYmlfileContent).to.include(path.basename(tmpDir))
})
it('should generate scaffolding for "plugin" template', async () => {
const tmpDir = getTmpDirPath()
await fse.ensureDir(tmpDir)
await spawn(serverlessExec, ['create', '--template', 'plugin'], {
cwd: tmpDir,
})
const dirContent = await fsp.readdir(tmpDir)
expect(dirContent).to.include('index.js')
expect(dirContent).to.include('README.md')
expect(dirContent).to.include('package.json')
})
it('should error out when trying to create project in current working dir and the project files are already present in it', async () => {
const tmpDir = getTmpDirPath()
await fse.ensureDir(tmpDir)
await fsp.writeFile(path.join(tmpDir, 'handler.js'), '')
let err
try {
await spawn(serverlessExec, ['create', '--template', 'aws-nodejs'], {
cwd: tmpDir,
})
} catch (e) {
err = e
}
expect(err.stdoutBuffer.toString()).to.contain('Move it and try again')
})
})