Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
269
gaia/apps/gallery/test/unit/pick_test.js
Executable file
269
gaia/apps/gallery/test/unit/pick_test.js
Executable file
|
|
@ -0,0 +1,269 @@
|
|||
/*jshint maxlen:false, sub:true*/
|
||||
/*global MockGetDeviceStorage, MockCropResizeRotate*/
|
||||
/*global MocksHelper, LAYOUT_MODE, MediaDB, ImageEditor, Pick*/
|
||||
'use strict';
|
||||
|
||||
require('/shared/test/unit/mocks/mock_lazy_loader.js');
|
||||
require('/shared/test/unit/mocks/mock_mediadb.js');
|
||||
require('/shared/test/unit/mocks/mock_crop_resize_rotate.js');
|
||||
require('/shared/test/unit/mocks/mock_navigator_getdevicestorage.js');
|
||||
require('/shared/js/media/jpeg-exif.js');
|
||||
requireApp('/gallery/test/unit/mock_image_editor.js');
|
||||
requireApp('/gallery/test/unit/mock_spinner.js');
|
||||
requireApp('/gallery/js/pick.js');
|
||||
|
||||
var mocksHelper = new MocksHelper([
|
||||
'LazyLoader',
|
||||
'MediaDB',
|
||||
'ImageEditor',
|
||||
'Spinner'
|
||||
]).init();
|
||||
|
||||
suite('pick', function() {
|
||||
|
||||
mocksHelper.attachTestHelpers();
|
||||
|
||||
var real$;
|
||||
|
||||
var selectors;
|
||||
|
||||
setup(function() {
|
||||
selectors = {};
|
||||
});
|
||||
|
||||
suiteSetup(function() {
|
||||
window.cropResizeRotate = sinon.spy(MockCropResizeRotate);
|
||||
navigator.getDeviceStorage = sinon.spy(MockGetDeviceStorage);
|
||||
|
||||
real$ = window.$;
|
||||
|
||||
window.$ = function(selector) {
|
||||
return (selectors[selector] = selectors[selector] || {
|
||||
addEventListener: sinon.spy()
|
||||
});
|
||||
};
|
||||
|
||||
window.LAYOUT_MODE = {
|
||||
pick: 'pick',
|
||||
crop: 'crop'
|
||||
};
|
||||
|
||||
window.CONFIG_MAX_PICK_PIXEL_SIZE = 800 * 600;
|
||||
|
||||
window.setView = sinon.spy();
|
||||
|
||||
window.photodb = new MediaDB('pictures');
|
||||
});
|
||||
|
||||
suiteTeardown(function() {
|
||||
window.$ = real$;
|
||||
});
|
||||
|
||||
suite('start', function() {
|
||||
var activity = {
|
||||
source: {
|
||||
data: {
|
||||
type: 'image/jpeg'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
test('Should call `setView` with `LAYOUT_MODE.pick`', function() {
|
||||
window.setView.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
assert.ok(window.setView.calledWith(LAYOUT_MODE.pick));
|
||||
});
|
||||
|
||||
test('Should add "action" event listener to #pick-header', function() {
|
||||
Pick.start(activity);
|
||||
assert.ok(selectors['pick-header'].addEventListener.calledWith('action'));
|
||||
});
|
||||
|
||||
test('Should add "action" event listener to #crop-top', function() {
|
||||
Pick.start(activity);
|
||||
assert.ok(selectors['crop-top'].addEventListener.calledWith('action'));
|
||||
});
|
||||
|
||||
test('Should add "click" event listener to #crop-done-button', function() {
|
||||
Pick.start(activity);
|
||||
assert.ok(selectors['crop-done-button'].addEventListener.calledWith('click'));
|
||||
});
|
||||
});
|
||||
|
||||
suite('select', function() {
|
||||
var activity = {
|
||||
source: {
|
||||
data: {
|
||||
type: 'image/jpeg'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var fileinfo = {
|
||||
name: '/foo/bar/baz.jpg',
|
||||
metadata: {}
|
||||
};
|
||||
|
||||
test('Should show file name in the title bar if `nocrop` flag is set', function() {
|
||||
activity.source.data.nocrop = true;
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
assert.equal(selectors['crop-header'].textContent, 'baz');
|
||||
delete activity.source.data.nocrop;
|
||||
});
|
||||
|
||||
test('Should call `setView` with `LAYOUT_MODE.crop`', function() {
|
||||
window.setView.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
assert.ok(window.setView.calledWith(LAYOUT_MODE.crop));
|
||||
});
|
||||
|
||||
test('Should disable #crop-done-button', function() {
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
assert.isTrue(selectors['crop-done-button'].disabled);
|
||||
});
|
||||
|
||||
test('Should get file from MediaDB', function() {
|
||||
window.photodb.getFile.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
assert.ok(window.photodb.getFile.calledWith(fileinfo.name));
|
||||
});
|
||||
|
||||
test('Should crop/resize/rotate file', function() {
|
||||
window.cropResizeRotate.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
assert.ok(window.cropResizeRotate.called);
|
||||
});
|
||||
|
||||
test('Should use external preview file if specified', function() {
|
||||
navigator.getDeviceStorage.reset();
|
||||
|
||||
fileinfo.metadata.preview = {
|
||||
filename: '/foo/bar/baz_preview.jpg'
|
||||
};
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
assert.ok(navigator.getDeviceStorage.calledWith('pictures'));
|
||||
});
|
||||
});
|
||||
|
||||
suite('cancel', function() {
|
||||
var activity = {
|
||||
source: {
|
||||
data: {
|
||||
type: 'image/jpeg'
|
||||
}
|
||||
},
|
||||
postError: sinon.spy()
|
||||
};
|
||||
|
||||
var fileinfo = {
|
||||
name: '/foo/bar/baz.jpg',
|
||||
metadata: {}
|
||||
};
|
||||
|
||||
test('Should post "pick cancelled" error', function() {
|
||||
activity.postError.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
Pick.cancel();
|
||||
assert.ok(activity.postError.calledWith('pick cancelled'));
|
||||
});
|
||||
});
|
||||
|
||||
suite('restart', function() {
|
||||
var activity = {
|
||||
source: {
|
||||
data: {
|
||||
type: 'image/jpeg'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var fileinfo = {
|
||||
name: '/foo/bar/baz.jpg',
|
||||
metadata: {}
|
||||
};
|
||||
|
||||
test('Should destroy `ImageEditor`', function(done) {
|
||||
ImageEditor.prototype.destroy.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
setTimeout(function() {
|
||||
Pick.restart();
|
||||
assert.ok(ImageEditor.prototype.destroy.called);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('Should call `setView` with `LAYOUT_MODE.pick`', function(done) {
|
||||
window.setView.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
setTimeout(function() {
|
||||
Pick.restart();
|
||||
assert.ok(window.setView.calledWith(LAYOUT_MODE.pick));
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
suite('end', function() {
|
||||
var activity = {
|
||||
source: {
|
||||
data: {
|
||||
type: 'image/jpeg'
|
||||
}
|
||||
},
|
||||
postResult: sinon.spy()
|
||||
};
|
||||
|
||||
var fileinfo = {
|
||||
name: '/foo/bar/baz.jpg',
|
||||
metadata: {}
|
||||
};
|
||||
|
||||
test('Should call `getCropRegion` on `ImageEditor`', function() {
|
||||
ImageEditor.prototype.getCropRegion.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
Pick.end();
|
||||
assert.ok(ImageEditor.prototype.getCropRegion.called);
|
||||
});
|
||||
|
||||
test('Should *NOT* call `getCropRegion` on `ImageEditor` if `nocrop` specified',
|
||||
function() {
|
||||
ImageEditor.prototype.getCropRegion.reset();
|
||||
activity.source.data.nocrop = true;
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
Pick.end();
|
||||
assert.ok(ImageEditor.prototype.getCropRegion.notCalled);
|
||||
delete activity.source.data.nocrop;
|
||||
});
|
||||
|
||||
test('Should call `postResult`', function() {
|
||||
activity.postResult.reset();
|
||||
|
||||
Pick.start(activity);
|
||||
Pick.select(fileinfo);
|
||||
Pick.end();
|
||||
assert.ok(activity.postResult.called);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Reference in a new issue