Files
Umbraco-CMS/src/Umbraco.Web.UI.Client/libs/element/controller-host.element.test.ts
Niels Lyngsø 5df2f3a4f1 context-provider-controller prevents replacement (#519)
* context-provider-controller prevents replacement

* correct import order

* do not re-provide self providing context

* define and test controller-host-test element
2023-02-15 08:47:00 +00:00

45 lines
1.5 KiB
TypeScript

import { expect, fixture, html } from '@open-wc/testing';
import { customElement } from 'lit/decorators.js';
import { UmbControllerHostTestElement } from './controller-host.element';
import { UmbLitElement } from './lit-element.element';
import { UmbContextProviderController } from '@umbraco-cms/context-api';
import { UmbControllerHostInterface } from '@umbraco-cms/controller';
@customElement('umb-controller-host-test-consumer')
export class ControllerHostTestConsumerElement extends UmbLitElement {
public value: string | null = null;
constructor() {
super();
this.consumeContext<string>('my-test-context-alias', (value) => {
this.value = value;
});
}
}
describe('UmbControllerHostTestElement', () => {
let element: UmbControllerHostTestElement;
let consumer: ControllerHostTestConsumerElement;
const contextValue = 'test-value';
beforeEach(async () => {
element = await fixture(
html` <umb-controller-host-test
.create=${(host: UmbControllerHostInterface) =>
new UmbContextProviderController(host, 'my-test-context-alias', contextValue)}>
<umb-controller-host-test-consumer></umb-controller-host-test-consumer>
</umb-controller-host-test>`
);
consumer = element.getElementsByTagName(
'umb-controller-host-test-consumer'
)[0] as ControllerHostTestConsumerElement;
});
it('element is defined with its own instance', () => {
expect(element).to.be.instanceOf(UmbControllerHostTestElement);
});
it('provides the context', () => {
expect(consumer.value).to.equal(contextValue);
});
});