Skip to content

Commit df53818

Browse files
Merge pull request #150 from opencomponents/debug-events
debug event firing
2 parents 4e02b49 + b01a381 commit df53818

File tree

2 files changed

+132
-0
lines changed

2 files changed

+132
-0
lines changed

src/oc-client.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,9 @@ export function createOc(oc) {
382382

383383
return {
384384
fire(key, data) {
385+
logInfo(
386+
`OC event fired: "${key}"${data ? ` with data: ${JSON.stringify(data)}` : ""}`,
387+
);
385388
if (listeners[key]) {
386389
for (let cb of listeners[key]) {
387390
cb({ type: key }, data);

tests/events.spec.js

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,133 @@ test.describe("oc-client : events", () => {
195195
expect(result.eventObject).toEqual({ type: "null:event" });
196196
expect(result.data).toBeNull();
197197
});
198+
199+
test("should have debug configuration that defaults to false", async ({
200+
page,
201+
}) => {
202+
const result = await page.evaluate(() => {
203+
return {
204+
hasDebugProperty: "debug" in oc.conf,
205+
debugDefaultValue: oc.conf.debug,
206+
canSetDebug: (() => {
207+
oc.conf.debug = true;
208+
const canSet = oc.conf.debug === true;
209+
oc.conf.debug = false;
210+
return canSet;
211+
})(),
212+
};
213+
});
214+
215+
expect(result.hasDebugProperty).toBe(false);
216+
expect(result.debugDefaultValue).toBeUndefined();
217+
expect(result.canSetDebug).toBe(true);
218+
});
219+
220+
test("should log events when debug is enabled", async ({ page }) => {
221+
const result = await page.evaluate(() => {
222+
return new Promise((resolve) => {
223+
const logCalls = [];
224+
const originalConsoleLog = console.log;
225+
console.log = (...args) => {
226+
logCalls.push(args);
227+
};
228+
229+
oc.conf.debug = true;
230+
231+
oc.events.fire("trace:test1", { message: "hello" });
232+
oc.events.fire("trace:test2", { count: 42 });
233+
oc.events.fire("trace:test3");
234+
235+
// Restore console.log
236+
console.log = originalConsoleLog;
237+
238+
oc.conf.debug = false;
239+
240+
setTimeout(() => {
241+
resolve({
242+
logCallCount: logCalls.length,
243+
logCalls: logCalls,
244+
});
245+
}, 10);
246+
});
247+
});
248+
249+
expect(result.logCallCount).toBe(3);
250+
251+
expect(result.logCalls[0][0]).toBe(
252+
'OC event fired: "trace:test1" with data: {"message":"hello"}',
253+
);
254+
255+
expect(result.logCalls[1][0]).toBe(
256+
'OC event fired: "trace:test2" with data: {"count":42}',
257+
);
258+
259+
expect(result.logCalls[2][0]).toBe('OC event fired: "trace:test3"');
260+
});
261+
262+
test("should not log events when debug is disabled", async ({ page }) => {
263+
const result = await page.evaluate(() => {
264+
return new Promise((resolve) => {
265+
const logCalls = [];
266+
const originalConsoleLog = console.log;
267+
console.log = (...args) => {
268+
logCalls.push(args);
269+
};
270+
271+
oc.conf.debug = false;
272+
273+
oc.events.fire("notrace:test1", { message: "hello" });
274+
oc.events.fire("notrace:test2", { count: 42 });
275+
276+
// Restore console.log
277+
console.log = originalConsoleLog;
278+
279+
setTimeout(() => {
280+
resolve({
281+
logCallCount: logCalls.length,
282+
logCalls: logCalls,
283+
});
284+
}, 10);
285+
});
286+
});
287+
288+
expect(result.logCallCount).toBe(0);
289+
});
290+
291+
test("should not interfere with normal event handling when debug is enabled", async ({
292+
page,
293+
}) => {
294+
const result = await page.evaluate(() => {
295+
return new Promise((resolve) => {
296+
// Track event data
297+
window.eventData = [];
298+
299+
// Set up event listener
300+
oc.events.on("normal:event", (event, data) => {
301+
window.eventData.push({
302+
eventType: event.type,
303+
data: data,
304+
});
305+
});
306+
307+
oc.conf.debug = true;
308+
309+
// Fire event
310+
oc.events.fire("normal:event", { test: "data" });
311+
312+
oc.conf.debug = false;
313+
314+
setTimeout(() => {
315+
resolve({
316+
eventCount: window.eventData.length,
317+
eventData: window.eventData[0],
318+
});
319+
}, 10);
320+
});
321+
});
322+
323+
expect(result.eventCount).toBe(1);
324+
expect(result.eventData.eventType).toBe("normal:event");
325+
expect(result.eventData.data).toEqual({ test: "data" });
326+
});
198327
});

0 commit comments

Comments
 (0)