import { mock } from "jest-mock-extended"; import { FakeStorageService } from "../../../spec/fake-storage.service"; import { MigrationHelper } from "../../state-migrations/migration-helper"; import { MigrationBuilderService } from "./migration-builder.service"; describe("MigrationBuilderService", () => { // All migrations from 10+ should be capable of having a null account object or null global object const startingStateVersion = 10; const noAccounts = { stateVersion: startingStateVersion, authenticatedAccounts: [], }; const nullAndUndefinedAccounts = { stateVersion: startingStateVersion, authenticatedAccounts: ["account1", "account2"], account1: null, account2: undefined, }; const emptyAccountObject = { stateVersion: startingStateVersion, authenticatedAccounts: ["account1"], account1: {}, }; const nullCommonAccountProperties = { stateVersion: startingStateVersion, authenticatedAccounts: ["account1"], account1: { data: null, keys: null, profile: null, settings: null, tokens: null, }, }; const emptyCommonAccountProperties = { stateVersion: startingStateVersion, authenticatedAccounts: ["account1"], account1: { data: {}, keys: {}, profile: {}, settings: {}, tokens: {}, }, }; const nullGlobal = { stateVersion: startingStateVersion, global: null, }; const undefinedGlobal = { stateVersion: startingStateVersion, global: undefined, }; const emptyGlobalObject = { stateVersion: startingStateVersion, global: {}, }; it.each([ noAccounts, nullAndUndefinedAccounts, emptyAccountObject, nullCommonAccountProperties, emptyCommonAccountProperties, nullGlobal, undefinedGlobal, emptyGlobalObject, ])("should not produce migrations that throw when given data: %s", async (startingState) => { const sut = new MigrationBuilderService(); const helper = new MigrationHelper( startingStateVersion, new FakeStorageService(startingState), mock(), ); await sut.build().migrate(helper); }); });