it('should be able to get the initial state', () => { const broadcast = createBroadcast(); const initialState = {}; broadcast.setState(initialState); assert.strictEqual(themeListener.initial({ [CHANNEL]: broadcast }), initialState); });
it('should be able to subscribe to the event stream', done => { const broadcast = createBroadcast(); const initialState = {}; const secondState = {}; broadcast.setState(initialState); themeListener.subscribe( { [CHANNEL]: broadcast, }, state => { assert.strictEqual(state, secondState); done(); }, ); broadcast.setState(secondState); });
test(`ThemeProvider unsubscribes on unmounting`, t => { const ThemeProvider = createThemeProvider(); const theme = { themed: true }; const broadcast = createBroadcast(theme); const wrapper = mount( <ThemeProvider theme={theme} />, mountOptions(broadcast), ); const { subscriptionId } = wrapper.instance(); t.true(wrapper.instance().subscriptionId !== undefined, 'brcast subscriptionId is undefined'); t.true(typeof wrapper.instance().subscriptionId === 'number', 'brcast subscriptionId expected to be number'); const subscription = getInterceptor(subscriptionId); const brcastInst = wrapper.context(channel); brcastInst.unsubscribe = (id) => subscription(id); wrapper.setContext({[channel]: brcastInst}); wrapper.unmount(); t.true(subscription() === subscriptionId, `ThemeProvider should unsubscribe on unmounting`); });
before(() => { shallow = createShallow(); mount = createMount(); broadcast = createBroadcast(); context = { [CHANNEL]: broadcast }; });