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