webconsole-wrapper.test.js (4876B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 // Test utils. 8 const expect = require("expect"); 9 const { 10 stubPackets, 11 } = require("resource://devtools/client/webconsole/test/node/fixtures/stubs/index.js"); 12 const { 13 clonePacket, 14 getMessageAt, 15 getPrivatePacket, 16 getWebConsoleUiMock, 17 } = require("resource://devtools/client/webconsole/test/node/helpers.js"); 18 19 const WebConsoleWrapper = require("resource://devtools/client/webconsole/webconsole-wrapper.js"); 20 const { 21 messagesAdd, 22 } = require("resource://devtools/client/webconsole/actions/messages.js"); 23 24 async function getWebConsoleWrapper() { 25 const hud = { 26 currentTarget: { client: {}, getFront: () => {} }, 27 getMappedExpression: () => {}, 28 commands: { 29 objectCommand: { 30 releaseObjects: async () => {}, 31 }, 32 }, 33 }; 34 const webConsoleUi = getWebConsoleUiMock(hud); 35 36 const wcow = new WebConsoleWrapper(null, webConsoleUi, null, null); 37 await wcow.init(); 38 return wcow; 39 } 40 41 describe("WebConsoleWrapper", () => { 42 it("clears queues when dispatchMessagesClear is called", async () => { 43 const ncow = await getWebConsoleWrapper(); 44 ncow.queuedMessageAdds.push({ fakePacket: "message", data: {} }); 45 ncow.queuedMessageUpdates.push({ fakePacket: "message-update", data: {} }); 46 ncow.queuedRequestUpdates.push({ fakePacket: "request-update", data: {} }); 47 48 ncow.dispatchMessagesClear(); 49 50 expect(ncow.queuedMessageAdds.length).toBe(0); 51 expect(ncow.queuedMessageUpdates.length).toBe(0); 52 expect(ncow.queuedRequestUpdates.length).toBe(0); 53 }); 54 55 it("removes private packets from message queue on dispatchPrivateMessagesClear", async () => { 56 const ncow = await getWebConsoleWrapper(); 57 58 const publicLog = stubPackets.get("console.log('mymap')"); 59 ncow.queuedMessageAdds.push( 60 getPrivatePacket("console.trace()"), 61 publicLog, 62 getPrivatePacket("XHR POST request") 63 ); 64 65 ncow.dispatchPrivateMessagesClear(); 66 expect(ncow.queuedMessageAdds).toEqual([publicLog]); 67 }); 68 69 it("removes private packets from network update queue on dispatchPrivateMessagesClear", async () => { 70 const ncow = await getWebConsoleWrapper(); 71 const publicLog = stubPackets.get("console.log('mymap')"); 72 ncow.queuedMessageAdds.push( 73 getPrivatePacket("console.trace()"), 74 publicLog, 75 getPrivatePacket("XHR POST request") 76 ); 77 78 const postId = "pid1"; 79 const getId = "gid1"; 80 81 // Add messages in the store to make sure that update to private requests are 82 // removed from the queue. 83 ncow 84 .getStore() 85 .dispatch( 86 messagesAdd([ 87 stubPackets.get("GET request"), 88 { ...getPrivatePacket("XHR GET request"), actor: getId }, 89 ]) 90 ); 91 92 // Add packet to the message queue to make sure that update to private requests are 93 // removed from the queue. 94 ncow.queuedMessageAdds.push({ 95 ...getPrivatePacket("XHR POST request"), 96 actor: postId, 97 }); 98 99 const publicNetworkUpdate = stubPackets.get("GET request update"); 100 ncow.queuedMessageUpdates.push( 101 publicNetworkUpdate, 102 { 103 ...getPrivatePacket("XHR GET request update"), 104 actor: getId, 105 }, 106 { 107 ...getPrivatePacket("XHR POST request update"), 108 actor: postId, 109 } 110 ); 111 112 ncow.dispatchPrivateMessagesClear(); 113 114 expect(ncow.queuedMessageUpdates.length).toBe(1); 115 expect(ncow.queuedMessageUpdates).toEqual([publicNetworkUpdate]); 116 }); 117 118 it("removes private packets from network request queue on dispatchPrivateMessagesClear", async () => { 119 const ncow = await getWebConsoleWrapper(); 120 121 const packet1 = clonePacket(stubPackets.get("GET request")); 122 const packet2 = clonePacket(getPrivatePacket("XHR GET request")); 123 const packet3 = clonePacket(getPrivatePacket("XHR POST request")); 124 125 // We need to reassign the timeStamp of the packet to guarantee the order. 126 packet1.timeStamp = packet1.timeStamp + 1; 127 packet2.timeStamp = packet2.timeStamp + 2; 128 packet3.timeStamp = packet3.timeStamp + 3; 129 130 ncow.getStore().dispatch(messagesAdd([packet1, packet2, packet3])); 131 132 const state = ncow.getStore().getState(); 133 const publicId = getMessageAt(state, 0).id; 134 const privateXhrGetId = getMessageAt(state, 1).id; 135 const privateXhrPostId = getMessageAt(state, 2).id; 136 ncow.queuedRequestUpdates.push( 137 { id: publicId }, 138 { id: privateXhrGetId }, 139 { id: privateXhrPostId } 140 ); 141 // ncow.queuedRequestUpdates.push({fakePacket: "request-update"}); 142 143 ncow.dispatchPrivateMessagesClear(); 144 145 expect(ncow.queuedRequestUpdates.length).toBe(1); 146 expect(ncow.queuedRequestUpdates).toEqual([{ id: publicId }]); 147 }); 148 });