Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
130 lines
3.4 KiB
JavaScript
Executable file
130 lines
3.4 KiB
JavaScript
Executable file
/*jshint maxlen:false, sub:true*/
|
|
/*global NFC, MockShrinkingUI */
|
|
'use strict';
|
|
|
|
requireApp('/gallery/js/nfc.js');
|
|
requireApp('system/shared/test/unit/mocks/mock_shrinking_ui.js');
|
|
|
|
suite('nfc', function() {
|
|
|
|
var realMozNfc;
|
|
var target;
|
|
setup(function() {
|
|
realMozNfc = navigator.mozNfc;
|
|
navigator.mozNfc = {};
|
|
window.ShrinkingUI = MockShrinkingUI;
|
|
target = Object.create(NFC);
|
|
});
|
|
|
|
teardown(function() {
|
|
navigator.mozNfc = realMozNfc;
|
|
window.ShrinkingUI = null;
|
|
target = null;
|
|
});
|
|
|
|
suite('share', function() {
|
|
test('Should attach `onpeerready` event handler', function() {
|
|
target.share();
|
|
assert.equal(typeof navigator.mozNfc.onpeerready, 'function');
|
|
});
|
|
|
|
test('Should pass Blob to `peer.sendFile()`', function() {
|
|
var event = {
|
|
peer: {
|
|
sendFile: sinon.spy()
|
|
}
|
|
};
|
|
|
|
var blob = new Blob();
|
|
|
|
target.share(blob);
|
|
navigator.mozNfc.onpeerready(event);
|
|
|
|
assert.ok(event.peer.sendFile.calledWith(blob));
|
|
});
|
|
|
|
test('Should resolve Promise to pass Blob to `peer.sendFile()`', function(done) {
|
|
var event = {
|
|
peer: {
|
|
sendFile: sinon.spy()
|
|
}
|
|
};
|
|
|
|
target.share(function() {
|
|
return {
|
|
then: function(callback) {
|
|
var blob = new Blob();
|
|
callback(blob);
|
|
|
|
assert.ok(event.peer.sendFile.calledWith(blob));
|
|
done();
|
|
}
|
|
};
|
|
});
|
|
navigator.mozNfc.onpeerready(event);
|
|
});
|
|
});
|
|
|
|
suite('share, and shrinkingUI is handled by gallery itself', function() {
|
|
var targetWithShrink;
|
|
var testFile;
|
|
setup(function() {
|
|
targetWithShrink = target;
|
|
testFile = 'testFile';
|
|
targetWithShrink.share(testFile, {
|
|
foregroundElement: null,
|
|
backgroundElement: null
|
|
});
|
|
});
|
|
|
|
test('Should attach `onpeerfound, onpeerlost` event handler', function() {
|
|
assert.equal(typeof navigator.mozNfc.onpeerfound, 'function');
|
|
assert.equal(typeof navigator.mozNfc.onpeerlost, 'function');
|
|
});
|
|
|
|
test('should send file when receiving shrinking-sent', function() {
|
|
var event = {
|
|
peer: {
|
|
sendFile: sinon.spy()
|
|
},
|
|
preventDefault: function() {}
|
|
};
|
|
navigator.mozNfc.onpeerfound(event);
|
|
window.dispatchEvent(new CustomEvent('shrinking-sent'));
|
|
assert.ok(event.peer.sendFile.calledWith(testFile));
|
|
});
|
|
|
|
test('should start shrinking when onpeerfound', function() {
|
|
this.sinon.stub(targetWithShrink.shrinkingUI, 'start');
|
|
var event = {
|
|
peer: {},
|
|
preventDefault: function() {}
|
|
};
|
|
navigator.mozNfc.onpeerfound(event);
|
|
assert.isTrue(targetWithShrink.shrinkingUI.start.calledOnce);
|
|
});
|
|
|
|
test('should stop shrinking when onpeerlost', function() {
|
|
this.sinon.stub(targetWithShrink.shrinkingUI, 'stop');
|
|
var event = {
|
|
peer: {}
|
|
};
|
|
navigator.mozNfc.onpeerlost(event);
|
|
assert.isTrue(targetWithShrink.shrinkingUI.stop.calledOnce);
|
|
});
|
|
|
|
test('should stop shrinking when unshare', function() {
|
|
this.sinon.stub(targetWithShrink.shrinkingUI, 'stop');
|
|
targetWithShrink.unshare();
|
|
assert.equal(targetWithShrink.shrinkingUI, null);
|
|
});
|
|
});
|
|
|
|
suite('unshare', function() {
|
|
test('Should remove `onpeerready` event handler', function() {
|
|
target.unshare();
|
|
assert.equal(navigator.mozNfc.onpeerready, null);
|
|
});
|
|
});
|
|
|
|
});
|