mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-01 13:47:06 +01:00
9bbabd4868
* Add AppMetadataController so current and previous application and migration version can be captured in sentry * Add currentAppVersion, previousAppVersion, previousMigrationVersion, currentMigrationVersion to SENTRY_OBJECT * Update app/scripts/controllers/app-metadata.ts Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Update app/scripts/controllers/app-metadata.ts Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Update app/scripts/controllers/app-metadata.ts Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Fix types * Add tests for app-metadata.test.ts * Lint fixes * Modify loadStateFromPersistence to return the whole versionData object, so that the migration version can be passed to the metamask-controller on instantiation * Remove reference to implementation details in test descriptions in app/scripts/controllers/app-metadata.test.ts * Reset all mocks afterEach in AppMetadataController * Refactor AppMetadataController to be passed version instead of calling platform.version directly (for ease of unit testing the MetaMask Controller) * Make maybeUpdateAppVersion and maybeUpdateMigrationVersion private, and remove unit tests of those specific functions --------- Co-authored-by: Mark Stacey <markjstacey@gmail.com>
105 lines
3.7 KiB
TypeScript
105 lines
3.7 KiB
TypeScript
import assert from 'assert';
|
|
import AppMetadataController from './app-metadata';
|
|
|
|
const EXPECTED_DEFAULT_STATE = {
|
|
currentAppVersion: '',
|
|
previousAppVersion: '',
|
|
previousMigrationVersion: 0,
|
|
currentMigrationVersion: 0,
|
|
};
|
|
|
|
describe('AppMetadataController', () => {
|
|
describe('constructor', () => {
|
|
it('accepts initial state and does not modify it if currentMigrationVersion and platform.getVersion() match respective values in state', async () => {
|
|
const initState = {
|
|
currentAppVersion: '1',
|
|
previousAppVersion: '1',
|
|
previousMigrationVersion: 1,
|
|
currentMigrationVersion: 1,
|
|
};
|
|
const appMetadataController = new AppMetadataController({
|
|
state: initState,
|
|
currentMigrationVersion: 1,
|
|
currentAppVersion: '1',
|
|
});
|
|
assert.deepStrictEqual(appMetadataController.store.getState(), initState);
|
|
});
|
|
|
|
it('sets default state and does not modify it', async () => {
|
|
const appMetadataController = new AppMetadataController({
|
|
state: {},
|
|
});
|
|
assert.deepStrictEqual(
|
|
appMetadataController.store.getState(),
|
|
EXPECTED_DEFAULT_STATE,
|
|
);
|
|
});
|
|
|
|
it('sets default state and does not modify it if options version parameters match respective default values', async () => {
|
|
const appMetadataController = new AppMetadataController({
|
|
state: {},
|
|
currentMigrationVersion: 0,
|
|
currentAppVersion: '',
|
|
});
|
|
assert.deepStrictEqual(
|
|
appMetadataController.store.getState(),
|
|
EXPECTED_DEFAULT_STATE,
|
|
);
|
|
});
|
|
|
|
it('updates the currentAppVersion state property if options.currentAppVersion does not match the default value', async () => {
|
|
const appMetadataController = new AppMetadataController({
|
|
state: {},
|
|
currentMigrationVersion: 0,
|
|
currentAppVersion: '1',
|
|
});
|
|
assert.deepStrictEqual(appMetadataController.store.getState(), {
|
|
...EXPECTED_DEFAULT_STATE,
|
|
currentAppVersion: '1',
|
|
});
|
|
});
|
|
|
|
it('updates the currentAppVersion and previousAppVersion state properties if options.currentAppVersion, currentAppVersion and previousAppVersion are all different', async () => {
|
|
const appMetadataController = new AppMetadataController({
|
|
state: {
|
|
currentAppVersion: '2',
|
|
previousAppVersion: '1',
|
|
},
|
|
currentAppVersion: '3',
|
|
currentMigrationVersion: 0,
|
|
});
|
|
assert.deepStrictEqual(appMetadataController.store.getState(), {
|
|
...EXPECTED_DEFAULT_STATE,
|
|
currentAppVersion: '3',
|
|
previousAppVersion: '2',
|
|
});
|
|
});
|
|
|
|
it('updates the currentMigrationVersion state property if the currentMigrationVersion param does not match the default value', async () => {
|
|
const appMetadataController = new AppMetadataController({
|
|
state: {},
|
|
currentMigrationVersion: 1,
|
|
});
|
|
assert.deepStrictEqual(appMetadataController.store.getState(), {
|
|
...EXPECTED_DEFAULT_STATE,
|
|
currentMigrationVersion: 1,
|
|
});
|
|
});
|
|
|
|
it('updates the currentMigrationVersion and previousMigrationVersion state properties if the currentMigrationVersion param, the currentMigrationVersion state property and the previousMigrationVersion state property are all different', async () => {
|
|
const appMetadataController = new AppMetadataController({
|
|
state: {
|
|
currentMigrationVersion: 2,
|
|
previousMigrationVersion: 1,
|
|
},
|
|
currentMigrationVersion: 3,
|
|
});
|
|
assert.deepStrictEqual(appMetadataController.store.getState(), {
|
|
...EXPECTED_DEFAULT_STATE,
|
|
currentMigrationVersion: 3,
|
|
previousMigrationVersion: 2,
|
|
});
|
|
});
|
|
});
|
|
});
|