From eabc4464df5710eab0520e9a3af6dc9f5e6fe704 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Wed, 8 Jan 2020 15:29:59 +0700 Subject: [PATCH] Add tests for partial update --- src/store/modules/normalizers.js | 1 - .../normalizers/checkPartialUpdate.test.js | 48 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 test/modules/normalizers/checkPartialUpdate.test.js diff --git a/src/store/modules/normalizers.js b/src/store/modules/normalizers.js index 1df1fd08..17b7c5f0 100644 --- a/src/store/modules/normalizers.js +++ b/src/store/modules/normalizers.js @@ -1,7 +1,6 @@ export const checkPartialUpdate = (settings, updatedSettings, description) => { return Object.keys(updatedSettings).reduce((acc, group) => { acc[group] = Object.keys(updatedSettings[group]).reduce((acc, key) => { - debugger if (!partialUpdate(group, key)) { const updated = Object.keys(settings[group][key]).reduce((acc, settingName) => { const setting = description diff --git a/test/modules/normalizers/checkPartialUpdate.test.js b/test/modules/normalizers/checkPartialUpdate.test.js new file mode 100644 index 00000000..62169c0f --- /dev/null +++ b/test/modules/normalizers/checkPartialUpdate.test.js @@ -0,0 +1,48 @@ +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() + }) +})