From 98a07496f9da1954a605e8ae97e4c42b30dee3ec Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 28 Jul 2026 12:24:48 +0200 Subject: [PATCH] fix(settings): update settings input to use default value The SettingsInput component now uses the default value if there is a default value. Tests for this were added. --- .../settings/components/SettingsInput.vue | 2 +- .../__tests__/SettingsInput.test.js | 34 ++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/features/settings/components/SettingsInput.vue b/src/features/settings/components/SettingsInput.vue index 88bf6b5..18c2f84 100644 --- a/src/features/settings/components/SettingsInput.vue +++ b/src/features/settings/components/SettingsInput.vue @@ -35,7 +35,7 @@ const props = defineProps({ const store = useSettingsStore(); -const inputModel = ref(store.get(props.path)); +const inputModel = ref(store.get(props.path) ?? props.setting.default); let oldInputValue = inputModel.value; const doneButtonInitial = ref(true); diff --git a/src/features/settings/components/__tests__/SettingsInput.test.js b/src/features/settings/components/__tests__/SettingsInput.test.js index 808c5c2..44d6cef 100644 --- a/src/features/settings/components/__tests__/SettingsInput.test.js +++ b/src/features/settings/components/__tests__/SettingsInput.test.js @@ -20,11 +20,12 @@ import { useSettingsStore } from '../../stores/settingsStore.js'; import { describe, expect, test } from 'vitest'; import { nextTick } from 'vue'; -const getWrapper = function getWrapper({ type = 'string', i18n = 'input', piniaOptions = {} } = {}) { +const getWrapper = function getWrapper({ type = 'string', i18n = 'input', defaultValue = undefined, piniaOptions = {} } = {}) { return mountComponent(SettingsInput, { attrs: { setting: { name: 'input', + default: defaultValue, i18n, type }, @@ -70,6 +71,37 @@ describe('SettingsInput', () => { expect(inputElement.element.value).toBe(value); }); + test('shows default value', () => { + const value = 'example value'; + const wrapper = getWrapper({ + type: 'string', + i18n: 'input', + defaultValue: value + }); + const inputElement = wrapper.find('input'); + + expect(inputElement.element.value).toBe(value); + }); + + test('store value instead of default value', () => { + const storeValue = 'store value'; + const defaultValue = 'default value'; + const wrapper = getWrapper({ + type: 'string', + i18n: 'input', + defaultValue: defaultValue, + piniaOptions: { + setupStores: () => { + const store = useSettingsStore(); + store.settings.input = storeValue; + } + } + }); + const inputElement = wrapper.find('input'); + + expect(inputElement.element.value).toBe(storeValue); + }); + test('stores value', async () => { const value = 'example value'; const wrapper = getWrapper();