From 2745a6e95760f88a8781aab6c9ddc7e28847c4fe Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Tue, 6 Apr 2021 16:27:10 +0200 Subject: [PATCH] handle "null" in "timepicker:quickRanges" migration (#95767) --- .../saved_objects/migrations.test.ts | 17 +++++++++++++++++ .../ui_settings/saved_objects/migrations.ts | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/core/server/ui_settings/saved_objects/migrations.test.ts b/src/core/server/ui_settings/saved_objects/migrations.test.ts index cf96372bd20b..cb10f9c7fd98 100644 --- a/src/core/server/ui_settings/saved_objects/migrations.test.ts +++ b/src/core/server/ui_settings/saved_objects/migrations.test.ts @@ -76,6 +76,23 @@ describe('ui_settings 7.12.0 migrations', () => { const migrated = migration(doc); expect(JSON.parse(migrated.attributes['timepicker:quickRanges'])).toEqual([migratedQuickRange]); }); + + // https://github.com/elastic/kibana/issues/95616 + test('returns doc when "timepicker:quickRanges" is null', () => { + const doc = { + type: 'config', + id: '8.0.0', + attributes: { + buildNum: 9007199254740991, + 'timepicker:quickRanges': null, + }, + references: [], + updated_at: '2020-06-09T20:18:20.349Z', + migrationVersion: {}, + }; + const migrated = migration(doc); + expect(migrated).toEqual(doc); + }); }); describe('ui_settings 7.13.0 migrations', () => { diff --git a/src/core/server/ui_settings/saved_objects/migrations.ts b/src/core/server/ui_settings/saved_objects/migrations.ts index 16f217352b99..b187c5f86dab 100644 --- a/src/core/server/ui_settings/saved_objects/migrations.ts +++ b/src/core/server/ui_settings/saved_objects/migrations.ts @@ -32,7 +32,7 @@ export const migrations = { ...doc, ...(doc.attributes && { attributes: Object.keys(doc.attributes).reduce((acc, key) => { - if (key === 'timepicker:quickRanges' && doc.attributes[key].indexOf('section') > -1) { + if (key === 'timepicker:quickRanges' && doc.attributes[key]?.indexOf('section') > -1) { const ranges = JSON.parse(doc.attributes[key]).map( ({ from, to, display }: { from: string; to: string; display: string }) => { return {