From b5f0c7dd50fa7a2c1907af44a3194df8afee4bf5 Mon Sep 17 00:00:00 2001 From: Florent Benoit Date: Sat, 7 Sep 2024 18:34:00 +0200 Subject: [PATCH] chore: track external changes when displaying configuration values fixes https://github.com/containers/podman-desktop/issues/8794 Signed-off-by: Florent Benoit --- .../PreferencesRenderingItemFormat.spec.ts | 39 +++++++++++++++++++ .../PreferencesRenderingItemFormat.svelte | 26 ++++++++++++- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.spec.ts b/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.spec.ts index 67b2d893dbf..c77e5b7a8f8 100644 --- a/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.spec.ts +++ b/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.spec.ts @@ -28,6 +28,7 @@ import { tick } from 'svelte'; import { beforeAll, expect, test, vi } from 'vitest'; import { getInitialValue } from '/@/lib/preferences/Util'; +import { onDidChangeConfiguration } from '/@/stores/configurationProperties'; import type { IConfigurationPropertyRecordedSchema } from '../../../../main/src/plugin/configuration-registry'; import PreferencesRenderingItemFormat from './PreferencesRenderingItemFormat.svelte'; @@ -290,3 +291,41 @@ test('Expect a text input when record is type integer', async () => { expect(inputField.type).toBe('text'); expect(inputField.name).toBe('record'); }); + +test('Expect value is updated from an external change', async () => { + const recordId = 'record'; + const record: IConfigurationPropertyRecordedSchema = { + id: recordId, + title: 'Hello', + parentId: 'parent.record', + description: 'record-description', + type: 'integer', + scope: 'DEFAULT', + default: 1, + minimum: 1, + maximum: 15, + }; + + await awaitRender(record, {}); + const inputField = screen.getByRole('textbox', { name: 'record-description' }) as HTMLInputElement; + expect(inputField).toBeInTheDocument(); + + // initial value should be 1 + expect(inputField.value).toBe('1'); + + // change getConfigurationValue to return 5 + (window as any).getConfigurationValue = vi.fn().mockResolvedValue(5); + + // now update the configuration value + onDidChangeConfiguration.dispatchEvent( + new CustomEvent(recordId, { + detail: { + key: 'record', + value: 5, + }, + }), + ); + + // initial value should be 5 + await vi.waitFor(() => expect(inputField.value).toBe('5')); +}); diff --git a/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte b/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte index 7d04580ddc2..d73ca1816ba 100644 --- a/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte @@ -1,5 +1,6 @@