import { checkPartialUpdate } from '@/store/modules/normalizers' import _ from 'lodash' describe('Partial update', () => { it('partial update for settings that do not allow partial update', () => { const settings = { ':auto_linker': { ':opts': { ':strip_prefix': true, ':new_window': false, ':rel': "ugc", ':truncate': 3 } }} const updatedSettings = { ':auto_linker': { ':opts': { ':new_window': false }}} const description = [{ children: [ { key: ":strip_prefix", type: "boolean" }, { key: ":truncate", type: ["integer", false] }, { key: ":new_window", type: "boolean" }], description: "Configuration for the auto_linker library", group: ":auto_linker", key: ":opts", label: "Opts", type: "group" }] const expectedData = { ':auto_linker': { ':opts': { ':strip_prefix': ["boolean", true], ':new_window': ["boolean", false], ':rel': ['', "ugc"], ':truncate': [["integer", false], 3] }}} const updatedData = checkPartialUpdate(settings, updatedSettings, description) expect(_.isEqual(updatedData, expectedData)).toBeTruthy() }) it('partial update for settings that allow partial update', () => { const settings = { ':pleroma': { 'Pleroma.Captcha': { ':enabled': true, ':seconds_valid': 70, ':method': "Pleroma.Captcha.Kocaptcha" }}} const updatedSettings = { ':pleroma': { 'Pleroma.Captcha': { ':seconds_valid': ["integer", 70] }}} const description = [{ children: [], description: "Captcha-related settings", group: ":pleroma", key: "Pleroma.Captcha", label: "Pleroma.Captcha", type: "group" }] const expectedData = { ':pleroma': { 'Pleroma.Captcha': { ':seconds_valid': ["integer", 70] }}} const updatedData = checkPartialUpdate(settings, updatedSettings, description) expect(_.isEqual(updatedData, expectedData)).toBeTruthy() }) })