@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
76 lines (68 loc) • 2.89 kB
text/typescript
import { namesUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'
import { EventSignatureTemplateItem } from '@sprucelabs/spruce-templates'
import { test, assert, generateId } from '@sprucelabs/test-utils'
import AbstractCliTest from '../../../tests/AbstractCliTest'
export default class EventWriterTest extends AbstractCliTest {
@test()
protected static async canCreateEventWriter() {
await this.FeatureFixture().installCachedFeatures('events')
const writer = this.writers.Writer('event', { fileDescriptions: [] })
const name = 'My event'
const namespace = 'appointments'
const contractId1 = generateId() as any
const contractId2 = generateId() as any
const permissionId1 = generateId() as any
const permissionId2 = generateId() as any
const sig: EventSignatureTemplateItem = {
isGlobal: true,
emitPermissions: {
contractId: contractId1,
permissionIdsAny: [permissionId1],
},
listenPermissions: {
contractId: contractId2,
permissionIdsAny: [permissionId2],
},
}
const permWriter = this.writers.Writer('permission', {
fileDescriptions: [],
})
//@ts-ignore
await permWriter.writeTypesFile(this.cwd, {
[contractId1]: [permissionId1],
[contractId2]: [permissionId2],
})
const results = await writer.writeContracts(
this.resolveHashSprucePath('events'),
{
eventBuilderFile: '@sprucelabs/mercury-types',
schemaTemplateItems: [],
shouldImportCoreEvents: false,
skillEventContractTypesFile: '',
eventContractTemplateItems: [
{
imports: [
{
importAs: '{ buildEventContract }',
package: '@sprucelabs/mercury-types',
},
],
isLocal: true,
nameCamel: namesUtil.toCamel(name),
namePascal: namesUtil.toPascal(name),
namespace,
namespaceCamel: namesUtil.toCamel(namespace),
namespacePascal: namesUtil.toPascal(namespace),
version: versionUtil.generateVersion().constValue,
eventSignatures: {
test: sig,
},
},
],
}
)
const match = results[0]
const imported = await this.Service('import').importDefault(match.path)
assert.isEqualDeep(imported.eventSignatures.test, sig)
}
}