@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
79 lines (59 loc) • 2.63 kB
text/typescript
import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'
import { test, assert } from '@sprucelabs/test-utils'
import fsUtil from 'fs-extra'
import AbstractSkillTest from '../../../tests/AbstractSkillTest'
import { RegisteredSkill } from '../../../types/cli.types'
export default class SyncingEventsOnlyFromDependenciesTest extends AbstractSkillTest {
protected static skillCacheKey = 'events'
()
protected static async doesntSyncAnythingButListenersToStart() {
const skills = this.getSkillFixture()
await skills.registerCurrentSkill({
name: 'events in sync skill',
})
const { skill } = await this.registerGlobalEvent()
const results = await this.Action('event', 'sync', {}).execute({})
assert.isFalsy(results.errors)
const eventFolder = this.resolveEventFolder(skill)
assert.isFalse(diskUtil.doesDirExist(eventFolder))
const files = fsUtil.readdirSync(this.resolveHashSprucePath('events'))
assert.isLength(files, 2, 'The wrong number of files were generated.')
assert.isEqual(files[0], 'events.contract.ts')
assert.isEqual(files[1], 'listeners.ts')
}
()
protected static async syncsEventsForSkillsWeveAddedAsDependencies() {
const { skill } = await this.registerGlobalEvent()
this.Service('dependency').add({
id: skill.id,
namespace: skill.slug,
})
const results = await this.Action('event', 'sync', {}).execute({})
assert.isFalsy(results.errors)
const eventFolder = this.resolveEventFolder(skill)
assert.isTrue(diskUtil.doesDirExist(eventFolder))
const files = fsUtil.readdirSync(this.resolveHashSprucePath('events'))
assert.isLength(files, 3, 'The wrong number of files were generated.')
assert.isEqual(files[0], namesUtil.toCamel(skill.slug))
assert.isEqual(files[1], 'events.contract.ts')
assert.isEqual(files[2], 'listeners.ts')
}
private static async registerGlobalEvent() {
const skills = this.getSkillFixture()
const skill = await skills.seedDemoSkill({ name: 'a temp skill' })
await skills.registerEventContract(skill, {
eventSignatures: {
'test-sync::v2021_01_01': {
isGlobal: true,
},
},
})
return { skill }
}
private static resolveEventFolder(skill: RegisteredSkill) {
return this.resolveHashSprucePath(
'events',
namesUtil.toCamel(skill.slug)
)
}
}