Bug 1307884 - Implement tests; r=bgrins
MozReview-Commit-ID: KdYSPciSvJk
--- a/devtools/client/webconsole/new-console-output/test/helpers.js
+++ b/devtools/client/webconsole/new-console-output/test/helpers.js
@@ -26,18 +26,18 @@ function setupActions() {
};
return wrappedActions;
}
/**
* Prepare the store for use in testing.
*/
-function setupStore(input) {
- const store = configureStore();
+function setupStore(input, hud) {
+ const store = configureStore(hud);
// Add the messages from the input commands to the store.
input.forEach((cmd) => {
store.dispatch(actions.messageAdd(stubPackets.get(cmd)));
});
return store;
}
--- a/devtools/client/webconsole/new-console-output/test/store/messages.test.js
+++ b/devtools/client/webconsole/new-console-output/test/store/messages.test.js
@@ -97,28 +97,74 @@ describe("Message reducer:", () => {
]);
dispatch(actions.messagesClear());
const messages = getAllMessages(getState());
expect(messages.size).toBe(0);
});
- it("limits the number of messages displayed", () => {
+ it("properly limits number of messages", () => {
const { dispatch, getState } = setupStore([]);
const logLimit = 1000;
const packet = clonePacket(stubPackets.get("console.log(undefined)"));
- for (let i = 1; i <= logLimit + 1; i++) {
+
+ for (let i = 1; i <= logLimit + 2; i++) {
packet.message.arguments = [`message num ${i}`];
dispatch(actions.messageAdd(packet));
}
const messages = getAllMessages(getState());
expect(messages.count()).toBe(logLimit);
+ expect(messages.first().parameters[0]).toBe(`message num 3`);
+ expect(messages.last().parameters[0]).toBe(`message num ${logLimit + 2}`);
+ });
+
+ it("properly limits number of groups", () => {
+ const { dispatch, getState } = setupStore([]);
+
+ const logLimit = 1000;
+
+ const packet = clonePacket(stubPackets.get("console.log(undefined)"));
+ const packetGroup = clonePacket(stubPackets.get("console.group('bar')"));
+ const packetGroupEnd = clonePacket(stubPackets.get("console.groupEnd()"));
+
+ for (let i = 0; i < logLimit + 2; i++) {
+ packet.message.arguments = [`message num ${i}`];
+ dispatch(actions.messageAdd(packetGroup));
+ dispatch(actions.messageAdd(packet));
+ dispatch(actions.messageAdd(packetGroupEnd));
+ }
+
+ const messages = getAllMessages(getState());
+ expect(messages.count()).toBe(logLimit * 2);
+ expect(messages.get(1).parameters[0]).toBe(`message num 2`);
+ expect(messages.last().parameters[0]).toBe(`message num ${logLimit + 1}`);
+ });
+
+ it("properly limits number of collapsed groups", () => {
+ const { dispatch, getState } = setupStore([]);
+
+ const logLimit = 1000;
+
+ const packet = clonePacket(stubPackets.get("console.log(undefined)"));
+ const packetGroupCollapsed = clonePacket(
+ stubPackets.get("console.groupCollapsed('foo')"));
+ const packetGroupEnd = clonePacket(stubPackets.get("console.groupEnd()"));
+
+ for (let i = 0; i < logLimit + 2; i++) {
+ packetGroupCollapsed.message.arguments = [`message num ${i}`];
+ dispatch(actions.messageAdd(packetGroupCollapsed));
+ dispatch(actions.messageAdd(packet));
+ dispatch(actions.messageAdd(packetGroupEnd));
+ }
+
+ const messages = getAllMessages(getState());
+ expect(messages.count()).toBe(logLimit);
expect(messages.first().parameters[0]).toBe(`message num 2`);
expect(messages.last().parameters[0]).toBe(`message num ${logLimit + 1}`);
});
it("does not add null messages to the store", () => {
const { dispatch, getState } = setupStore([]);
const message = stubPackets.get("console.time('bar')");
@@ -181,38 +227,16 @@ describe("Message reducer:", () => {
dispatch(actions.messageAdd(
stubPackets.get("console.log('foobar', 'test')")));
const messages = getAllMessages(getState());
expect(messages.size).toBe(1);
});
- it("shows the group of the first displayed message when messages are pruned", () => {
- const { dispatch, getState } = setupStore([]);
-
- const logLimit = 1000;
-
- const groupMessage = stubPreparedMessages.get("console.group('bar')");
- dispatch(actions.messageAdd(
- stubPackets.get("console.group('bar')")));
-
- const packet = clonePacket(stubPackets.get("console.log(undefined)"));
- for (let i = 1; i <= logLimit + 1; i++) {
- packet.message.arguments = [`message num ${i}`];
- dispatch(actions.messageAdd(packet));
- }
-
- const messages = getAllMessages(getState());
- expect(messages.count()).toBe(logLimit);
- expect(messages.first().messageText).toBe(groupMessage.messageText);
- expect(messages.get(1).parameters[0]).toBe(`message num 3`);
- expect(messages.last().parameters[0]).toBe(`message num ${logLimit + 1}`);
- });
-
it("adds console.dirxml call as console.log", () => {
const { dispatch, getState } = setupStore([]);
const packet = stubPackets.get("console.dirxml(window)");
dispatch(actions.messageAdd(packet));
const messages = getAllMessages(getState());
const dirxmlMessage = messages.last();
new file mode 100644
--- /dev/null
+++ b/devtools/client/webconsole/new-console-output/test/store/release-actors.test.js
@@ -0,0 +1,61 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+const {
+ setupActions,
+ setupStore,
+ clonePacket
+} = 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");
+
+describe("Release actor enhancer:", () => {
+ let actions;
+
+ before(() => {
+ actions = setupActions();
+ });
+
+ describe("Client proxy", () => {
+ it("properly releases backend actors when limit is reached", () => {
+ let proxyExecuted = 0;
+ const { dispatch } = setupStore([], {
+ proxy: {
+ releaseActor: (actor) => {
+ proxyExecuted++;
+ }
+ }
+ });
+
+ const logCount = 1001;
+ const packet = clonePacket(stubPackets.get(
+ "console.assert(false, {message: 'foobar'})"));
+
+ for (let i = 1; i <= logCount; i++) {
+ packet.message.arguments.push(`message num ${i}`);
+ dispatch(actions.messageAdd(packet));
+ }
+
+ expect(proxyExecuted).toBe(1);
+ });
+
+ it("properly releases backend actors after clear", () => {
+ let proxyExecuted = 0;
+ const { dispatch } = setupStore([], {
+ proxy: {
+ releaseActor: (actor) => {
+ proxyExecuted++;
+ }
+ }
+ });
+
+ dispatch(actions.messageAdd(clonePacket(stubPackets.get(
+ "console.assert(false, {message: 'foobar'})"))));
+ dispatch(actions.messagesClear());
+
+ expect(proxyExecuted).toBe(1);
+ });
+ });
+});