UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

79 lines (59 loc) 2.63 kB
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' @test() 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') } @test() 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) ) } }