serverless/test/unit/lib/utils/create-from-local-template.test.js
2024-05-29 11:51:04 -04:00

69 lines
2.1 KiB
JavaScript

'use strict'
const path = require('path')
const chai = require('chai')
const fsp = require('fs').promises
const { load: yamlParse } = require('js-yaml')
const createFromLocalTemplate = require('../../../../lib/utils/create-from-local-template')
const { getTmpDirPath } = require('../../../utils/fs')
const fixturesPath = path.resolve(__dirname, '../../../fixtures/programmatic')
chai.use(require('chai-as-promised'))
const expect = chai.expect
describe('test/unit/lib/utils/create-from-local-template.test.js', () => {
describe('Without `projectName` provided', () => {
it('should create from template referenced locally', async () => {
const tmpDirPath = path.join(getTmpDirPath(), 'some-service')
await createFromLocalTemplate({
templatePath: path.join(fixturesPath, 'function'),
projectDir: tmpDirPath,
})
const stats = await fsp.lstat(path.join(tmpDirPath, 'serverless.yml'))
expect(stats.isFile()).to.be.true
})
})
describe('When `templatePath` does not exist', () => {
it('should result in an error', async () => {
const tmpDirPath = path.join(getTmpDirPath(), 'some-service')
await expect(
createFromLocalTemplate({
templatePath: path.join(fixturesPath, 'nonexistent'),
projectDir: tmpDirPath,
}),
).to.eventually.be.rejected.and.have.property(
'code',
'INVALID_TEMPLATE_PATH',
)
})
})
describe('With `projectName` provided', () => {
let tmpDirPath
before(async () => {
tmpDirPath = path.join(getTmpDirPath(), 'some-service')
await createFromLocalTemplate({
templatePath: path.join(fixturesPath, 'function-msk'),
projectDir: tmpDirPath,
projectName: 'testproj',
})
})
it('should set service name in serverless.yml', async () =>
expect(
yamlParse(await fsp.readFile(path.join(tmpDirPath, 'serverless.yml')))
.service,
).to.equal('testproj'))
it('should set name in package.json', async () =>
expect(
JSON.parse(await fsp.readFile(path.join(tmpDirPath, 'package.json')))
.name,
).to.equal('testproj'))
})
})