gecko-dev/browser/components/loop/test/shared/mixins_test.js

70 lines
1.9 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/* global loop, sinon */
/* jshint newcap:false */
var expect = chai.expect;
describe("loop.shared.mixins", function() {
"use strict";
var sandbox;
var sharedMixins = loop.shared.mixins;
beforeEach(function() {
sandbox = sinon.sandbox.create();
});
afterEach(function() {
sandbox.restore();
});
describe("loop.panel.DocumentVisibilityMixin", function() {
var comp, TestComp, onDocumentVisibleStub, onDocumentHiddenStub;
beforeEach(function() {
onDocumentVisibleStub = sandbox.stub();
onDocumentHiddenStub = sandbox.stub();
TestComp = React.createClass({
mixins: [loop.shared.mixins.DocumentVisibilityMixin],
onDocumentHidden: onDocumentHiddenStub,
onDocumentVisible: onDocumentVisibleStub,
render: function() {
return React.DOM.div();
}
});
});
function setupFakeVisibilityEventDispatcher(event) {
loop.shared.mixins.setRootObject({
document: {
addEventListener: function(_, fn) {
fn(event);
},
removeEventListener: sandbox.stub()
}
});
}
it("should call onDocumentVisible when document visibility changes to visible",
function() {
setupFakeVisibilityEventDispatcher({target: {hidden: false}});
comp = TestUtils.renderIntoDocument(TestComp());
sinon.assert.calledOnce(onDocumentVisibleStub);
});
it("should call onDocumentVisible when document visibility changes to hidden",
function() {
setupFakeVisibilityEventDispatcher({target: {hidden: true}});
comp = TestUtils.renderIntoDocument(TestComp());
sinon.assert.calledOnce(onDocumentHiddenStub);
});
});
});