jest.unmock('../app.js');
jest.unmock('underscore');
const React = require('react');
const ReactDOM = require('react-dom');
const TestUtils = require('react-addons-test-utils');
require('../alert.js').mockImplementation(() =>
);
require('../notifications.js').mockImplementation(() => );
const App = require('../app.js');
const activeStore = require('../../store/activeStore.js');
const dispatcher = require('../../dispatcher/dispatcher.js');
const streamStore = require('../../store/streamStore.js');
describe('app', () => {
beforeEach(() => {
dispatcher.dispatch.mockClear();
});
function render(active) {
streamStore.getStreams.mockReturnValue({
user1: { stream: 1 },
user2: { stream: 2 }
});
let component = TestUtils.renderIntoDocument();
return ReactDOM.findDOMNode(component).children[0];
}
it('should render div.app', () => {
let node = render();
expect(node.tagName).toBe('DIV');
expect(node.className).toBe('app');
});
it('should have rendered two videos', () => {
let node = render();
expect(node.querySelectorAll('video').length).toBe(2);
});
it('should mark .active video', () => {
activeStore.getActive.mockReturnValue('user1');
activeStore.isActive.mockImplementation(test => test === 'user1');
let node = render();
expect(node.querySelectorAll('.video-container').length).toBe(2);
expect(node.querySelectorAll('.video-container.active').length).toBe(1);
});
it('should dispatch mark-active on video click', () => {
let node = render();
TestUtils.Simulate.click(node.querySelectorAll('video')[1]);
expect(dispatcher.dispatch.mock.calls).toEqual([[{
type: 'mark-active',
userId: 'user2'
}]]);
});
});