application/__tests__/components/layout/root-test.js
jest.unmock('./../../../util/events');
jest.unmock('./../../../components/layout/root');
import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils';
import Immutable from 'immutable';
import sinon from 'sinon';
import AltTestingUtils from 'alt-utils/lib/AltTestingUtils';
import uuid from 'uuid';
import RootExtension from './../../../components/layout/root';
import Events from './../../../util/events';
describe('RootExtension', () => {
    beforeEach(() => {
        // it's like the clock is shadow installed or something...
        jasmine.clock().uninstall();
    });
    it('loads child on add', (done) => {
        const id = uuid.v4();
        const span = <span>Hi there</span>;
        const root = TestUtils.renderIntoDocument(
            <RootExtension />
        );
        const spy = sinon.spy(root, 'onAdd');
        root.componentWillMount();
        Events.emit('addRootComponent', id, span);
        setTimeout(() => {
            expect(spy.called).toEqual(true);
            root.onAdd.restore();
            done();
        }, 2);
    });
    it('removes child on remove', (done) => {
        const root = TestUtils.renderIntoDocument(
            <RootExtension />
        );
        const spy = sinon.spy(root, 'onAdd');
        const spyremove = sinon.spy(root, 'onRemove');
        root.componentWillMount();
        const id = uuid.v4();
        const span = <span>Hi there</span>;
        Events.emit('addRootComponent', id, span);
        const id2 = uuid.v4();
        const span2 = <span>Hi there</span>;
        Events.emit('addRootComponent', id2, span2);
        setTimeout(() => {
            expect(root.state.components.length).toEqual(2);
            Events.emit('removeRootComponent', id2);
            expect(spy.calledTwice).toEqual(true);
            expect(spyremove.calledOnce).toEqual(true);
            root.onAdd.restore();
            root.onRemove.restore();
            expect(root.state.components.length).toEqual(1);
            done();
        }, 2);
    });
});