Feat(settings): add renderer for settings configuration #142

Merged
jakob.scheid merged 88 commits from feature/settings-renderer into main 2026-07-28 20:14:50 +02:00
2 changed files with 34 additions and 2 deletions
Showing only changes of commit 4054d0793f - Show all commits
1
@@ -35,7 +35,7 @@ const props = defineProps({
const store = useSettingsStore(); const store = useSettingsStore();
const inputModel = ref(store.get(props.path)); const inputModel = ref(store.get(props.path) ?? props.setting.default);
let oldInputValue = inputModel.value; let oldInputValue = inputModel.value;
const doneButtonInitial = ref(true); const doneButtonInitial = ref(true);
@@ -20,11 +20,12 @@ import { useSettingsStore } from '../../stores/settingsStore.js';
import { describe, expect, test } from 'vitest'; import { describe, expect, test } from 'vitest';
import { nextTick } from 'vue'; 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, { return mountComponent(SettingsInput, {
attrs: { attrs: {
setting: { setting: {
name: 'input', name: 'input',
default: defaultValue,
i18n, i18n,
type type
}, },
@@ -70,6 +71,37 @@ describe('SettingsInput', () => {
expect(inputElement.element.value).toBe(value); 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 () => { test('stores value', async () => {
const value = 'example value'; const value = 'example value';
const wrapper = getWrapper(); const wrapper = getWrapper();