From d1741cf25f17db45dae2741b382852795799dc64 Mon Sep 17 00:00:00 2001 From: Shazron Abdullah <36107+shazron@users.noreply.github.com> Date: Mon, 22 Apr 2024 19:44:21 +0800 Subject: [PATCH] fix: incorrect logic for flag --confirm-new-workspace in command aio app init (#793) --- src/commands/app/init.js | 2 +- test/commands/app/init.test.js | 29 +++++++++++++++++------------ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/commands/app/init.js b/src/commands/app/init.js index 7f5aa918..25512c50 100644 --- a/src/commands/app/init.js +++ b/src/commands/app/init.js @@ -322,7 +322,7 @@ class InitCommand extends TemplatesCommand { const workspaces = await consoleCLI.getWorkspaces(org.id, project.id) let workspace = workspaces.find(w => w.name.toLowerCase() === workspaceName.toLowerCase()) if (!workspace) { - if (!flags['confirm-new-workspace']) { + if (flags['confirm-new-workspace']) { const shouldNewWorkspace = await consoleCLI.prompt.promptConfirm(`Workspace '${workspaceName}' does not exist \n > Do you wish to create a new workspace?`) if (!shouldNewWorkspace) { this.error(`Workspace '${workspaceName}' does not exist and creation aborted`) diff --git a/test/commands/app/init.test.js b/test/commands/app/init.test.js index 1de0e0f6..ccc3a38d 100644 --- a/test/commands/app/init.test.js +++ b/test/commands/app/init.test.js @@ -586,7 +586,7 @@ describe('--login', () => { expect(mockConsoleCLIInstance.createWorkspace).toHaveBeenCalledWith(expect.anything(), expect.anything(), expect.objectContaining({ name: 'notexists', title: '' })) }) - test('select template, -w notexists, promptConfirm false, should throw', async () => { + test('select template, -w notexists, --no-confirm-new-workspace (no confirm, create workspace)', async () => { const workspaceName = 'notexists' mockConsoleCLIInstance.checkDevTermsForOrg.mockResolvedValue(true) mockConsoleCLIInstance.prompt.promptConfirm.mockResolvedValue(false) @@ -601,13 +601,15 @@ describe('--login', () => { command.selectTemplates.mockResolvedValue(['@adobe/my-extension']) command.argv = ['-w', workspaceName, '--no-confirm-new-workspace'] - await expect(command.run()).rejects.toThrow(`Workspace '${workspaceName}' does not exist and creation aborted`) + await expect(command.run()).resolves.not.toThrow() + expect(mockConsoleCLIInstance.prompt.promptConfirm).not.toHaveBeenCalled() + expect(mockConsoleCLIInstance.createWorkspace).toHaveBeenCalledWith(expect.anything(), expect.anything(), expect.objectContaining({ name: workspaceName, title: '' })) }) - test('select template, -w notexists, promptConfirm false, should throw coverage', async () => { + test('select template, -w notexists, --confirm-new-workspace (confirm result: false, throws error)', async () => { const workspaceName = 'notexists' mockConsoleCLIInstance.checkDevTermsForOrg.mockResolvedValue(true) - mockConsoleCLIInstance.prompt.promptConfirm.mockResolvedValue(true) + mockConsoleCLIInstance.prompt.promptConfirm.mockResolvedValue(false) mockConsoleCLIInstance.promptForSelectOrganization.mockResolvedValue(fakeOrg) mockConsoleCLIInstance.promptForSelectProject.mockResolvedValue(fakeProject) mockConsoleCLIInstance.getWorkspaces.mockResolvedValue(fakeWorkspaces) @@ -615,14 +617,17 @@ describe('--login', () => { mockConsoleCLIInstance.getEnabledServicesForOrg.mockResolvedValue(fakeSupportedOrgServices) mockConsoleCLIInstance.getWorkspaceConfig.mockResolvedValue(fakeConfig) mockConsoleCLIInstance.createWorkspace.mockResolvedValue(fakeWorkspaces[0]) + command.selectTemplates.mockResolvedValue(['@adobe/my-extension']) - command.argv = ['-w', workspaceName, '--no-confirm-new-workspace'] - await expect(command.run()).resolves.not.toThrow() + command.argv = ['-w', workspaceName, '--confirm-new-workspace'] + await expect(command.run()).rejects.toThrow(`Workspace '${workspaceName}' does not exist and creation aborted`) + expect(mockConsoleCLIInstance.prompt.promptConfirm).toHaveBeenCalled() + expect(mockConsoleCLIInstance.createWorkspace).not.toHaveBeenCalled() }) - test('select template, -w notexists, --confirm-new-workspace', async () => { - const notexistsWorkspace = 'notexists' + test('select template, -w notexists, --confirm-new-workspace (confirm result: true, create workspace)', async () => { + const workspaceName = 'notexists' mockConsoleCLIInstance.checkDevTermsForOrg.mockResolvedValue(true) mockConsoleCLIInstance.prompt.promptConfirm.mockResolvedValue(true) mockConsoleCLIInstance.promptForSelectOrganization.mockResolvedValue(fakeOrg) @@ -635,10 +640,10 @@ describe('--login', () => { command.selectTemplates.mockResolvedValue(['@adobe/my-extension']) - command.argv = ['-w', notexistsWorkspace, '--confirm-new-workspace'] - await command.run() - expect(mockConsoleCLIInstance.prompt.promptConfirm).not.toHaveBeenCalled() - expect(mockConsoleCLIInstance.createWorkspace).toHaveBeenCalledWith(expect.anything(), expect.anything(), expect.objectContaining({ name: 'notexists', title: '' })) + command.argv = ['-w', workspaceName, '--confirm-new-workspace'] + await expect(command.run()).resolves.not.toThrow() + expect(mockConsoleCLIInstance.prompt.promptConfirm).toHaveBeenCalled() + expect(mockConsoleCLIInstance.createWorkspace).toHaveBeenCalledWith(expect.anything(), expect.anything(), expect.objectContaining({ name: workspaceName, title: '' })) }) test('--extension dx/excshell/1 --extension dx/something/1 (found)', async () => {