From bca1d6fc140cff0da21b96b611c566cf27f528b8 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Thu, 25 Jul 2024 09:32:19 +0100 Subject: [PATCH] Added tests for UFM parsing --- .../ufm-render/ufm-render.element.ts | 2 +- .../packages/ufm/plugins/marked-ufm.test.ts | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/ufm/plugins/marked-ufm.test.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts b/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts index 65f33c51b4..56173caf27 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts @@ -28,7 +28,7 @@ UmbDomPurify.addHook('afterSanitizeAttributes', function (node) { } }); -const UmbMarked = new Marked({ +export const UmbMarked = new Marked({ async: true, gfm: true, breaks: true, diff --git a/src/Umbraco.Web.UI.Client/src/packages/ufm/plugins/marked-ufm.test.ts b/src/Umbraco.Web.UI.Client/src/packages/ufm/plugins/marked-ufm.test.ts new file mode 100644 index 0000000000..ef01944675 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/ufm/plugins/marked-ufm.test.ts @@ -0,0 +1,32 @@ +import { expect } from '@open-wc/testing'; +import { ufm } from './marked-ufm.plugin.js'; +import { UmbMarked } from '../index.js'; +import { UmbUfmLabelValueComponent } from '../ufm-components/label-value.component.js'; +import { UmbUfmLocalizeComponent } from '../ufm-components/localize.component.js'; + +describe('UmbMarkedUfm', () => { + describe('UFM parsing', () => { + const runs = [ + { ufm: '{=prop1}', expected: '' }, + { ufm: '{= prop1}', expected: '' }, + { ufm: '{= prop1 }', expected: '' }, + { ufm: '{{=prop1}}', expected: '{}' }, + { ufm: '{#general_add}', expected: '' }, + ]; + + // Manually configuring the UFM components for testing. + UmbMarked.use( + ufm([ + { alias: 'Umb.Markdown.LabelValue', marker: '=', render: new UmbUfmLabelValueComponent().render }, + { alias: 'Umb.Markdown.Localize', marker: '#', render: new UmbUfmLocalizeComponent().render }, + ]), + ); + + runs.forEach((run) => { + it(`Parsing "${run.ufm}"`, async () => { + const markup = await UmbMarked.parseInline(run.ufm); + expect(markup).to.equal(run.expected); + }); + }); + }); +});