|
| 1 | +import { workspace } from 'vscode'; |
| 2 | + |
| 3 | +// eslint-disable-next-line @typescript-eslint/no-misused-promises |
| 4 | +describe('isTargetWorkspace', () => { |
| 5 | + const testItems: [current: string, target: string, result: boolean][] = [ |
| 6 | + ['c:/test', 'C:/test', true], |
| 7 | + ['C:/test', 'c:/test', true], |
| 8 | + ['c:/test', 'c:/test', true], |
| 9 | + ['D:/test', 'D:/test', true], |
| 10 | + ['c:/test', 'd:/test', false], |
| 11 | + ['d:/test', 'd:/test/', false], |
| 12 | + ]; |
| 13 | + let mockSettings: jest.Mock<any, any, any>; |
| 14 | + |
| 15 | + beforeAll(() => { |
| 16 | + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment |
| 17 | + const actualGlobalContext = jest.requireActual('./global-state.ts').globalContext; |
| 18 | + Object.defineProperty(actualGlobalContext, 'extensionName', { |
| 19 | + get: jest.fn().mockReturnValue(''), |
| 20 | + }); |
| 21 | + jest.mock('./global-state', () => ({ |
| 22 | + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment |
| 23 | + globalContext: actualGlobalContext, |
| 24 | + })); |
| 25 | + |
| 26 | + jest.mock('os', () => ({ platform: jest.fn().mockReturnValue('win32') })); |
| 27 | + mockSettings = jest.fn(); |
| 28 | + jest.mock('./settings.service', () => ({ |
| 29 | + // eslint-disable-next-line @typescript-eslint/naming-convention |
| 30 | + Settings: mockSettings, |
| 31 | + })); |
| 32 | + }); |
| 33 | + |
| 34 | + for (const item of testItems) { |
| 35 | + const [current, target, isInTargetWorkspace] = item; |
| 36 | + |
| 37 | + it(`should${isInTargetWorkspace ? '' : ' not'} in target workspace, ${current}, ${target}`, async () => { |
| 38 | + const mockedWorkspace = jest.mocked(workspace); |
| 39 | + // eslint-disable-next-line @typescript-eslint/ban-ts-comment |
| 40 | + // @ts-ignore |
| 41 | + mockedWorkspace.workspaceFolders = [{ name: '', uri: { path: current } }]; |
| 42 | + |
| 43 | + (mockSettings as any).workspaceUri = { path: target }; |
| 44 | + |
| 45 | + const { isTargetWorkspace } = await import('@/services/check-workspace'); |
| 46 | + expect(isTargetWorkspace()).toStrictEqual(isInTargetWorkspace); |
| 47 | + }); |
| 48 | + } |
| 49 | +}); |
0 commit comments