summaryrefslogtreecommitdiffstats
path: root/devtools/client/memory/test/xpcshell/test_action-select-snapshot.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/memory/test/xpcshell/test_action-select-snapshot.js')
-rw-r--r--devtools/client/memory/test/xpcshell/test_action-select-snapshot.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/devtools/client/memory/test/xpcshell/test_action-select-snapshot.js b/devtools/client/memory/test/xpcshell/test_action-select-snapshot.js
new file mode 100644
index 0000000000..29f69839a0
--- /dev/null
+++ b/devtools/client/memory/test/xpcshell/test_action-select-snapshot.js
@@ -0,0 +1,46 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests the reducer responding to the action `selectSnapshot(snapshot)`
+ */
+
+const actions = require("resource://devtools/client/memory/actions/snapshot.js");
+const {
+ snapshotState: states,
+} = require("resource://devtools/client/memory/constants.js");
+
+add_task(async function() {
+ const front = new StubbedMemoryFront();
+ await front.attach();
+ const store = Store();
+
+ for (let i = 0; i < 5; i++) {
+ store.dispatch(actions.takeSnapshot(front));
+ }
+
+ await waitUntilState(
+ store,
+ ({ snapshots }) => snapshots.length === 5 && snapshots.every(isDone)
+ );
+
+ for (let i = 0; i < 5; i++) {
+ info(`Selecting snapshot[${i}]`);
+ store.dispatch(actions.selectSnapshot(store.getState().snapshots[i].id));
+ await waitUntilState(store, ({ snapshots }) => snapshots[i].selected);
+
+ const { snapshots } = store.getState();
+ ok(snapshots[i].selected, `snapshot[${i}] selected`);
+ equal(
+ snapshots.filter(s => !s.selected).length,
+ 4,
+ "All other snapshots are unselected"
+ );
+ }
+});
+
+function isDone(s) {
+ return s.state === states.SAVED;
+}