UNPKG

context-protocol

Version:

A fully-typed implementation of the context-protocol, with support for subscriptions.

1 lines 1.33 kB
import{expect,test,vi}from"vitest";var testContextMixins=(ContextConsumerMixinFactory,ContextProviderMixinFactory)=>{test("Context Listeners without subscriptions",()=>{let ContextConsumerMixin=ContextConsumerMixinFactory(),ContextProviderMixin=ContextProviderMixinFactory();class ContextTarget extends ContextProviderMixin(ContextConsumerMixin(EventTarget)){}let target=new ContextTarget,context="test",data={awesome:"blossom"},callback=vi.fn();target.setContextValue(context,data),target.addContextListener(context,callback),expect(callback).toHaveBeenCalledTimes(1),target.setContextValue(context,data),expect(callback).toHaveBeenCalledTimes(1)}),test("Context Listeners with subscriptions",()=>{let RequestContextMixin=ContextConsumerMixinFactory(),SetContextValueMixin=ContextProviderMixinFactory();class ContextTarget extends SetContextValueMixin(RequestContextMixin(EventTarget)){}let target=new ContextTarget,context="test",data={awesome:"blossom"},callback=vi.fn();target.setContextValue(context,data),target.addContextListener(context,callback,!0),expect(callback).toHaveBeenCalledTimes(1),target.setContextValue(context,data),expect(callback).toHaveBeenCalledTimes(2),target.removeContextListener(context,callback),target.setContextValue(context,data),expect(callback).toHaveBeenCalledTimes(2)})};export{testContextMixins}