Skip to content

Commit 623019a

Browse files
committed
stub inquirer's registerPrompt to allow custom prompt modules
1 parent a951faa commit 623019a

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

src/adapter.ts

+12-4
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ export class TestAdapter implements InputOutputAdapter {
7777
promptModule: PromptModule;
7878
diff: any;
7979
log: Logger;
80+
registerDummyPrompt: (promptName: string, customPromptOptions?: DummyPromptOptions) => PromptModule;
8081

8182
constructor(options: TestAdapterOptions = {}) {
8283
const { log = createLogger(), ...promptOptions } = options;
@@ -86,15 +87,22 @@ export class TestAdapter implements InputOutputAdapter {
8687
skipTTYChecks: true,
8788
});
8889

89-
for (const promptName of Object.keys(this.promptModule.prompts)) {
90-
this.promptModule.registerPrompt(
91-
promptName,
90+
const actualRegisterPrompt = this.promptModule.registerPrompt.bind(this.promptModule);
91+
92+
this.registerDummyPrompt = (promptModuleName: string, customPromptOptions?: DummyPromptOptions) =>
93+
actualRegisterPrompt(
94+
promptModuleName,
9295
class CustomDummyPrompt extends DummyPrompt {
9396
constructor(question: PromptQuestion, rl: any, answers: PromptAnswers) {
94-
super(question, rl, answers, promptOptions);
97+
super(question, rl, answers, customPromptOptions ?? promptOptions);
9598
}
9699
} as any,
97100
);
101+
102+
this.promptModule.registerPrompt = (name: string) => this.registerDummyPrompt(name);
103+
104+
for (const promptName of Object.keys(this.promptModule.prompts)) {
105+
this.promptModule.registerPrompt(promptName, undefined as any);
98106
}
99107

100108
this.diff = sinonSpy();

src/helpers.ts

+3-9
Original file line numberDiff line numberDiff line change
@@ -115,17 +115,11 @@ export class YeomanTest {
115115
throw new Error('environment is not an Environment instance');
116116
}
117117

118-
const { promptModule } = environment.adapter as TestAdapter;
118+
const testAdapter = environment.adapter as TestAdapter;
119+
const { promptModule } = testAdapter;
119120

120121
for (const name of Object.keys(promptModule.prompts)) {
121-
promptModule.registerPrompt(
122-
name,
123-
class CustomDummyPrompt extends DummyPrompt {
124-
constructor(question: PromptQuestion, rl: any, answers: PromptAnswers) {
125-
super(question, rl, answers, { ...options, mockedAnswers });
126-
}
127-
} as any,
128-
);
122+
testAdapter.registerDummyPrompt(name, { ...options, mockedAnswers });
129123
}
130124
}
131125

0 commit comments

Comments
 (0)