forked from mirrors/gecko-dev
We weren't passing the appropriate profile object to getMigrateData, and thanks to mocking, we didn't catch this in automated testing. This patch fixes the issue, and updates our mocking helpers to ensure that the expected profile object gets passed to the `getResources` calls during mochitest-browser tests. Differential Revision: https://phabricator.services.mozilla.com/D175144
63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
import { MigratorBase } from "resource:///modules/MigratorBase.sys.mjs";
|
|
|
|
const lazy = {};
|
|
|
|
ChromeUtils.defineESModuleGetters(lazy, {
|
|
MigrationUtils: "resource:///modules/MigrationUtils.sys.mjs",
|
|
});
|
|
|
|
/**
|
|
* A stub of a migrator used for automated testing only.
|
|
*/
|
|
export class InternalTestingProfileMigrator extends MigratorBase {
|
|
static get key() {
|
|
return "internal-testing";
|
|
}
|
|
|
|
static get displayNameL10nID() {
|
|
return "Internal Testing Migrator";
|
|
}
|
|
|
|
getSourceProfiles() {
|
|
return Promise.resolve([InternalTestingProfileMigrator.testProfile]);
|
|
}
|
|
|
|
// We will create a single MigratorResource for each resource type that
|
|
// just immediately reports a successful migration.
|
|
getResources(aProfile) {
|
|
if (
|
|
!aProfile ||
|
|
aProfile.id != InternalTestingProfileMigrator.testProfile.id
|
|
) {
|
|
throw new Error(
|
|
"InternalTestingProfileMigrator.getResources expects test profile."
|
|
);
|
|
}
|
|
return Object.values(lazy.MigrationUtils.resourceTypes).map(type => {
|
|
return {
|
|
type,
|
|
migrate: callback => {
|
|
callback(true /* success */);
|
|
},
|
|
};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Clears the MigratorResources that are normally cached by the
|
|
* MigratorBase parent class after a call to getResources. This
|
|
* allows our automated tests to try different resource availability
|
|
* scenarios between tests.
|
|
*/
|
|
flushResourceCache() {
|
|
this._resourcesByProfile = null;
|
|
}
|
|
|
|
static get testProfile() {
|
|
return { id: "test-profile", name: "Some test profile" };
|
|
}
|
|
}
|