@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
77 lines (66 loc) • 2.49 kB
text/typescript
import { test, assert, generateId } from '@sprucelabs/test-utils'
import SchemaWriter from '../../../features/schema/writers/SchemaWriter'
import ServiceFactory from '../../../services/ServiceFactory'
import AbstractCliTest from '../../../tests/AbstractCliTest'
import MockLintService from './MockLintService'
export default class SyncingSchemasLintsOnceTest extends AbstractCliTest {
private static writer: SchemaWriter
private static destinationPath: string
private static filepath: string
protected static async beforeEach() {
await super.beforeEach()
this.destinationPath = this.resolvePath('/tmp', generateId())
this.filepath = this.destinationPath
ServiceFactory.setServiceClass('lint', MockLintService)
this.writer = this.writers.Writer('schema', {
fileDescriptions: [],
linter: new MockLintService() as any,
})
}
.only()
protected static async onlyLintsOnceWhenWritingLocalSchemas() {
await this.writeSchemasAndTypes()
MockLintService.assertPatterns([this.destinationPath])
}
()
protected static async lintsAfterAllFilesAreWritten() {
const calls: string[] = []
//@ts-ignore
this.writer.writeFileIfChangedMixinResults = async () => {
calls.push('writeFileIfChangedMixinResults')
return []
}
//@ts-ignore
this.writer.lint = async () => {
calls.push('lint')
}
await this.writeSchemasAndTypes()
assert.isEqualDeep(calls, [
'writeFileIfChangedMixinResults',
'writeFileIfChangedMixinResults',
'lint',
])
}
private static async writeSchemasAndTypes() {
await this.writer.writeSchemasAndTypes(this.filepath, {
fieldTemplateItems: [],
schemaTemplateItems: [
{
destinationDir: generateId(),
id: generateId(),
nameCamel: generateId(),
namePascal: generateId(),
nameReadable: generateId(),
namespace: generateId(),
schema: {
id: generateId(),
namespace: generateId(),
fields: {},
},
},
],
shouldImportCoreSchemas: false,
valueTypes: {},
})
}
}