From 21132e00f72111dbaaedddf659a84014359a4232 Mon Sep 17 00:00:00 2001 From: Manuel Martin Prieto Date: Mon, 24 Feb 2020 17:16:46 +0100 Subject: [PATCH] feat(scoped-elements): add getScopedTagName function --- packages/scoped-elements/index.js | 2 +- ...teScopedElement.js => getScopedTagName.js} | 8 +++---- .../test/createScopedElement.test.js | 23 ------------------- .../test/getScopedTagName.test.js | 22 ++++++++++++++++++ 4 files changed, 27 insertions(+), 28 deletions(-) rename packages/scoped-elements/src/{createScopedElement.js => getScopedTagName.js} (69%) delete mode 100644 packages/scoped-elements/test/createScopedElement.test.js create mode 100644 packages/scoped-elements/test/getScopedTagName.test.js diff --git a/packages/scoped-elements/index.js b/packages/scoped-elements/index.js index 24dcfbc7..8d907a1d 100644 --- a/packages/scoped-elements/index.js +++ b/packages/scoped-elements/index.js @@ -1,2 +1,2 @@ export { ScopedElementsMixin } from './src/ScopedElementsMixin.js'; -export { createScopedElement } from './src/createScopedElement.js'; +export { getScopedTagName } from './src/getScopedTagName.js'; diff --git a/packages/scoped-elements/src/createScopedElement.js b/packages/scoped-elements/src/getScopedTagName.js similarity index 69% rename from packages/scoped-elements/src/createScopedElement.js rename to packages/scoped-elements/src/getScopedTagName.js index f791ce5f..59080cf5 100644 --- a/packages/scoped-elements/src/createScopedElement.js +++ b/packages/scoped-elements/src/getScopedTagName.js @@ -1,14 +1,14 @@ import { registerElement } from './registerElement.js'; /** - * Creates a scoped element + * Gets the scoped tag name * * @param {string} tagName * @param {Object.} scopedElements * @throws Will throw an error if the tag name is unknown - * @returns {HTMLElement} + * @returns {string} */ -export function createScopedElement(tagName, scopedElements = {}) { +export function getScopedTagName(tagName, scopedElements = {}) { const klass = scopedElements[tagName]; if (!klass) { @@ -17,5 +17,5 @@ export function createScopedElement(tagName, scopedElements = {}) { ); } - return document.createElement(registerElement(tagName, klass)); + return registerElement(tagName, klass); } diff --git a/packages/scoped-elements/test/createScopedElement.test.js b/packages/scoped-elements/test/createScopedElement.test.js deleted file mode 100644 index c041f0c1..00000000 --- a/packages/scoped-elements/test/createScopedElement.test.js +++ /dev/null @@ -1,23 +0,0 @@ -import { expect } from '@open-wc/testing'; -import { createScopedElement } from '../src/createScopedElement.js'; - -describe('createScopedElement', () => { - it('should create the scoped HTML element specified by the tag name', () => { - class FeatureA extends HTMLElement {} - - const scopedElements = { - 'feature-a': FeatureA, - }; - - const el = createScopedElement('feature-a', scopedElements); - - expect(el).to.be.an.instanceOf(FeatureA); - expect(el.tagName.toLowerCase()).to.match(new RegExp(`feature-a-\\d{1,5}`)); - }); - - it("should throw an error if tagName isn't recognized", () => { - expect(() => createScopedElement('feature-a', {})).to.throw( - "The tag 'feature-a' is not a registered scoped element. Make sure you add it via static get scopedElements().", - ); - }); -}); diff --git a/packages/scoped-elements/test/getScopedTagName.test.js b/packages/scoped-elements/test/getScopedTagName.test.js new file mode 100644 index 00000000..eca84789 --- /dev/null +++ b/packages/scoped-elements/test/getScopedTagName.test.js @@ -0,0 +1,22 @@ +import { expect } from '@open-wc/testing'; +import { getScopedTagName } from '../src/getScopedTagName.js'; + +describe('getScopedTagName', () => { + it('should return the scoped tag name used to define the HTML Element specified by the user tag name', () => { + class FeatureA extends HTMLElement {} + + const scopedElements = { + 'feature-a': FeatureA, + }; + + const scopedTagName = getScopedTagName('feature-a', scopedElements); + + expect(scopedTagName).to.match(new RegExp(`feature-a-\\d{1,5}`)); + }); + + it("should throw an error if tagName isn't recognized", () => { + expect(() => getScopedTagName('feature-a', {})).to.throw( + "The tag 'feature-a' is not a registered scoped element. Make sure you add it via static get scopedElements().", + ); + }); +});