summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/src/actions/tests/navigation.spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/src/actions/tests/navigation.spec.js')
-rw-r--r--devtools/client/debugger/src/actions/tests/navigation.spec.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/devtools/client/debugger/src/actions/tests/navigation.spec.js b/devtools/client/debugger/src/actions/tests/navigation.spec.js
new file mode 100644
index 0000000000..cc8bd8300a
--- /dev/null
+++ b/devtools/client/debugger/src/actions/tests/navigation.spec.js
@@ -0,0 +1,108 @@
+/* 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/>. */
+
+// @flow
+
+import {
+ createStore,
+ selectors,
+ actions,
+ makeSource,
+} from "../../utils/test-head";
+
+jest.mock("../../utils/editor");
+
+const {
+ getActiveSearch,
+ getTextSearchQuery,
+ getTextSearchResults,
+ getTextSearchStatus,
+ getFileSearchQuery,
+ getFileSearchResults,
+} = selectors;
+
+const threadFront = {
+ sourceContents: async () => ({
+ source: "function foo1() {\n const foo = 5; return foo;\n}",
+ contentType: "text/javascript",
+ }),
+ getSourceActorBreakpointPositions: async () => ({}),
+ getSourceActorBreakableLines: async () => [],
+};
+
+describe("navigation", () => {
+ it("navigation closes project-search", async () => {
+ const { dispatch, getState, cx } = createStore(threadFront);
+ const mockQuery = "foo";
+
+ await dispatch(actions.newGeneratedSource(makeSource("foo1")));
+ await dispatch(actions.searchSources(cx, mockQuery));
+
+ let results = getTextSearchResults(getState());
+ expect(results).toHaveLength(1);
+ expect(selectors.getTextSearchQuery(getState())).toEqual("foo");
+ expect(getTextSearchStatus(getState())).toEqual("DONE");
+
+ await dispatch(actions.willNavigate("will-navigate"));
+
+ results = getTextSearchResults(getState());
+ expect(results).toHaveLength(0);
+ expect(getTextSearchQuery(getState())).toEqual("");
+ expect(getTextSearchStatus(getState())).toEqual("INITIAL");
+ });
+
+ it("navigation removes activeSearch 'project' value", async () => {
+ const { dispatch, getState } = createStore(threadFront);
+ dispatch(actions.setActiveSearch("project"));
+ expect(getActiveSearch(getState())).toBe("project");
+
+ await dispatch(actions.willNavigate("will-navigate"));
+ expect(getActiveSearch(getState())).toBe(null);
+ });
+
+ it("navigation clears the file-search query", async () => {
+ const { dispatch, getState, cx } = createStore(threadFront);
+
+ dispatch(actions.setFileSearchQuery(cx, "foobar"));
+ expect(getFileSearchQuery(getState())).toBe("foobar");
+
+ await dispatch(actions.willNavigate("will-navigate"));
+
+ expect(getFileSearchQuery(getState())).toBe("");
+ });
+
+ it("navigation clears the file-search results", async () => {
+ const { dispatch, getState, cx } = createStore(threadFront);
+
+ const searchResults = [
+ { line: 1, ch: 3 },
+ { line: 3, ch: 2 },
+ ];
+ dispatch(actions.updateSearchResults(cx, 2, 3, searchResults));
+ expect(getFileSearchResults(getState())).toEqual({
+ count: 2,
+ index: 2,
+ matchIndex: 1,
+ matches: searchResults,
+ });
+
+ await dispatch(actions.willNavigate("will-navigate"));
+
+ expect(getFileSearchResults(getState())).toEqual({
+ count: 0,
+ index: -1,
+ matchIndex: -1,
+ matches: [],
+ });
+ });
+
+ it("navigation removes activeSearch 'file' value", async () => {
+ const { dispatch, getState } = createStore(threadFront);
+ dispatch(actions.setActiveSearch("file"));
+ expect(getActiveSearch(getState())).toBe("file");
+
+ await dispatch(actions.willNavigate("will-navigate"));
+ expect(getActiveSearch(getState())).toBe(null);
+ });
+});