Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/sessions/contrib/accountMenu/test/browser/updateHoverWidget.fixture.ts
13405 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Emitter } from '../../../../../base/common/event.js';
7
import { mock } from '../../../../../base/test/common/mock.js';
8
import { IHoverService } from '../../../../../platform/hover/browser/hover.js';
9
import { IProductService } from '../../../../../platform/product/common/productService.js';
10
import { IUpdateService, State } from '../../../../../platform/update/common/update.js';
11
import { ComponentFixtureContext, createEditorServices, defineComponentFixture, defineThemedFixtureGroup } from '../../../../../workbench/test/browser/componentFixtures/fixtureUtils.js';
12
import { UpdateHoverWidget } from '../../browser/updateHoverWidget.js';
13
14
const mockUpdate = { version: 'a1b2c3d4e5f6', productVersion: '1.100.0', timestamp: Date.now() - 2 * 60 * 60 * 1000 };
15
const mockUpdateSameVersion = { version: 'a1b2c3d4e5f6', productVersion: '1.99.0', timestamp: Date.now() - 3 * 24 * 60 * 60 * 1000 };
16
17
function createMockUpdateService(state: State): IUpdateService {
18
const onStateChange = new Emitter<State>();
19
const service: IUpdateService = {
20
_serviceBrand: undefined,
21
state,
22
onStateChange: onStateChange.event,
23
checkForUpdates: async () => { },
24
downloadUpdate: async () => { },
25
applyUpdate: async () => { },
26
quitAndInstall: async () => { },
27
isLatestVersion: async () => true,
28
_applySpecificUpdate: async () => { },
29
setInternalOrg: async () => { },
30
};
31
return service;
32
}
33
34
function renderHoverWidget(ctx: ComponentFixtureContext, state: State): void {
35
ctx.container.style.backgroundColor = 'var(--vscode-editorHoverWidget-background)';
36
37
const instantiationService = createEditorServices(ctx.disposableStore, {
38
colorTheme: ctx.theme,
39
});
40
41
const updateService = createMockUpdateService(state);
42
const productService = new class extends mock<IProductService>() {
43
override readonly version = '1.99.0';
44
override readonly nameShort = 'VS Code Insiders';
45
override readonly commit = 'f0e1d2c3b4a5';
46
override readonly date = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
47
};
48
const hoverService = instantiationService.get(IHoverService);
49
const widget = new UpdateHoverWidget(updateService, productService, hoverService);
50
ctx.container.appendChild(widget.createHoverContent(state));
51
}
52
53
export default defineThemedFixtureGroup({ path: 'sessions/' }, {
54
UpdateHoverReady: defineComponentFixture({
55
labels: { kind: 'screenshot' },
56
render: ctx => renderHoverWidget(ctx, State.Ready(mockUpdate, true, false)),
57
}),
58
59
UpdateHoverAvailableForDownload: defineComponentFixture({
60
labels: { kind: 'screenshot' },
61
render: ctx => renderHoverWidget(ctx, State.AvailableForDownload(mockUpdate)),
62
}),
63
64
UpdateHoverDownloading30Percent: defineComponentFixture({
65
labels: { kind: 'screenshot' },
66
render: ctx => renderHoverWidget(ctx, State.Downloading(mockUpdate, true, false, 30_000_000, 100_000_000)),
67
}),
68
69
UpdateHoverInstalling: defineComponentFixture({
70
labels: { kind: 'screenshot' },
71
render: ctx => renderHoverWidget(ctx, State.Downloaded(mockUpdate, true, false)),
72
}),
73
74
UpdateHoverUpdating: defineComponentFixture({
75
labels: { kind: 'screenshot' },
76
render: ctx => renderHoverWidget(ctx, State.Updating(mockUpdate, true, 40, 100)),
77
}),
78
79
UpdateHoverSameVersion: defineComponentFixture({
80
labels: { kind: 'screenshot' },
81
render: ctx => renderHoverWidget(ctx, State.Ready(mockUpdateSameVersion, true, false)),
82
}),
83
});
84
85