summaryrefslogtreecommitdiffstats
path: root/toolkit/components/normandy/test/unit/test_RecipeRunner.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/normandy/test/unit/test_RecipeRunner.js')
-rw-r--r--toolkit/components/normandy/test/unit/test_RecipeRunner.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/toolkit/components/normandy/test/unit/test_RecipeRunner.js b/toolkit/components/normandy/test/unit/test_RecipeRunner.js
new file mode 100644
index 0000000000..710ac4d507
--- /dev/null
+++ b/toolkit/components/normandy/test/unit/test_RecipeRunner.js
@@ -0,0 +1,34 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+const { updateAppInfo } = ChromeUtils.importESModule(
+ "resource://testing-common/AppInfo.sys.mjs"
+);
+const { RecipeRunner } = ChromeUtils.importESModule(
+ "resource://normandy/lib/RecipeRunner.sys.mjs"
+);
+
+// Test that new build IDs trigger immediate recipe runs
+add_task(async () => {
+ updateAppInfo({
+ appBuildID: "new-build-id",
+ lastAppBuildID: "old-build-id",
+ });
+ const runStub = sinon.stub(RecipeRunner, "run");
+ const registerTimerStub = sinon.stub(RecipeRunner, "registerTimer");
+ sinon.stub(RecipeRunner, "watchPrefs");
+
+ Services.prefs.setBoolPref("app.normandy.first_run", false);
+
+ await RecipeRunner.init();
+ Assert.deepEqual(
+ runStub.args,
+ [[{ trigger: "newBuildID" }]],
+ "RecipeRunner.run is called immediately on a new build ID"
+ );
+ ok(registerTimerStub.called, "RecipeRunner.registerTimer registers a timer");
+
+ sinon.restore();
+});