@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
63 lines (53 loc) • 2.03 kB
text/typescript
import { test, assert } from '@sprucelabs/test-utils'
import FeatureInstaller from '../../features/FeatureInstaller'
import CommandServiceImpl from '../../services/CommandService'
import AbstractCliTest from '../../tests/AbstractCliTest'
export default class FeatureInstallerTest extends AbstractCliTest {
protected static installer: FeatureInstaller
protected static async beforeEach() {
await super.beforeEach()
this.installer = this.featureInstaller
}
()
protected static async canGetFeatureDependencies() {
const dependencies = this.installer.getFeatureDependencies('schema')
assert.doesInclude(dependencies, { code: 'skill', isRequired: false })
assert.doesInclude(dependencies, { code: 'node', isRequired: true })
}
()
protected static async canGetFeatureDependenciesWithOptional() {
const dependencies = this.installer.getFeatureDependencies('error')
assert.doesInclude(dependencies, { code: 'skill', isRequired: false })
assert.doesInclude(dependencies, { code: 'schema', isRequired: true })
assert.doesInclude(dependencies, { code: 'node', isRequired: true })
}
()
protected static async afterPackageInstallIsCalledOncePerFeature() {
CommandServiceImpl.fakeCommand(/yarn/, {
code: 0,
})
let hitCount = 0
//@ts-ignore
this.installer.featureMap.schema.afterPackageInstall = () => {
hitCount++
}
await this.installer.install({
features: [
{
code: 'skill',
options: {
name: 'testing events',
description: 'this too, is a great test!',
},
},
{
code: 'schema',
},
{
code: 'event',
},
],
})
assert.isEqual(hitCount, 1)
}
}