yeoman-test
Version:
Test utilities for Yeoman generators
151 lines (150 loc) • 6.75 kB
TypeScript
import type { BaseEnvironment, BaseEnvironmentOptions, BaseGenerator, BaseGeneratorOptions, GetGeneratorConstructor, InstantiateOptions, PromptAnswers } from '@yeoman/types';
import type { SinonSpiedInstance } from 'sinon';
import type { DefaultEnvironmentApi, DefaultGeneratorApi } from '../types/type-helpers.js';
import { type DummyPromptOptions, TestAdapter, type TestAdapterOptions } from './adapter.js';
import RunContext, { BasicRunContext, type RunContextSettings } from './run-context.js';
export type CreateEnv = (options: BaseEnvironmentOptions) => Promise<BaseEnvironment>;
/**
* Dependencies can be path (autodiscovery) or an array [<generator>, <name>]
*/
export type Dependency = string | Parameters<DefaultEnvironmentApi['register']>;
/**
* Collection of unit test helpers. (mostly related to Mocha syntax)
* @class YeomanTest
*/
export declare class YeomanTest {
settings?: RunContextSettings;
environmentOptions?: BaseEnvironmentOptions;
generatorOptions?: BaseGeneratorOptions;
adapterOptions?: Omit<TestAdapterOptions, 'mockedAnswers'>;
/**
* @deprecated
* Create a function that will clean up the test directory,
* cd into it. Intended for use
* as a callback for the mocha `before` hook.
*
* @param dir - path to the test directory
* @returns mocha callback
*/
setUpTestDirectory(dir: string): () => void;
/**
* @deprecated
* Clean-up the test directory and cd into it.
* Call given callback after entering the test directory.
* @param dir - path to the test directory
* @param cb - callback executed after setting working directory to dir
* @example
* testDirectory(path.join(__dirname, './temp'), function () {
* fs.writeFileSync('testfile', 'Roses are red.');
* });
*/
testDirectory(dir: string, cb?: (error?: any) => unknown): unknown;
/**
* @deprecated
* Answer prompt questions for the passed-in generator
* @param generator - a Yeoman generator or environment
* @param answers - an object where keys are the
* generators prompt names and values are the answers to
* the prompt questions
* @param options - Options or callback
* @example
* mockPrompt(angular, {'bootstrap': 'Y', 'compassBoostrap': 'Y'});
*/
mockPrompt(envOrGenerator: BaseGenerator | DefaultEnvironmentApi, mockedAnswers?: PromptAnswers, options?: DummyPromptOptions): void;
/**
* @deprecated
* Restore defaults prompts on a generator.
* @param generator or environment
*/
restorePrompt(envOrGenerator: BaseGenerator | DefaultEnvironmentApi): void;
/**
* @deprecated
* Provide mocked values to the config
* @param generator - a Yeoman generator
* @param localConfig - localConfig - should look just like if called config.getAll()
*/
mockLocalConfig(generator: BaseGenerator, localConfig: any): void;
/**
* Create a mocked generator
*/
createMockedGenerator(GeneratorClass?: any): SinonSpiedInstance<DefaultGeneratorApi>;
/**
* Create a simple, dummy generator
*/
createDummyGenerator<GenParameter extends BaseGenerator = DefaultGeneratorApi>(Generator?: GetGeneratorConstructor<GenParameter>, contents?: Record<string, (...args: any[]) => void>): new (...args: any[]) => GenParameter;
/**
* Create a generator, using the given dependencies and controller arguments
* Dependecies can be path (autodiscovery) or an array [{generator}, {name}]
*
* @param name - the name of the generator
* @param dependencies - paths to the generators dependencies
* @param args - arguments to the generator;
* if String, will be split on spaces to create an Array
* @param options - configuration for the generator
* @param localConfigOnly - passes localConfigOnly to the generators
* @example
* var deps = ['../../app',
* '../../common',
* '../../controller',
* '../../main',
* [createDummyGenerator(), 'testacular:app']
* ];
* var angular = createGenerator('angular:app', deps);
*/
createGenerator<GeneratorType extends BaseGenerator = DefaultGeneratorApi>(name: string | GetGeneratorConstructor<GeneratorType>, options?: {
dependencies?: Dependency[];
localConfigOnly?: boolean;
} & InstantiateOptions<GeneratorType>): Promise<GeneratorType>;
/**
* Shortcut to the Environment's createEnv.
*
* @param {...any} args - environment constructor arguments.
* @returns {Object} environment instance
*
* Use to test with specific Environment version:
* let createEnv;
* before(() => {
* createEnv = stub(helper, 'createEnv').callsFake(Environment.creatEnv);
* });
* after(() => {
* createEnv.restore();
* });
*/
createEnv(options: BaseEnvironmentOptions): Promise<DefaultEnvironmentApi>;
/**
* Creates a test environment.
*
* @param {Function} - environment constructor method.
* @param {Object} - Options to be passed to the environment
* const env = createTestEnv(require('yeoman-environment').createEnv);
*/
createTestEnv(envContructor?: CreateEnv, options?: BaseEnvironmentOptions): Promise<BaseEnvironment>;
/**
* Creates a TestAdapter using helpers default options.
*/
createTestAdapter(options?: TestAdapterOptions): TestAdapter;
/**
* Get RunContext type
* @return {RunContext}
*/
getRunContextType(): typeof RunContext;
/**
* Run the provided Generator
* @param GeneratorOrNamespace - Generator constructor or namespace
*/
run<GeneratorType extends BaseGenerator = DefaultGeneratorApi>(GeneratorOrNamespace: string | GetGeneratorConstructor<GeneratorType>, settings?: RunContextSettings, envOptions?: BaseEnvironmentOptions): RunContext<GeneratorType>;
/**
* Prepare a run context
* @param {String|Function} GeneratorOrNamespace - Generator constructor or namespace
* @return {RunContext}
*/
create<GeneratorType extends BaseGenerator = DefaultGeneratorApi>(GeneratorOrNamespace: string | GetGeneratorConstructor<GeneratorType>, settings?: RunContextSettings, envOptions?: BaseEnvironmentOptions): RunContext<GeneratorType>;
/**
* Prepare temporary dir without generator support.
* Generator and environment will be undefined.
*/
prepareTemporaryDir(settings?: RunContextSettings): BasicRunContext<BaseGenerator>;
}
declare const defaultHelpers: YeomanTest;
export default defaultHelpers;
export declare const createHelpers: (options: any) => YeomanTest;