-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsolution-manager.factories.ts
More file actions
62 lines (56 loc) · 2.82 KB
/
solution-manager.factories.ts
File metadata and controls
62 lines (56 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/**
* Copyright 2022-2026 Arm Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import * as vscode from 'vscode';
import { SolutionLoadState, SolutionLoadStateChangeEvent, SolutionManager } from './solution-manager';
import { makeFactory, StubEvents } from '../__test__/test-data-factory';
import { faker } from '@faker-js/faker';
import path from 'path';
import { csolutionFactory } from './csolution.factory';
import { Severity } from './constants';
export type MockSolutionManager = jest.Mocked<StubEvents<SolutionManager>> & { fireOnDidChangeLoadState: ReturnType<typeof fireOnDidChangeLoadState> };
export const idleSolutionLoadStateFactory = makeFactory<SolutionLoadState>({
solutionPath: () => undefined,
loaded: () => undefined,
converted: () => undefined,
activated: () => undefined,
});
export const activeSolutionLoadStateFactory = makeFactory<SolutionLoadState>({
solutionPath: () => path.join(faker.system.filePath(), `${faker.word.noun()}.csolution.yml`),
loaded: () => undefined,
converted: () => undefined,
activated: () => undefined,
});
const fireOnDidChangeLoadState = (emitter: vscode.EventEmitter<SolutionLoadStateChangeEvent>) => {
return function fire(newState?: SolutionLoadState, previousState?: SolutionLoadState) {
emitter.fire({
previousState: previousState ?? idleSolutionLoadStateFactory(),
newState: newState ?? activeSolutionLoadStateFactory(),
});
};
};
export const solutionManagerFactory = makeFactory<MockSolutionManager>({
loadState: () => idleSolutionLoadStateFactory(),
getCsolution: () => jest.fn().mockReturnValue(csolutionFactory()),
onDidChangeLoadStateEmitter: () => new vscode.EventEmitter<SolutionLoadStateChangeEvent>(),
onDidChangeLoadState: (r) => jest.fn(r.onDidChangeLoadStateEmitter!.event),
onLoadedBuildFilesEmitter: () => new vscode.EventEmitter<[Severity, boolean]>(),
onLoadedBuildFiles: (r) => jest.fn(r.onLoadedBuildFilesEmitter!.event),
fireOnDidChangeLoadState: (r) => fireOnDidChangeLoadState(r.onDidChangeLoadStateEmitter!),
workspaceFolder: () => vscode.Uri.file('/workspace/folder'),
refresh: () => jest.fn(),
onUpdatedCompileCommandsEmitter: () => new vscode.EventEmitter<void>(),
onUpdatedCompileCommands: (r) => jest.fn(r.onUpdatedCompileCommandsEmitter!.event),
});