99 lines
2.6 KiB
JavaScript
99 lines
2.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { ExperimentAPI } = ChromeUtils.importESModule(
|
|
"resource://nimbus/ExperimentAPI.sys.mjs"
|
|
);
|
|
const { NimbusTestUtils } = ChromeUtils.importESModule(
|
|
"resource://testing-common/NimbusTestUtils.sys.mjs"
|
|
);
|
|
const { ContentRelevancyManager } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/ContentRelevancyManager.sys.mjs"
|
|
);
|
|
const { sinon } = ChromeUtils.importESModule(
|
|
"resource://testing-common/Sinon.sys.mjs"
|
|
);
|
|
|
|
const { TimerManager } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/UpdateTimerManager.sys.mjs"
|
|
);
|
|
|
|
let gSandbox;
|
|
|
|
add_setup(() => {
|
|
gSandbox = sinon.createSandbox();
|
|
|
|
registerCleanupFunction(() => {
|
|
gSandbox.restore();
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Test Nimbus integration - enable.
|
|
*/
|
|
add_task(async function test_NimbusIntegration_enable() {
|
|
gSandbox.spy(ContentRelevancyManager, "notify");
|
|
gSandbox.spy(TimerManager.prototype, "registerTimer");
|
|
|
|
await ExperimentAPI.ready();
|
|
const doExperimentCleanup = await NimbusTestUtils.enrollWithFeatureConfig({
|
|
featureId: "contentRelevancy",
|
|
value: {
|
|
enabled: true,
|
|
minInputUrls: 1,
|
|
maxInputUrls: 3,
|
|
// Set the timer interval to 0 will trigger the timer right away.
|
|
timerInterval: 0,
|
|
ingestEnabled: false,
|
|
},
|
|
});
|
|
|
|
Assert.ok(ContentRelevancyManager.shouldEnable, "Should enable via Nimbus");
|
|
Assert.ok(
|
|
TimerManager.prototype.registerTimer.calledWith(
|
|
ContentRelevancyManager.TIMER_ID
|
|
),
|
|
"Should register timer when enabled"
|
|
);
|
|
|
|
await TestUtils.waitForCondition(
|
|
() => ContentRelevancyManager.notify.called,
|
|
"The timer callback should be called"
|
|
);
|
|
|
|
await doExperimentCleanup();
|
|
gSandbox.restore();
|
|
});
|
|
|
|
/**
|
|
* Test Nimbus integration - disable.
|
|
*/
|
|
add_task(async function test_NimbusIntegration_disable() {
|
|
gSandbox.spy(TimerManager.prototype, "registerTimer");
|
|
|
|
await ExperimentAPI.ready();
|
|
const doExperimentCleanup = await NimbusTestUtils.enrollWithFeatureConfig({
|
|
featureId: "contentRelevancy",
|
|
value: {
|
|
enabled: false,
|
|
minInputUrls: 1,
|
|
maxInputUrls: 3,
|
|
// Set the timer interval to 0 will trigger the timer right away.
|
|
timerInterval: 0,
|
|
ingestEnabled: false,
|
|
},
|
|
});
|
|
|
|
Assert.ok(!ContentRelevancyManager.shouldEnable, "Should disable via Nimbus");
|
|
Assert.ok(
|
|
!TimerManager.prototype.registerTimer.calledWith(
|
|
ContentRelevancyManager.TIMER_ID
|
|
),
|
|
"Should not register timer"
|
|
);
|
|
|
|
await doExperimentCleanup();
|
|
gSandbox.restore();
|
|
});
|