diff --git a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts index edb6435a95..986a878cee 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts @@ -112,7 +112,7 @@ describe('UmbContextConsumer with discriminator test', () => { it('discriminator determines the instance type', async () => { const localConsumer = new UmbContextConsumer( document.body, - new UmbContextToken(testContextAlias, discriminator), + new UmbContextToken(testContextAlias, undefined, discriminator), (instance: A) => { console.log(instance); }, @@ -136,7 +136,7 @@ describe('UmbContextConsumer with discriminator test', () => { const localConsumer = new UmbContextConsumer( element, - new UmbContextToken(testContextAlias, discriminator), + new UmbContextToken(testContextAlias, undefined, discriminator), (_instance) => { expect(_instance.prop).to.eq('value from provider'); done(); @@ -156,7 +156,7 @@ describe('UmbContextConsumer with discriminator test', () => { const localConsumer = new UmbContextConsumer( element, - new UmbContextToken(testContextAlias, badDiscriminator), + new UmbContextToken(testContextAlias, undefined, badDiscriminator), (_instance) => { expect(_instance.prop).to.eq('this must not happen!'); }, diff --git a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-request.event.test.ts b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-request.event.test.ts index f6557a2a75..ee1cb0162e 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-request.event.test.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-request.event.test.ts @@ -9,13 +9,18 @@ describe('UmbContextRequestEvent', () => { const event: UmbContextRequestEvent = new UmbContextRequestEventImplementation( 'my-test-context-alias', - contextRequestCallback + 'my-test-api-alias', + contextRequestCallback, ); - it('has context', () => { + it('has context alias', () => { expect(event.contextAlias).to.eq('my-test-context-alias'); }); + it('has api alias', () => { + expect(event.apiAlias).to.eq('my-test-api-alias'); + }); + it('has a callback', () => { expect(event.callback).to.eq(contextRequestCallback); }); diff --git a/src/Umbraco.Web.UI.Client/src/libs/context-api/provide/context-provider.test.ts b/src/Umbraco.Web.UI.Client/src/libs/context-api/provide/context-provider.test.ts index e8ff8bb119..5090598136 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/context-api/provide/context-provider.test.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/context-api/provide/context-provider.test.ts @@ -42,11 +42,12 @@ describe('UmbContextProvider', () => { it('handles context request events', (done) => { const event = new UmbContextRequestEventImplementation( 'my-test-context', + 'default', (_instance: UmbTestContextProviderClass) => { expect(_instance.prop).to.eq('value from provider'); done(); return true; - } + }, ); document.body.dispatchEvent(event); @@ -63,7 +64,7 @@ describe('UmbContextProvider', () => { expect(_instance?.prop).to.eq('value from provider'); done(); localConsumer.hostDisconnected(); - } + }, ); localConsumer.hostConnected(); }); diff --git a/src/Umbraco.Web.UI.Client/src/libs/context-api/token/context-token.test.ts b/src/Umbraco.Web.UI.Client/src/libs/context-api/token/context-token.test.ts index 678534bec8..882442a1d9 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/context-api/token/context-token.test.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/context-api/token/context-token.test.ts @@ -4,57 +4,164 @@ import { UmbContextProvider } from '../provide/context-provider.js'; import { UmbContextToken } from './context-token.js'; const testContextAlias = 'my-test-context'; +const testApiAlias = 'my-test-api'; class UmbTestContextTokenClass { prop = 'value from provider'; } describe('UmbContextToken', () => { - const contextToken = new UmbContextToken(testContextAlias); - const typedProvider = new UmbContextProvider(document.body, contextToken, new UmbTestContextTokenClass()); - typedProvider.hostConnected(); + describe('Simple context token', () => { + const contextToken = new UmbContextToken(testContextAlias); + const typedProvider = new UmbContextProvider(document.body, contextToken, new UmbTestContextTokenClass()); + typedProvider.hostConnected(); - after(() => { - typedProvider.hostDisconnected(); + after(() => { + typedProvider.hostDisconnected(); + }); + + it('toString returns the alias', () => { + expect(contextToken.toString()).to.eq(testContextAlias + '#' + 'default'); + }); + + it('can be used to consume a context API', (done) => { + const element = document.createElement('div'); + document.body.appendChild(element); + + const localConsumer = new UmbContextConsumer( + element, + contextToken, + (_instance: UmbTestContextTokenClass | undefined) => { + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); + expect(_instance?.prop).to.eq('value from provider'); + done(); + localConsumer.destroy(); // We do not want to react to when the provider is disconnected. + }, + ); + + localConsumer.hostConnected(); + }); + + it('gives the same result when using the string alias', (done) => { + const element = document.createElement('div'); + document.body.appendChild(element); + + const localConsumer = new UmbContextConsumer( + element, + testContextAlias, + (_instance: UmbTestContextTokenClass | undefined) => { + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); + expect(_instance?.prop).to.eq('value from provider'); + done(); + localConsumer.destroy(); // We do not want to react to when the provider is disconnected. + }, + ); + + localConsumer.hostConnected(); + }); }); - it('toString returns the alias', () => { - expect(contextToken.toString()).to.eq(testContextAlias); + describe('Context Token with alternative api alias', () => { + const contextToken = new UmbContextToken(testContextAlias, testApiAlias); + const typedProvider = new UmbContextProvider(document.body, contextToken, new UmbTestContextTokenClass()); + typedProvider.hostConnected(); + + after(() => { + typedProvider.hostDisconnected(); + }); + + it('toString returns the alias', () => { + expect(contextToken.toString()).to.eq(testContextAlias + '#' + testApiAlias); + }); + + it('can be used to consume a context API', (done) => { + const element = document.createElement('div'); + document.body.appendChild(element); + + const localConsumer = new UmbContextConsumer( + element, + contextToken, + (_instance: UmbTestContextTokenClass | undefined) => { + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); + expect(_instance?.prop).to.eq('value from provider'); + done(); + localConsumer.destroy(); // We do not want to react to when the provider is disconnected. + }, + ); + + localConsumer.hostConnected(); + }); + + it('gives the same result when using the string alias', (done) => { + const element = document.createElement('div'); + document.body.appendChild(element); + + const localConsumer = new UmbContextConsumer( + element, + testContextAlias, + (_instance: UmbTestContextTokenClass | undefined) => { + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); + expect(_instance?.prop).to.eq('value from provider'); + done(); + localConsumer.destroy(); // We do not want to react to when the provider is disconnected. + }, + ); + + localConsumer.hostConnected(); + }); }); - it('can be used to consume a context API', (done) => { - const element = document.createElement('div'); - document.body.appendChild(element); - - const localConsumer = new UmbContextConsumer( - element, - contextToken, - (_instance: UmbTestContextTokenClass | undefined) => { - expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); - expect(_instance?.prop).to.eq('value from provider'); - done(); - localConsumer.destroy(); // We do not want to react to when the provider is disconnected. - } - ); - - localConsumer.hostConnected(); - }); - - it('gives the same result when using the string alias', (done) => { - const element = document.createElement('div'); - document.body.appendChild(element); - - const localConsumer = new UmbContextConsumer( - element, + describe('Context Token with discriminator method', () => { + const contextToken = new UmbContextToken( testContextAlias, - (_instance: UmbTestContextTokenClass | undefined) => { - expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); - expect(_instance?.prop).to.eq('value from provider'); - done(); - localConsumer.destroy(); // We do not want to react to when the provider is disconnected. - } + undefined, + (instance): instance is UmbTestContextTokenClass => instance.prop === 'value from provider', ); + const typedProvider = new UmbContextProvider(document.body, contextToken, new UmbTestContextTokenClass()); + typedProvider.hostConnected(); - localConsumer.hostConnected(); + after(() => { + typedProvider.hostDisconnected(); + }); + + it('toString returns the alias', () => { + expect(contextToken.toString()).to.eq(testContextAlias + '#' + 'default'); + }); + + it('can be used to consume a context API', (done) => { + const element = document.createElement('div'); + document.body.appendChild(element); + + const localConsumer = new UmbContextConsumer( + element, + contextToken, + (_instance: UmbTestContextTokenClass | undefined) => { + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); + expect(_instance?.prop).to.eq('value from provider'); + done(); + localConsumer.destroy(); // We do not want to react to when the provider is disconnected. + }, + ); + + localConsumer.hostConnected(); + }); + + it('gives the same result when using the string alias', (done) => { + const element = document.createElement('div'); + document.body.appendChild(element); + + const localConsumer = new UmbContextConsumer( + element, + testContextAlias, + (_instance: UmbTestContextTokenClass | undefined) => { + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); + expect(_instance?.prop).to.eq('value from provider'); + done(); + localConsumer.destroy(); // We do not want to react to when the provider is disconnected. + }, + ); + + localConsumer.hostConnected(); + }); }); });