From 10ac98eafea808909548f2765545e581524870af Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 13 Apr 2020 17:34:46 +0300 Subject: [PATCH] feat: return inserted element from insertContent --- .../src/lib/services/dom-insertion.service.ts | 8 ++++++-- .../src/lib/tests/dom-insertion.service.spec.ts | 15 +++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/services/dom-insertion.service.ts b/npm/ng-packs/packages/core/src/lib/services/dom-insertion.service.ts index d4b30b731d..14882a7436 100644 --- a/npm/ng-packs/packages/core/src/lib/services/dom-insertion.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/dom-insertion.service.ts @@ -6,12 +6,16 @@ import { generateHash } from '../utils'; export class DomInsertionService { readonly inserted = new Set(); - insertContent(contentStrategy: ContentStrategy) { + insertContent( + contentStrategy: ContentStrategy, + ): T { const hash = generateHash(contentStrategy.content); if (this.inserted.has(hash)) return; - contentStrategy.insertElement(); + const element = contentStrategy.insertElement(); this.inserted.add(hash); + + return element; } } diff --git a/npm/ng-packs/packages/core/src/lib/tests/dom-insertion.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/dom-insertion.service.spec.ts index f8e8565496..0947d8bc08 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/dom-insertion.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/dom-insertion.service.spec.ts @@ -9,7 +9,7 @@ describe('DomInsertionService', () => { beforeEach(() => (spectator = createService())); - afterEach(() => styleElements.forEach(element => element.remove())); + afterEach(() => (document.head.innerHTML = '')); describe('#insertContent', () => { it('should be able to insert given content', () => { @@ -19,6 +19,11 @@ describe('DomInsertionService', () => { expect(styleElements[0].textContent).toBe('.test {}'); }); + it('should set a hash for the inserted content', () => { + spectator.service.insertContent(CONTENT_STRATEGY.AppendStyleToHead('.test {}')); + expect(spectator.service.inserted.has(1437348290)).toBe(true); + }); + it('should insert only once', () => { expect(spectator.service.inserted.has(1437348290)).toBe(false); @@ -37,9 +42,11 @@ describe('DomInsertionService', () => { expect(spectator.service.inserted.has(1437348290)).toBe(true); }); - it('should be able to insert given content', () => { - spectator.service.insertContent(CONTENT_STRATEGY.AppendStyleToHead('.test {}')); - expect(spectator.service.inserted.has(1437348290)).toBe(true); + it('should return inserted element', () => { + const element = spectator.service.insertContent( + CONTENT_STRATEGY.AppendStyleToHead('.test {}'), + ); + expect(element.tagName).toBe('STYLE'); }); }); });