refactor(ide): replace DetectedIde enum with IDE_DEFINITIONS object (#8698)

This commit is contained in:
Shreya Keshive
2025-09-18 15:23:24 -04:00
committed by GitHub
parent f2a47dec54
commit db5b49b2ca
16 changed files with 129 additions and 229 deletions
+32 -21
View File
@@ -4,16 +4,11 @@
* SPDX-License-Identifier: Apache-2.0
*/
import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
import { getIdeInstaller } from './ide-installer.js';
import * as child_process from 'node:child_process';
import * as fs from 'node:fs';
import * as os from 'node:os';
import * as path from 'node:path';
import { DetectedIde } from './detect-ide.js';
import { vi } from 'vitest';
vi.mock('node:child_process', async (importOriginal) => {
const actual = (await importOriginal()) as typeof child_process;
const actual =
(await importOriginal()) as typeof import('node:child_process');
return {
...actual,
execSync: vi.fn(),
@@ -23,6 +18,14 @@ vi.mock('node:child_process', async (importOriginal) => {
vi.mock('fs');
vi.mock('os');
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import { getIdeInstaller } from './ide-installer.js';
import * as child_process from 'node:child_process';
import * as fs from 'node:fs';
import * as os from 'node:os';
import * as path from 'node:path';
import { IDE_DEFINITIONS, type IdeInfo } from './detect-ide.js';
describe('ide-installer', () => {
const HOME_DIR = '/home/user';
@@ -35,23 +38,28 @@ describe('ide-installer', () => {
});
describe('getIdeInstaller', () => {
it.each([{ ide: DetectedIde.VSCode }, { ide: DetectedIde.FirebaseStudio }])(
'returns a VsCodeInstaller for "$ide"',
({ ide }) => {
const installer = getIdeInstaller(ide);
it.each([
{ ide: IDE_DEFINITIONS.vscode },
{ ide: IDE_DEFINITIONS.firebasestudio },
])('returns a VsCodeInstaller for "$ide.name"', ({ ide }) => {
const installer = getIdeInstaller(ide);
expect(installer).not.toBeNull();
expect(installer?.install).toEqual(expect.any(Function));
},
);
expect(installer).not.toBeNull();
expect(installer?.install).toEqual(expect.any(Function));
});
});
describe('VsCodeInstaller', () => {
function setup({
ide = DetectedIde.VSCode,
ide = IDE_DEFINITIONS.vscode,
existsResult = false,
execSync = () => '',
platform = 'linux' as NodeJS.Platform,
}: {
ide?: IdeInfo;
existsResult?: boolean;
execSync?: () => string;
platform?: NodeJS.Platform;
} = {}) {
vi.spyOn(child_process, 'execSync').mockImplementation(execSync);
vi.spyOn(fs, 'existsSync').mockReturnValue(existsResult);
@@ -117,12 +125,12 @@ describe('ide-installer', () => {
it.each([
{
ide: DetectedIde.VSCode,
ide: IDE_DEFINITIONS.vscode,
expectedMessage:
'VS Code companion extension was installed successfully',
},
{
ide: DetectedIde.FirebaseStudio,
ide: IDE_DEFINITIONS.firebasestudio,
expectedMessage:
'Firebase Studio companion extension was installed successfully',
},
@@ -137,9 +145,12 @@ describe('ide-installer', () => {
);
it.each([
{ ide: DetectedIde.VSCode, expectedErr: 'VS Code CLI not found' },
{
ide: DetectedIde.FirebaseStudio,
ide: IDE_DEFINITIONS.vscode,
expectedErr: 'VS Code CLI not found',
},
{
ide: IDE_DEFINITIONS.firebasestudio,
expectedErr: 'Firebase Studio CLI not found',
},
])(