Skip to content

Commit fc3bca6

Browse files
committed
Merge remote-tracking branch 'origin/sm/unify-create-apex-class' into sm/trigger-templates
2 parents 99ad78e + 2d3e57f commit fc3bca6

4 files changed

Lines changed: 27 additions & 7 deletions

File tree

.cursor/rules/wireit.mdc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
description: Wireit build system usage and authoring
3+
alwaysApply: true
4+
---
5+
6+
When working with wireit — answering questions, authoring scripts, or editing `package.json` — read `.claude/skills/wireit/SKILL.md` first.

packages/salesforcedx-vscode-apex-testing/src/commands/apexGenerateUnitTestClass.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,18 @@ const getApiVersion = Effect.fn('getApiVersion')(function* (project: SfProject)
4646
);
4747
});
4848

49-
const getDefaultOutputDir = Effect.fn('getDefaultOutputDir')(function* (project: SfProject) {
49+
const promptForOutputDir = Effect.fn('promptForOutputDir')(function* (project: SfProject) {
5050
const api = yield* (yield* ExtensionProviderService).getServicesApi;
51+
const promptService = yield* api.services.PromptService;
5152
const workspaceInfo = yield* api.services.WorkspaceService.getWorkspaceInfoOrThrow();
53+
5254
const defaultPkg = project.getDefaultPackage();
53-
return Utils.joinPath(workspaceInfo.uri, defaultPkg.path, 'main', 'default', 'classes');
55+
const defaultUri = Utils.joinPath(workspaceInfo.uri, defaultPkg.path, 'main', 'default', 'classes');
56+
57+
return yield* promptService.promptForOutputDir({
58+
defaultUri,
59+
pickerPlaceHolder: nls.localize('apex_test_class_output_dir_prompt')
60+
});
5461
});
5562

5663
const promptForClassName = Effect.fn('promptForClassName')(function* () {
@@ -104,22 +111,22 @@ export const apexGenerateUnitTestClassCommand = Effect.fn('apexGenerateUnitTestC
104111
) {
105112
const api = yield* (yield* ExtensionProviderService).getServicesApi;
106113
const promptService = yield* api.services.PromptService;
114+
const fsService = yield* api.services.FsService;
107115
const project = yield* api.services.ProjectService.getSfProject();
108-
const workspaceInfo = yield* api.services.WorkspaceService.getWorkspaceInfoOrThrow();
109116

110117
const className = params?.name ?? (yield* promptForClassName());
111118

112-
const outputDirUri = params?.outputDir ?? outputDirectory ?? (yield* getDefaultOutputDir(project));
119+
const outputDirUri = params?.outputDir ?? outputDirectory ?? (yield* promptForOutputDir(project));
113120

114121
const template = params?.template ?? (yield* promptForTemplate());
115122

123+
const workspaceInfo = yield* api.services.WorkspaceService.getWorkspaceInfoOrThrow();
116124
const apiVersion = yield* getApiVersion(project);
117-
const cwd = workspaceInfo.uri.fsPath;
118125
const uris = [`${className}.cls`, `${className}.cls-meta.xml`].map(uri => Utils.joinPath(outputDirUri, uri));
119126
yield* promptService.ensureMetadataOverwriteOrThrow({ uris });
120127

121128
const result = yield* api.services.TemplateService.create({
122-
cwd,
129+
cwd: yield* fsService.uriToPath(workspaceInfo.uri),
123130
templateType: api.services.TemplateType.ApexClass,
124131
outputdir: outputDirUri,
125132
options: { template, classname: className, apiversion: apiVersion }

packages/salesforcedx-vscode-apex-testing/test/playwright/specs/apexTestClassCreate.headless.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ test('Create Apex Unit Test Class via command palette', async ({ page }) => {
5959
await saveScreenshot(page, 'step.class-name-entered.png');
6060
});
6161

62+
await test.step('select output directory in QuickPick', async () => {
63+
await page.locator(QUICK_INPUT_LIST_ROW).first().waitFor({ state: 'visible', timeout: 5000 });
64+
await saveScreenshot(page, 'step.directory-prompt-visible.png');
65+
await page.keyboard.press('Enter');
66+
await saveScreenshot(page, 'step.after-accept-directory.png');
67+
});
68+
6269
await test.step('select template in QuickPick', async () => {
6370
await page.locator(QUICK_INPUT_LIST_ROW).first().waitFor({ state: 'visible', timeout: 5000 });
6471
await page.keyboard.press('Enter');

packages/salesforcedx-vscode-metadata/src/commands/createApexClass.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export const createApexClassCommand = Effect.fn('createApexClassCommand')(functi
8888
yield* promptService.ensureMetadataOverwriteOrThrow({ uris });
8989

9090
yield* api.services.TemplateService.create({
91-
cwd: workspaceInfo.uri.fsPath,
91+
cwd: yield* fsService.uriToPath(workspaceInfo.uri),
9292
templateType: api.services.TemplateType.ApexClass,
9393
outputdir: outputDirUri,
9494
options: { template, classname: className, apiversion: apiVersion }

0 commit comments

Comments
 (0)