Bug 1307928 - Add mocha tests for NewConsoleOutputWrapper queues; r=bgrins.
This required to add a couple new cases for require-hacker.
MozReview-Commit-ID: 9Qon1PNjdF7
new file mode 100644
--- /dev/null
+++ b/devtools/client/webconsole/new-console-output/test/components/new-console-output-wrapper.test.js
@@ -0,0 +1,122 @@
+/* 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/. */
+
+"use strict";
+
+// Test utils.
+const expect = require("expect");
+const { stubPackets } =
+ require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index");
+const {
+ getFirstMessage,
+ getLastMessage,
+ getMessageAt,
+ getPrivatePacket,
+} = require("devtools/client/webconsole/new-console-output/test/helpers");
+
+const NewConsoleOutputWrapper =
+ require("devtools/client/webconsole/new-console-output/new-console-output-wrapper");
+const { messagesAdd } =
+ require("devtools/client/webconsole/new-console-output/actions/messages");
+
+function getNewConsoleOutputWrapper() {
+ const jsterm = {
+ hud: {
+ proxy: {
+ releaseActor: () => {}
+ }
+ }
+ };
+ return new NewConsoleOutputWrapper(null, jsterm);
+}
+
+describe("NewConsoleOutputWrapper", () => {
+ it("clears queues when dispatchMessagesClear is called", () => {
+ const ncow = getNewConsoleOutputWrapper();
+ ncow.queuedMessageAdds.push({fakePacket: "message"});
+ ncow.queuedMessageUpdates.push({fakePacket: "message-update"});
+ ncow.queuedRequestUpdates.push({fakePacket: "request-update"});
+
+ ncow.dispatchMessagesClear();
+
+ expect(ncow.queuedMessageAdds.length).toBe(0);
+ expect(ncow.queuedMessageUpdates.length).toBe(0);
+ expect(ncow.queuedRequestUpdates.length).toBe(0);
+ });
+
+ it("removes private packets from message queue on dispatchPrivateMessagesClear", () => {
+ const ncow = getNewConsoleOutputWrapper();
+
+ const publicLog = stubPackets.get("console.log('mymap')");
+ ncow.queuedMessageAdds.push(
+ getPrivatePacket("console.trace()"),
+ publicLog,
+ getPrivatePacket("XHR POST request"),
+ );
+
+ ncow.dispatchPrivateMessagesClear();
+
+ expect(ncow.queuedMessageAdds).toEqual([publicLog]);
+ });
+
+ it("removes private packets from network update queue on dispatchPrivateMessagesClear",
+ () => {
+ const ncow = getNewConsoleOutputWrapper();
+
+ const postId = Symbol();
+ const getId = Symbol();
+
+ // Add messages in the store to make sure that update to private requests are
+ // removed from the queue.
+ ncow.getStore().dispatch(messagesAdd([
+ stubPackets.get("GET request"),
+ {...getPrivatePacket("XHR GET request"), actor: getId},
+ ]));
+
+ // Add packet to the message queue to make sure that update to private requests are
+ // removed from the queue.
+ ncow.queuedMessageAdds.push(
+ {...getPrivatePacket("XHR POST request"), actor: postId},
+ );
+
+ const publicNetworkUpdate = stubPackets.get("GET request update");
+ ncow.queuedMessageUpdates.push(
+ publicNetworkUpdate,
+ {...getPrivatePacket("XHR GET request update"), networkInfo: {actor: getId}},
+ {...getPrivatePacket("XHR POST request update"), networkInfo: {actor: postId}},
+ );
+
+ ncow.dispatchPrivateMessagesClear();
+
+ expect(ncow.queuedMessageUpdates.length).toBe(1);
+ expect(ncow.queuedMessageUpdates).toEqual([publicNetworkUpdate]);
+ });
+
+ it("removes private packets from network request queue on dispatchPrivateMessagesClear",
+ () => {
+ const ncow = getNewConsoleOutputWrapper();
+
+ ncow.getStore().dispatch(messagesAdd([
+ stubPackets.get("GET request"),
+ getPrivatePacket("XHR GET request"),
+ getPrivatePacket("XHR POST request"),
+ ]));
+
+ const state = ncow.getStore().getState();
+ const publicId = getFirstMessage(state).id;
+ const privateXhrGetId = getMessageAt(state, 1).id;
+ const privateXhrPostId = getLastMessage(state).id;
+ ncow.queuedRequestUpdates.push(
+ {id: publicId},
+ {id: privateXhrGetId},
+ {id: privateXhrPostId},
+ );
+ // ncow.queuedRequestUpdates.push({fakePacket: "request-update"});
+
+ ncow.dispatchPrivateMessagesClear();
+
+ expect(ncow.queuedRequestUpdates.length).toBe(1);
+ expect(ncow.queuedRequestUpdates).toEqual([{id: publicId}]);
+ });
+});
--- a/devtools/client/webconsole/new-console-output/test/helpers.js
+++ b/devtools/client/webconsole/new-console-output/test/helpers.js
@@ -107,19 +107,31 @@ function getFiltersPrefs() {
function clearPrefs() {
[
"devtools.hud.loglimit",
...Object.values(PREFS.FILTER),
...Object.values(PREFS.UI),
].forEach(prefsService.clearUserPref);
}
+function getPrivatePacket(key) {
+ const packet = clonePacket(stubPackets.get(key));
+ if (packet.message) {
+ packet.message.private = true;
+ }
+ if (Object.getOwnPropertyNames(packet).includes("private")) {
+ packet.private = true;
+ }
+ return packet;
+}
+
module.exports = {
clearPrefs,
clonePacket,
getFiltersPrefs,
getFirstMessage,
getLastMessage,
getMessageAt,
+ getPrivatePacket,
prefsService,
setupActions,
setupStore,
};
--- a/devtools/client/webconsole/new-console-output/test/mocha-test-setup.js
+++ b/devtools/client/webconsole/new-console-output/test/mocha-test-setup.js
@@ -53,16 +53,20 @@ requireHacker.global_hook("default", (pa
"devtools/client/webconsole/new-console-output/test/fixtures/PluralForm");
case "Services":
case "Services.default":
return `module.exports = require("devtools-modules/src/Services")`;
case "devtools/shared/client/object-client":
return `() => {}`;
case "devtools/client/netmonitor/src/components/TabboxPanel":
return "{}";
+ case "devtools/client/webconsole/new-console-output/utils/context-menu":
+ return "{}";
+ case "devtools/shared/event-emitter":
+ return `module.exports = require("devtools-modules/src/utils/event-emitter")`;
}
// We need to rewrite all the modules assuming the root is mozilla-central and give them
// an absolute path.
if (path.startsWith("devtools/")) {
return getModule(path);
}
--- a/devtools/client/webconsole/new-console-output/test/store/private-messages.test.js
+++ b/devtools/client/webconsole/new-console-output/test/store/private-messages.test.js
@@ -10,37 +10,26 @@ const {
getAllNetworkMessagesUpdateById,
getAllRepeatById,
getCurrentGroup,
getGroupsById,
getAllMessagesById,
getVisibleMessages,
} = require("devtools/client/webconsole/new-console-output/selectors/messages");
const {
- clonePacket,
getFirstMessage,
getLastMessage,
+ getPrivatePacket,
setupActions,
setupStore,
} = require("devtools/client/webconsole/new-console-output/test/helpers");
const { stubPackets } = require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index");
const expect = require("expect");
-function getPrivatePacket(key) {
- const packet = clonePacket(stubPackets.get(key));
- if (packet.message) {
- packet.message.private = true;
- }
- if (Object.getOwnPropertyNames(packet).includes("private")) {
- packet.private = true;
- }
- return packet;
-}
-
describe("private messages", () => {
let actions;
before(() => {
actions = setupActions();
});
it("removes private messages on PRIVATE_MESSAGES_CLEAR action", () => {
const { dispatch, getState } = setupStore();