From cb1636bed5561120d9ebf2e3062dd186f566d28f Mon Sep 17 00:00:00 2001 From: Isaac Lee <68138671+luminousleek@users.noreply.github.com> Date: Fri, 15 Mar 2024 17:18:45 +0800 Subject: [PATCH 1/7] mock logger and expect it to be called --- packages/core/test/unit/html/NodeProcessor.data.ts | 2 ++ packages/core/test/unit/html/NodeProcessor.test.ts | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/packages/core/test/unit/html/NodeProcessor.data.ts b/packages/core/test/unit/html/NodeProcessor.data.ts index 102d265111..0f52654271 100644 --- a/packages/core/test/unit/html/NodeProcessor.data.ts +++ b/packages/core/test/unit/html/NodeProcessor.data.ts @@ -36,6 +36,8 @@ export const PROCESS_PANEL_HEADER_SLOT_TAKES_PRIORITY_EXPECTED = ` `; +export const PROCESS_PANEL_HEADER_SLOT_TAKES_PRIORITY_WARN_MSG = "panel has a header slot, 'header' attribute has no effect."; + export const PROCESS_PANEL_HEADER_NO_OVERRIDE = `
diff --git a/packages/core/test/unit/html/NodeProcessor.test.ts b/packages/core/test/unit/html/NodeProcessor.test.ts index 371d1069f7..e407351f9d 100644 --- a/packages/core/test/unit/html/NodeProcessor.test.ts +++ b/packages/core/test/unit/html/NodeProcessor.test.ts @@ -2,11 +2,16 @@ import path from 'path'; import cheerio from 'cheerio'; import htmlparser from 'htmlparser2'; import * as testData from './NodeProcessor.data'; +import * as logger from '../../../src/utils/logger'; import { Context } from '../../../src/html/Context'; import { shiftSlotNodeDeeper, transformOldSlotSyntax } from '../../../src/html/vueSlotSyntaxProcessor'; import { getNewDefaultNodeProcessor } from '../utils/utils'; import { MbNode, parseHTML } from '../../../src/utils/node'; +jest.mock('../../../src/utils/logger', () => ({ + warn: jest.fn(), +})); + /** * Runs the processNode or postProcessNode method of NodeProcessor on the provided * template, verifying it with the expected result. @@ -42,12 +47,15 @@ const processAndVerifyTemplate = (template: string, expectedTemplate: string, po }; test('processNode processes panel attributes and inserts into dom as slots correctly', () => { + const warnSpy = jest.spyOn(logger, 'warn'); processAndVerifyTemplate(testData.PROCESS_PANEL_ATTRIBUTES, testData.PROCESS_PANEL_ATTRIBUTES_EXPECTED); processAndVerifyTemplate(testData.PROCESS_PANEL_HEADER_SLOT_TAKES_PRIORITY, testData.PROCESS_PANEL_HEADER_SLOT_TAKES_PRIORITY_EXPECTED); + expect(warnSpy).toHaveBeenCalledWith(testData.PROCESS_PANEL_HEADER_SLOT_TAKES_PRIORITY_WARN_MSG); processAndVerifyTemplate(testData.PROCESS_PANEL_HEADER_NO_OVERRIDE, testData.PROCESS_PANEL_HEADER_NO_OVERRIDE_EXPECTED); + expect(warnSpy).toHaveBeenCalledWith(testData.PROCESS_PANEL_HEADER_SLOT_TAKES_PRIORITY_WARN_MSG); }); test('processNode processes question attributes and inserts into dom as slots correctly', () => { From 7a2385da3bd0af568fd5ed7bf3f025183728525d Mon Sep 17 00:00:00 2001 From: Isaac Lee <68138671+luminousleek@users.noreply.github.com> Date: Fri, 15 Mar 2024 21:23:13 +0800 Subject: [PATCH 2/7] check logger calls for other components --- packages/core/test/unit/html/NodeProcessor.data.ts | 5 +++++ packages/core/test/unit/html/NodeProcessor.test.ts | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/packages/core/test/unit/html/NodeProcessor.data.ts b/packages/core/test/unit/html/NodeProcessor.data.ts index 0f52654271..f0a357d239 100644 --- a/packages/core/test/unit/html/NodeProcessor.data.ts +++ b/packages/core/test/unit/html/NodeProcessor.data.ts @@ -188,6 +188,9 @@ export const PROCESS_POPOVER_ATTRIBUTES_NO_OVERRIDE_EXPECTED = ` `; +export const PROCESS_POPOVER_ATTRIBUTES_NO_OVERRIDE_HEADER_WARN_MSG = "popover has a header slot, 'header' attribute has no effect."; +export const PROCESS_POPOVER_ATTRIBUTES_NO_OVERRIDE_CONTENT_WARN_MSG = "popover has a content slot, 'content' attribute has no effect."; + /* * Tooltips */ @@ -319,4 +322,6 @@ export const PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY_EXPECTED = ` `; +export const PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY_WARN_MSG = "dropdown has a header slot, 'header' attribute has no effect." + /* eslint-enable max-len */ diff --git a/packages/core/test/unit/html/NodeProcessor.test.ts b/packages/core/test/unit/html/NodeProcessor.test.ts index e407351f9d..6e3069ee78 100644 --- a/packages/core/test/unit/html/NodeProcessor.test.ts +++ b/packages/core/test/unit/html/NodeProcessor.test.ts @@ -80,10 +80,13 @@ test('processNode processes quiz attributes and inserts into dom as slots correc }); test('processNode processes popover attributes and inserts into dom as slots correctly', () => { + const warnSpy = jest.spyOn(logger, 'warn'); processAndVerifyTemplate(testData.PROCESS_POPOVER_ATTRIBUTES, testData.PROCESS_POPOVER_ATTRIBUTES_EXPECTED); processAndVerifyTemplate(testData.PROCESS_POPOVER_ATTRIBUTES_NO_OVERRIDE, testData.PROCESS_POPOVER_ATTRIBUTES_NO_OVERRIDE_EXPECTED); + expect(warnSpy).toHaveBeenCalledWith(testData.PROCESS_POPOVER_ATTRIBUTES_NO_OVERRIDE_HEADER_WARN_MSG); + expect(warnSpy).toHaveBeenCalledWith(testData.PROCESS_POPOVER_ATTRIBUTES_NO_OVERRIDE_CONTENT_WARN_MSG); }); test('processNode processes tooltip attributes and inserts into dom as slots correctly', () => { @@ -126,8 +129,10 @@ test('processNode processes dropdown header attribute and inserts into DOM as he }); test('processNode processes dropdown with header slot taking priority over header attribute', () => { + const warnSpy = jest.spyOn(logger, 'warn'); processAndVerifyTemplate(testData.PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY, testData.PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY_EXPECTED); + expect(warnSpy).toHaveBeenCalledWith(testData.PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY_WARN_MSG); }); test('markdown coverts inline colour syntax correctly', async () => { From 4286f79ad733f37a2205a16e4492ac832096b026 Mon Sep 17 00:00:00 2001 From: Isaac Lee <68138671+luminousleek@users.noreply.github.com> Date: Fri, 15 Mar 2024 22:29:52 +0800 Subject: [PATCH 3/7] add missing semicolon --- packages/core/test/unit/html/NodeProcessor.data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/test/unit/html/NodeProcessor.data.ts b/packages/core/test/unit/html/NodeProcessor.data.ts index f0a357d239..b255e4de57 100644 --- a/packages/core/test/unit/html/NodeProcessor.data.ts +++ b/packages/core/test/unit/html/NodeProcessor.data.ts @@ -322,6 +322,6 @@ export const PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY_EXPECTED = ` `; -export const PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY_WARN_MSG = "dropdown has a header slot, 'header' attribute has no effect." +export const PROCESS_DROPDOWN_HEADER_SLOT_TAKES_PRIORITY_WARN_MSG = "dropdown has a header slot, 'header' attribute has no effect."; /* eslint-enable max-len */ From 479080190eb22b044d8d3eccc5c76d91e462f6e1 Mon Sep 17 00:00:00 2001 From: Isaac Lee <68138671+luminousleek@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:22:42 +0800 Subject: [PATCH 4/7] add teardown to clear mocks --- packages/core/test/unit/html/NodeProcessor.test.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/core/test/unit/html/NodeProcessor.test.ts b/packages/core/test/unit/html/NodeProcessor.test.ts index 6e3069ee78..893f944ab4 100644 --- a/packages/core/test/unit/html/NodeProcessor.test.ts +++ b/packages/core/test/unit/html/NodeProcessor.test.ts @@ -12,6 +12,10 @@ jest.mock('../../../src/utils/logger', () => ({ warn: jest.fn(), })); +afterEach(() => { + jest.clearAllMocks(); +}) + /** * Runs the processNode or postProcessNode method of NodeProcessor on the provided * template, verifying it with the expected result. From f246669395c06107fcd7e723d6b8c19f4dc6be1d Mon Sep 17 00:00:00 2001 From: Isaac Lee <68138671+luminousleek@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:25:05 +0800 Subject: [PATCH 5/7] fix missing semicolon --- packages/core/test/unit/html/NodeProcessor.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/test/unit/html/NodeProcessor.test.ts b/packages/core/test/unit/html/NodeProcessor.test.ts index 893f944ab4..c155e5563d 100644 --- a/packages/core/test/unit/html/NodeProcessor.test.ts +++ b/packages/core/test/unit/html/NodeProcessor.test.ts @@ -14,7 +14,7 @@ jest.mock('../../../src/utils/logger', () => ({ afterEach(() => { jest.clearAllMocks(); -}) +}); /** * Runs the processNode or postProcessNode method of NodeProcessor on the provided From 80f9fd331f807b27ce31d677276c6962fa377c38 Mon Sep 17 00:00:00 2001 From: Isaac Lee <68138671+luminousleek@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:43:54 +0800 Subject: [PATCH 6/7] change afterEach to beforeEach --- packages/core/test/unit/html/NodeProcessor.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/core/test/unit/html/NodeProcessor.test.ts b/packages/core/test/unit/html/NodeProcessor.test.ts index c155e5563d..1cb57ff740 100644 --- a/packages/core/test/unit/html/NodeProcessor.test.ts +++ b/packages/core/test/unit/html/NodeProcessor.test.ts @@ -11,8 +11,7 @@ import { MbNode, parseHTML } from '../../../src/utils/node'; jest.mock('../../../src/utils/logger', () => ({ warn: jest.fn(), })); - -afterEach(() => { +beforeEach(() => { jest.clearAllMocks(); }); From cab2eb5623161aa5365755d084e5d8c23b10abc1 Mon Sep 17 00:00:00 2001 From: Isaac Lee <68138671+luminousleek@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:44:17 +0800 Subject: [PATCH 7/7] add empty line --- packages/core/test/unit/html/NodeProcessor.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/test/unit/html/NodeProcessor.test.ts b/packages/core/test/unit/html/NodeProcessor.test.ts index 1cb57ff740..32f6d270fe 100644 --- a/packages/core/test/unit/html/NodeProcessor.test.ts +++ b/packages/core/test/unit/html/NodeProcessor.test.ts @@ -11,6 +11,7 @@ import { MbNode, parseHTML } from '../../../src/utils/node'; jest.mock('../../../src/utils/logger', () => ({ warn: jest.fn(), })); + beforeEach(() => { jest.clearAllMocks(); });