diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts new file mode 100644 index 0000000000..2c76f590ee --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts @@ -0,0 +1,96 @@ +import { expect, fixture, html } from '@open-wc/testing'; +import { ManifestDashboard, umbExtensionsRegistry } from '@umbraco-cms/extensions-registry'; +import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { customElement } from 'lit/decorators.js'; +import { UmbExtensionSlotElement } from './extension-slot.element'; + +@customElement('test-extension-slot-manifest-element') +class MyExtensionSlotManifestElement extends HTMLElement { + +} + +describe('UmbExtensionSlotElement', () => { + + + let element: UmbExtensionSlotElement; + + describe('general', () => { + + beforeEach(async () => { + element = await fixture( + html`` + ); + }); + + it('is defined with its own instance', () => { + expect(element).to.be.instanceOf(UmbExtensionSlotElement); + }); + + it('passes the a11y audit', async () => { + await expect(element).shadowDom.to.be.accessible(defaultA11yConfig); + }); + + describe('properties', () => { + it('has a type property', () => { + expect(element).to.have.property('type'); + }); + + it('has a filter property', () => { + expect(element).to.have.property('filter'); + }); + + it('has a defaultElement property', () => { + expect(element).to.have.property('defaultElement'); + }); + }); + }); + + + + describe('rendering methods', () => { + + beforeEach(async () => { + + umbExtensionsRegistry.register({ + type: 'dashboard', + alias: 'unit-test-ext-slot-element-manifest', + name: 'unit-test-extension', + elementName: 'test-extension-slot-manifest-element', + meta: { + sections: ['test'], + pathname: 'test/test' + } + }) + + }); + + afterEach(async () => { + umbExtensionsRegistry.unregister('unit-test-ext-slot-element-manifest'); + }); + + it('renders a manifest element', async () => { + + element = await fixture( + html` x.alias === 'unit-test-ext-slot-element-manifest'}>` + ); + + expect(element.firstChild).to.be.instanceOf(MyExtensionSlotManifestElement); + }); + }); + + +/* + public myExtensionWrapperMethod = (component: HTMLElement) => { + return html`${component}`; + }; + + render() { + return html` + + + `; + } + */ + + +}); diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index c4bef5c1ca..e39cc9f962 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -11,6 +11,7 @@ export default { inject: { importMap: { imports: { + 'src/': './src/', '@umbraco-cms/models': './src/core/models/index.ts', '@umbraco-cms/backend-api': './src/core/backend-api/index.ts', '@umbraco-cms/context-api': './src/core/context-api/index.ts', @@ -20,7 +21,6 @@ export default { '@umbraco-cms/utils': './src/core/utils/index.ts', '@umbraco-cms/test-utils': './src/core/test-utils/index.ts', '@umbraco-cms/resources': './src/core/resources/index.ts', - '@umbraco-cms/services': './src/core/services', '@umbraco-cms/extensions-registry': './src/core/extensions-registry/index.ts', }, },