diff --git a/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.spec.ts b/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.spec.ts index 37a22f770e0f8..b4cb42509970b 100644 --- a/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.spec.ts +++ b/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.spec.ts @@ -399,3 +399,66 @@ test(`Expect create with unchecked and checked checkboxes`, async () => { undefined, ); }); + +test(`Expect create with unchecked and checked checkboxes having multiple scopes`, async () => { + let providedKeyLogger: ((key: symbol, eventName: LoggerEventName, args: string[]) => void) | undefined; + const taskId = 4; + const callback = mockCallback(async keyLogger => { + providedKeyLogger = keyLogger; + }); + + const booleanProperties: IConfigurationPropertyRecordedSchema[] = [ + { + title: 'unchecked checkbox', + parentId: '', + scope: ['ContainerProviderConnectionFactory', 'DEFAULT'], + id: 'test.unchecked', + type: 'boolean', + description: 'should be unchecked / false', + }, + { + title: 'checked checkbox', + parentId: '', + scope: ['ContainerProviderConnectionFactory', 'DEFAULT'], + id: 'test.checked', + type: 'boolean', + default: true, + description: 'should be checked / true', + }, + { + title: 'FactoryProperty', + parentId: '', + scope: ['ContainerProviderConnectionFactory', 'DEFAULT'], + id: 'test.factoryProperty', + type: 'number', + description: 'test.factoryProperty', + }, + ]; + + // eslint-disable-next-line @typescript-eslint/await-thenable + render(PreferencesConnectionCreationOrEditRendering, { + properties: booleanProperties, + providerInfo, + connectionInfo: undefined, + propertyScope, + callback, + pageIsLoading: false, + taskId, + }); + await vi.waitUntil(() => screen.queryByRole('textbox', { name: 'test.factoryProperty' })); + await vi.waitUntil(() => screen.getByRole('checkbox', { name: 'should be unchecked / false' })); + await vi.waitUntil(() => screen.getByRole('checkbox', { name: 'should be checked / true' })); + + const createButton = screen.getByRole('button', { name: 'Create' }); + expect(createButton).toBeInTheDocument(); + // click on the button + await fireEvent.click(createButton); + + expect(callback).toBeCalledWith( + 'test', + { 'test.factoryProperty': '0', 'test.checked': true, 'test.unchecked': false }, + expect.anything(), + eventCollect, + undefined, + ); +}); diff --git a/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.svelte b/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.svelte index 6899a8d5d2be0..325b6759963d9 100644 --- a/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesConnectionCreationOrEditRendering.svelte @@ -126,7 +126,9 @@ onMount(async () => { } configurationKeys = properties - .filter(property => property.scope === propertyScope) + .filter(property => + Array.isArray(property.scope) ? property.scope.find(s => s === propertyScope) : property.scope === propertyScope, + ) .filter(property => property.id?.startsWith(providerInfo.id)) .filter(property => isPropertyValidInContext(property.when, globalContext)) .map(property => { @@ -250,7 +252,9 @@ async function getConfigurationValue(configurationKey: IConfigurationPropertyRec internalSetConfigurationValue(configurationKey.id, false, value as string); return value; } - return getInitialValue(configurationKey); + const initialValue = await getInitialValue(configurationKey); + internalSetConfigurationValue(configurationKey.id, false, initialValue as string); + return initialValue; } }