diff --git a/src/features/settings/utils/__tests__/getSetting.test.js b/src/features/settings/utils/__tests__/getSetting.test.js index a8b8262..0ff5023 100644 --- a/src/features/settings/utils/__tests__/getSetting.test.js +++ b/src/features/settings/utils/__tests__/getSetting.test.js @@ -15,512 +15,514 @@ limitations under the License. */ import { getSetting, getSettingRecursively } from '../getSetting.js'; -import { test, expect } from 'vitest'; +import { describe, test, expect } from 'vitest'; -test.for([ - ({ settings: [], name: '', expected: undefined }), - ({ settings: [], name: 'a', expected: undefined }), - ({ settings: [ - { +describe('getSetting', () => { + test.for([ + ({ settings: [], name: '', expected: undefined }), + ({ settings: [], name: 'a', expected: undefined }), + ({ settings: [ + { + type: 'bool', + name: 'a', + i18n: 'a' + } + ], name: 'a', expected: { type: 'bool', name: 'a', i18n: 'a' - } - ], name: 'a', expected: { - type: 'bool', - name: 'a', - i18n: 'a' - } }) -])('returns $expected', ({ settings, name, expected }) => { - expect(getSetting(name, settings)).toStrictEqual(expected); -}); + } }) + ])('returns $expected', ({ settings, name, expected }) => { + expect(getSetting(name, settings)).toStrictEqual(expected); + }); -const veryNestedSettingsList = [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ + const veryNestedSettingsList = [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'bool', + name: '3a', + i18n: '3a' + }, + { + type: 'section', + name: '3b', + i18n: '3b', + content: [ + { + type: 'bool', + name: '4a', + i18n: '4a' + }, + { + type: 'section', + name: '4b', + i18n: '4b', + content: [ + { + type: 'bool', + name: '5a', + i18n: '5a' + }, + { + type: 'section', + name: '5b', + i18n: '5b', + content: [ + { + type: 'bool', + name: '6a', + i18n: '6a' + }, + { + type: 'section', + name: '6b', + i18n: '6b', + content: [ + { + type: 'bool', + name: '7a', + i18n: '7a' + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ]; + + test.for([ + ({ settings: [], path: ['a'], expected: undefined }), + ({ settings: [ { type: 'bool', - name: '2a', - i18n: '2a' + name: '1a', + i18n: '1a' + } + ], path: ['1a'], expected: { + type: 'bool', + name: '1a', + i18n: '1a' + } }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' }, { type: 'section', - name: '2b', - i18n: '2b', + name: '1b', + i18n: '1b', content: [ { type: 'bool', - name: '3a', - i18n: '3a' + name: '2a', + i18n: '2a' + } + ] + } + ], path: ['1a'], expected: { + type: 'bool', + name: '1a', + i18n: '1a' + } }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + } + ] + } + ], path: ['1b', '2a'], expected: { + type: 'bool', + name: '2a', + i18n: '2a' + } }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'number', + name: '2b', + i18n: '2b', + default: 42 + } + ] + } + ], path: ['1b', '2b'], expected: { + type: 'number', + name: '2b', + i18n: '2b', + default: 42 + } }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' }, { type: 'section', - name: '3b', - i18n: '3b', + name: '2b', + i18n: '2b', content: [ { - type: 'bool', - name: '4a', - i18n: '4a' - }, - { - type: 'section', - name: '4b', - i18n: '4b', - content: [ - { - type: 'bool', - name: '5a', - i18n: '5a' - }, - { - type: 'section', - name: '5b', - i18n: '5b', - content: [ - { - type: 'bool', - name: '6a', - i18n: '6a' - }, - { - type: 'section', - name: '6b', - i18n: '6b', - content: [ - { - type: 'bool', - name: '7a', - i18n: '7a' - } - ] - } - ] - } - ] + type: 'string', + name: '3a', + i18n: '3a' } ] } ] } - ] - } -]; - -test.for([ - ({ settings: [], path: ['a'], expected: undefined }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - } - ], path: ['1a'], expected: { - type: 'bool', - name: '1a', - i18n: '1a' - } }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - } - ] - } - ], path: ['1a'], expected: { - type: 'bool', - name: '1a', - i18n: '1a' - } }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - } - ] - } - ], path: ['1b', '2a'], expected: { - type: 'bool', - name: '2a', - i18n: '2a' - } }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'number', - name: '2b', - i18n: '2b', - default: 42 - } - ] - } - ], path: ['1b', '2b'], expected: { - type: 'number', - name: '2b', - i18n: '2b', - default: 42 - } }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1b', '2b', '3a'], expected: { - type: 'string', - name: '3a', - i18n: '3a' - } }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1b'], expected: { - type: 'section', - name: '1b', - i18n: '1b', - content: [ + ], path: ['1b', '2b', '3a'], expected: { + type: 'string', + name: '3a', + i18n: '3a' + } }), + ({ settings: [ { type: 'bool', - name: '2a', - i18n: '2a' + name: '1a', + i18n: '1a' }, { type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1b', '2b'], expected: { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } }), - - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1b', '2b', '3b'], expected: undefined }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1b', '2a', '3a'], expected: undefined }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1b', '2c', '3a'], expected: undefined }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1a', '2b', '3a'], expected: undefined }), - ({ settings: [ - { - type: 'bool', - name: '1a', - i18n: '1a' - }, - { - type: 'section', - name: '1b', - i18n: '1b', - content: [ - { - type: 'bool', - name: '2a', - i18n: '2a' - }, - { - type: 'section', - name: '2b', - i18n: '2b', - content: [ - { - type: 'string', - name: '3a', - i18n: '3a' - } - ] - } - ] - } - ], path: ['1c', '2b', '3a'], expected: undefined }), - ({ settings: veryNestedSettingsList, path: ['1b', '2b', '3b', '4b', '5b', '6b', '7a'], expected: { - type: 'bool', - name: '7a', - i18n: '7a' - } }), - ({ settings: veryNestedSettingsList, path: ['1b', '2b', '3b', '4b', '5b'], expected: { - type: 'section', - name: '5b', - i18n: '5b', - content: [ - { - type: 'bool', - name: '6a', - i18n: '6a' - }, - { - type: 'section', - name: '6b', - i18n: '6b', + name: '1b', + i18n: '1b', content: [ { type: 'bool', - name: '7a', - i18n: '7a' + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] } ] } - ] - } }), - ({ settings: veryNestedSettingsList, path: ['1b', '2b', '3b', '4ba', '5b', '6b', '7a'], expected: undefined }) -])('returns $expected', ({ settings, path, expected }) => { - expect(getSettingRecursively(path, settings)).toStrictEqual(expected); + ], path: ['1b'], expected: { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } + ] + } }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } + ] + } + ], path: ['1b', '2b'], expected: { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } }), + + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } + ] + } + ], path: ['1b', '2b', '3b'], expected: undefined }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } + ] + } + ], path: ['1b', '2a', '3a'], expected: undefined }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } + ] + } + ], path: ['1b', '2c', '3a'], expected: undefined }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } + ] + } + ], path: ['1a', '2b', '3a'], expected: undefined }), + ({ settings: [ + { + type: 'bool', + name: '1a', + i18n: '1a' + }, + { + type: 'section', + name: '1b', + i18n: '1b', + content: [ + { + type: 'bool', + name: '2a', + i18n: '2a' + }, + { + type: 'section', + name: '2b', + i18n: '2b', + content: [ + { + type: 'string', + name: '3a', + i18n: '3a' + } + ] + } + ] + } + ], path: ['1c', '2b', '3a'], expected: undefined }), + ({ settings: veryNestedSettingsList, path: ['1b', '2b', '3b', '4b', '5b', '6b', '7a'], expected: { + type: 'bool', + name: '7a', + i18n: '7a' + } }), + ({ settings: veryNestedSettingsList, path: ['1b', '2b', '3b', '4b', '5b'], expected: { + type: 'section', + name: '5b', + i18n: '5b', + content: [ + { + type: 'bool', + name: '6a', + i18n: '6a' + }, + { + type: 'section', + name: '6b', + i18n: '6b', + content: [ + { + type: 'bool', + name: '7a', + i18n: '7a' + } + ] + } + ] + } }), + ({ settings: veryNestedSettingsList, path: ['1b', '2b', '3b', '4ba', '5b', '6b', '7a'], expected: undefined }) + ])('returns $expected', ({ settings, path, expected }) => { + expect(getSettingRecursively(path, settings)).toStrictEqual(expected); + }); });