From 7cf6b2c8607ec8e35ba2119da64ce3c7eb6aae13 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Wed, 29 Mar 2023 00:12:39 +0300 Subject: [PATCH 1/5] Test created for safe-html pipe --- .../core/src/lib/tests/safe-html.pipe.spec.ts | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts diff --git a/npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts new file mode 100644 index 0000000000..a0c4fa6e30 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts @@ -0,0 +1,37 @@ +import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest'; +import { SafeHtmlPipe } from '../pipes'; + +describe('SafeHtmlPipe', () => { + let pipe: SafeHtmlPipe; + let spectator: SpectatorService; + const createService = createServiceFactory(SafeHtmlPipe); + + beforeEach(() => { + spectator = createService(); + pipe = spectator.service; + }); + + it('should create an instance', () => { + expect(pipe).toBeTruthy(); + }); + + it('should return empty string for non-string inputs', () => { + const inputs = [42, false, {}, []]; + for (const input of inputs) { + const result = pipe.transform(input as any); + expect(result).toBe(''); + } + }); + + it('should be equals with input after sanitized', () => { + const input = '

Hello world!

'; + const result = pipe.transform(input); + expect(result).toEqual(input); + }); + + it('should sanitize unsafe HTML content', () => { + const input = `

Click here!

`; + const result = pipe.transform(input); + expect(result).toBe(`

Click here!

`); + }); +}); From 8512e6b41feb7c3c708bae5acf57970d0c9d7b98 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Wed, 29 Mar 2023 01:16:29 +0300 Subject: [PATCH 2/5] Html value render example added to Page-Alerts documantation --- docs/en/UI/Angular/Page-Alerts.md | 16 ++++++++++++++++ .../images/page-alert-with-html-example.png | Bin 0 -> 10225 bytes 2 files changed, 16 insertions(+) create mode 100644 docs/en/UI/Angular/images/page-alert-with-html-example.png diff --git a/docs/en/UI/Angular/Page-Alerts.md b/docs/en/UI/Angular/Page-Alerts.md index a27cee4abf..3d71723bf1 100644 --- a/docs/en/UI/Angular/Page-Alerts.md +++ b/docs/en/UI/Angular/Page-Alerts.md @@ -61,4 +61,20 @@ this.service.show({ ![angular-page-alert-with-params-example](./images/page-alert-with-params-example.png) +## Render HTML content +We can pass html content to `title` and `message` parameters + +* It allows to both case static message and localization value +* [abpSafeHtml](https://github.com/abpframework/abp/blob/37b59a7f05202264505d002397dbb27d275740e1/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts#L6) pipe will sanitize html values + +```typescript +this.service.show({ + type: 'success', + title: `New blog published`, + message: 'AbpApp::HtmlMessageWithParams{0}', + messageLocalizationParams: ['admin'], +}); +``` + +![angular-page-alert-with-html-example](./images/page-alert-with-html-example.png) diff --git a/docs/en/UI/Angular/images/page-alert-with-html-example.png b/docs/en/UI/Angular/images/page-alert-with-html-example.png new file mode 100644 index 0000000000000000000000000000000000000000..a07133faf29f84e914243a7093be1f6230f14637 GIT binary patch literal 10225 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 literal 0 HcmV?d00001 From b091ed34293efdb1f611fdfcbce4d7e1365d706a Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Wed, 29 Mar 2023 14:54:57 +0300 Subject: [PATCH 3/5] safe-html test updated --- .../packages/core/src/lib/tests/safe-html.pipe.spec.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts index a0c4fa6e30..840cf614db 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/safe-html.pipe.spec.ts @@ -15,12 +15,9 @@ describe('SafeHtmlPipe', () => { expect(pipe).toBeTruthy(); }); - it('should return empty string for non-string inputs', () => { - const inputs = [42, false, {}, []]; - for (const input of inputs) { - const result = pipe.transform(input as any); - expect(result).toBe(''); - } + test.each([42, false, {}, []])('should return empty string for "%p" input', input => { + const result = pipe.transform(input as any); + expect(result).toBe(''); }); it('should be equals with input after sanitized', () => { From ca6dd42a34da2e1a1a856b4ecc63f4f0eedc0052 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Thu, 30 Mar 2023 13:12:07 +0300 Subject: [PATCH 4/5] page-alerts doc. updated --- docs/en/UI/Angular/Page-Alerts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Angular/Page-Alerts.md b/docs/en/UI/Angular/Page-Alerts.md index 3d71723bf1..7e75077cc6 100644 --- a/docs/en/UI/Angular/Page-Alerts.md +++ b/docs/en/UI/Angular/Page-Alerts.md @@ -65,7 +65,7 @@ this.service.show({ We can pass html content to `title` and `message` parameters -* It allows to both case static message and localization value +* It allows static message or localization key * [abpSafeHtml](https://github.com/abpframework/abp/blob/37b59a7f05202264505d002397dbb27d275740e1/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts#L6) pipe will sanitize html values ```typescript From 71f2eb3f61868309d2c9b775f60de2c5a921416d Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Thu, 30 Mar 2023 13:13:15 +0300 Subject: [PATCH 5/5] Page Alerts Doc Tiny Fix --- docs/en/UI/Angular/Page-Alerts.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/en/UI/Angular/Page-Alerts.md b/docs/en/UI/Angular/Page-Alerts.md index 3d71723bf1..e486318dc2 100644 --- a/docs/en/UI/Angular/Page-Alerts.md +++ b/docs/en/UI/Angular/Page-Alerts.md @@ -63,10 +63,10 @@ this.service.show({ ## Render HTML content -We can pass html content to `title` and `message` parameters +We can pass html content to the `title` and `message` parameters -* It allows to both case static message and localization value -* [abpSafeHtml](https://github.com/abpframework/abp/blob/37b59a7f05202264505d002397dbb27d275740e1/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts#L6) pipe will sanitize html values +* It allows for both case static message and the localization value +* [abpSafeHtml](https://github.com/abpframework/abp/blob/37b59a7f05202264505d002397dbb27d275740e1/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts#L6) pipe will sanitize the html values ```typescript this.service.show({