summaryrefslogtreecommitdiffstats
path: root/services/settings/test/unit/test_remote_settings_sync_history.js
diff options
context:
space:
mode:
Diffstat (limited to 'services/settings/test/unit/test_remote_settings_sync_history.js')
-rw-r--r--services/settings/test/unit/test_remote_settings_sync_history.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/services/settings/test/unit/test_remote_settings_sync_history.js b/services/settings/test/unit/test_remote_settings_sync_history.js
new file mode 100644
index 0000000000..1fdc3d1adc
--- /dev/null
+++ b/services/settings/test/unit/test_remote_settings_sync_history.js
@@ -0,0 +1,69 @@
+"use strict";
+
+const { SyncHistory } = ChromeUtils.importESModule(
+ "resource://services-settings/SyncHistory.sys.mjs"
+);
+
+async function clear_state() {
+ await new SyncHistory("").clear();
+}
+add_task(clear_state);
+
+add_task(async function test_entries_are_stored_by_source() {
+ const history = new SyncHistory();
+ await history.store("42", "success", { pi: "3.14" });
+ // Check that history is isolated by source.
+ await new SyncHistory("main/cfr").store("88", "error");
+
+ const l = await history.list();
+
+ Assert.deepEqual(l, [
+ {
+ timestamp: 42,
+ status: "success",
+ infos: { pi: "3.14" },
+ datetime: new Date(42),
+ },
+ ]);
+});
+add_task(clear_state);
+
+add_task(
+ async function test_old_entries_are_removed_keep_fixed_size_per_source() {
+ const history = new SyncHistory("settings-sync", { size: 3 });
+ const anotherHistory = await new SyncHistory("main/cfr");
+
+ await history.store("42", "success");
+ await history.store("41", "sync_error");
+ await history.store("43", "up_to_date");
+
+ let l = await history.list();
+ Assert.equal(l.length, 3);
+
+ await history.store("44", "success");
+ await anotherHistory.store("44", "success");
+
+ l = await history.list();
+ Assert.equal(l.length, 3);
+ Assert.ok(!l.map(e => e.timestamp).includes(41));
+
+ l = await anotherHistory.list();
+ Assert.equal(l.length, 1);
+ }
+);
+add_task(clear_state);
+
+add_task(async function test_entries_are_sorted_by_timestamp_desc() {
+ const history = new SyncHistory("settings-sync");
+ await history.store("42", "success");
+ await history.store("41", "sync_error");
+ await history.store("44", "up_to_date");
+
+ const l = await history.list();
+
+ Assert.deepEqual(
+ l.map(e => e.timestamp),
+ [44, 42, 41]
+ );
+});
+add_task(clear_state);