@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
45 lines (38 loc) • 1.87 kB
text/typescript
import { buildSchema } from '@sprucelabs/schema'
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
import StaticTestFinderImpl from '../../../tests/staticToInstanceMigration/StaticTestFinder'
import StaticToInstanceMigratorImpl from '../../../tests/staticToInstanceMigration/StaticToInstanceMigrator'
import StaticToInstanceTestFileMigratorImpl from '../../../tests/staticToInstanceMigration/StaticToInstanceTestFileMigrator'
import AbstractAction from '../../AbstractAction'
import { FeatureActionResponse } from '../../features.types'
export default class MigrationAction extends AbstractAction<OptionsSchema> {
public optionsSchema = optionsSchema
public commandAliases = ['migrate.tests']
public invocationMessage = 'Migrating tests from static to instance... 🌲'
public async execute(): Promise<FeatureActionResponse> {
const testFinder = StaticTestFinderImpl.Finder()
const testFileMigrator = StaticToInstanceTestFileMigratorImpl.Migrator()
const lintService = this.Service('lint')
const migrator = StaticToInstanceMigratorImpl.Migrator({
testFinder,
testFileMigrator,
lintService,
})
this.ui.startLoading('Migrating tests...')
const path = diskUtil.resolvePath(this.cwd, 'src', '__tests__')
const { totalTestsSkipped, totalTestsUpdated } =
await migrator.run(path)
return {
headline: 'Migrated tests from static to instance based.',
summaryLines: [
`${totalTestsUpdated} test${totalTestsUpdated === 1 ? '' : 's'} updated`,
`${totalTestsSkipped} test${totalTestsSkipped === 1 ? '' : 's'} skipped`,
],
}
}
}
const optionsSchema = buildSchema({
id: 'migrateTests',
fields: {},
})
type OptionsSchema = typeof optionsSchema