Removing support survey notification from What's New (#11118)
* Removing support notification from what's new * Adding migration for support notification removal * Expanding test cases, using async/await for storage comparisonfeature/default_network_editable
parent
0e1181862f
commit
86b61a2fc2
@ -0,0 +1,35 @@ |
||||
import { cloneDeep, isPlainObject } from 'lodash'; |
||||
|
||||
const version = 60; |
||||
const SUPPORT_NOTIFICATION_KEY = 2; |
||||
const SUPPORT_NOTIFICATION_DATE = '2020-08-31'; |
||||
|
||||
/** |
||||
* Removes the support survey notification |
||||
*/ |
||||
export default { |
||||
version, |
||||
async migrate(originalVersionedData) { |
||||
const versionedData = cloneDeep(originalVersionedData); |
||||
versionedData.meta.version = version; |
||||
const state = versionedData.data; |
||||
const newState = transformState(state); |
||||
versionedData.data = newState; |
||||
return versionedData; |
||||
}, |
||||
}; |
||||
|
||||
function transformState(state) { |
||||
const notifications = state?.NotificationController?.notifications; |
||||
if (isPlainObject(notifications)) { |
||||
if ( |
||||
notifications[SUPPORT_NOTIFICATION_KEY]?.date === |
||||
SUPPORT_NOTIFICATION_DATE |
||||
) { |
||||
delete state.NotificationController.notifications[ |
||||
SUPPORT_NOTIFICATION_KEY |
||||
]; |
||||
} |
||||
} |
||||
return state; |
||||
} |
@ -0,0 +1,143 @@ |
||||
import { strict as assert } from 'assert'; |
||||
import migration60 from './060'; |
||||
|
||||
describe('migration #60', function () { |
||||
it('should update the version metadata', async function () { |
||||
const oldStorage = { |
||||
meta: { |
||||
version: 59, |
||||
}, |
||||
data: {}, |
||||
}; |
||||
|
||||
const newStorage = await migration60.migrate(oldStorage); |
||||
assert.deepEqual(newStorage.meta, { |
||||
version: 60, |
||||
}); |
||||
}); |
||||
|
||||
it('prunes the support notification', async function () { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
NotificationController: { |
||||
notifications: { |
||||
1: { |
||||
id: 1, |
||||
date: '2021-03-17', |
||||
image: { |
||||
src: 'images/mobile-link-qr.svg', |
||||
height: '230px', |
||||
width: '230px', |
||||
placeImageBelowDescription: true, |
||||
}, |
||||
}, |
||||
2: { |
||||
id: 2, |
||||
date: '2020-08-31', |
||||
}, |
||||
3: { |
||||
id: 3, |
||||
date: '2021-03-08', |
||||
}, |
||||
4: { |
||||
id: 4, |
||||
date: '2021-05-11', |
||||
image: { |
||||
src: 'images/source-logos-bsc.svg', |
||||
width: '100%', |
||||
}, |
||||
}, |
||||
}, |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
const newStorage = await migration60.migrate(oldStorage); |
||||
const { notifications } = newStorage.data.NotificationController; |
||||
const notificationKeys = Object.keys(notifications); |
||||
// Assert support notification is removed
|
||||
assert.equal(notificationKeys.length, 3); |
||||
notificationKeys.forEach((key) => { |
||||
assert.notEqual(notifications[key].date, '2020-08-31'); |
||||
}); |
||||
}); |
||||
|
||||
it('does not modify state when the support notification does not exist', async function () { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
NotificationController: { |
||||
notifications: { |
||||
1: { |
||||
id: 1, |
||||
date: '2021-03-17', |
||||
image: { |
||||
src: 'images/mobile-link-qr.svg', |
||||
height: '230px', |
||||
width: '230px', |
||||
placeImageBelowDescription: true, |
||||
}, |
||||
}, |
||||
3: { |
||||
id: 3, |
||||
date: '2021-03-08', |
||||
}, |
||||
4: { |
||||
id: 4, |
||||
date: '2021-05-11', |
||||
image: { |
||||
src: 'images/source-logos-bsc.svg', |
||||
width: '100%', |
||||
}, |
||||
}, |
||||
}, |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
const newStorage = await migration60.migrate(oldStorage); |
||||
assert.deepEqual(oldStorage.data, newStorage.data); |
||||
}); |
||||
|
||||
it('does not modify state when NotificationsController is undefined', async function () { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
arbitraryPropOne: 1, |
||||
arbitraryPropTwo: 2, |
||||
}, |
||||
}; |
||||
|
||||
const newStorage = await migration60.migrate(oldStorage); |
||||
assert.deepEqual(oldStorage.data, newStorage.data); |
||||
}); |
||||
|
||||
it('does not modify state when notifications are undefined', async function () { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
NotificationController: { |
||||
arbitraryControllerProp: 'foo', |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
const newStorage = await migration60.migrate(oldStorage); |
||||
assert.deepEqual(oldStorage.data, newStorage.data); |
||||
}); |
||||
|
||||
it('does not modify state when notifications are not an object', async function () { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
NotificationController: { |
||||
notifications: [], |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
const newStorage = await migration60.migrate(oldStorage); |
||||
assert.deepEqual(oldStorage.data, newStorage.data); |
||||
}); |
||||
}); |
Loading…
Reference in new issue