mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-11 19:00:00 +01:00
Setup UI testing (#720)
* default sequencer ui test * default step ui test suite * intermediate step ui test * preview ui test suite * url methods test suite * add set url params method test suite * argument call tests * test directory refactor * travis fix
This commit is contained in:
committed by
Jeffrey Warren
parent
8880a580dd
commit
0cd3156c06
3410
package-lock.json
generated
3410
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,8 @@
|
|||||||
"main": "src/ImageSequencer.js",
|
"main": "src/ImageSequencer.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"debug": "TEST=true node ./index.js -i ./examples/images/monarch.png -s invert",
|
"debug": "TEST=true node ./index.js -i ./examples/images/monarch.png -s invert",
|
||||||
"test": "TEST=true tape test/ui/*.js test/**/*.js test/*.js test/ui/user-interface.js | tap-spec; browserify test/modules/image-sequencer.js test/modules/chain.js test/modules/meta-modules.js test/modules/replace.js test/modules/import-export.js test/modules/run.js test/modules/dynamic-imports.js test/util/parse-input.js | tape-run --render=\"tap-spec\"",
|
"test": "TEST=true tape test/core/*.js test/core/ui/user-interface.js | tap-spec; browserify test/core/modules/image-sequencer.js test/core/modules/chain.js test/core/modules/meta-modules.js test/core/modules/replace.js test/core/modules/import-export.js test/core/modules/run.js test/core/modules/dynamic-imports.js test/core/util/parse-input.js | tape-run --render=\"tap-spec\"",
|
||||||
|
"test-ui": "jasmine",
|
||||||
"setup": "npm i && npm i -g grunt grunt-cli",
|
"setup": "npm i && npm i -g grunt grunt-cli",
|
||||||
"start": "grunt serve"
|
"start": "grunt serve"
|
||||||
},
|
},
|
||||||
@@ -56,7 +57,10 @@
|
|||||||
"grunt-contrib-watch": "^1.1.0",
|
"grunt-contrib-watch": "^1.1.0",
|
||||||
"image-filter-core": "~2.0.2",
|
"image-filter-core": "~2.0.2",
|
||||||
"image-filter-threshold": "~2.0.1",
|
"image-filter-threshold": "~2.0.1",
|
||||||
"looks-same": "^6.0.0",
|
"jasmine-core": "^3.3.0",
|
||||||
|
"jasmine-jquery": "^2.1.1",
|
||||||
|
"jasmine-spec-reporter": "^4.2.1",
|
||||||
|
"looks-same": "^5.0.1",
|
||||||
"matchdep": "^2.0.0",
|
"matchdep": "^2.0.0",
|
||||||
"tap-spec": "^5.0.0",
|
"tap-spec": "^5.0.0",
|
||||||
"tape": "^4.9.2",
|
"tape": "^4.9.2",
|
||||||
|
|||||||
42
spec/defaultHtmlSequencerUi.spec.js
Normal file
42
spec/defaultHtmlSequencerUi.spec.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
describe('Default sequencer HTML', function() {
|
||||||
|
|
||||||
|
var DefaultHtmlSequencerUi = require('../examples/lib/defaultHtmlSequencerUi')
|
||||||
|
var sequencer = require('../src/ImageSequencer')()
|
||||||
|
var defaultHtmlSequencerUi;
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
defaultHtmlSequencerUi = new DefaultHtmlSequencerUi(sequencer)
|
||||||
|
|
||||||
|
spyOn(defaultHtmlSequencerUi,'onLoad')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'selectNewStepUi')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'removeStepUi')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'addStepUi')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'importStepsFromUrlHash')
|
||||||
|
|
||||||
|
defaultHtmlSequencerUi.onLoad()
|
||||||
|
defaultHtmlSequencerUi.selectNewStepUi()
|
||||||
|
defaultHtmlSequencerUi.addStepUi()
|
||||||
|
defaultHtmlSequencerUi.removeStepUi()
|
||||||
|
defaultHtmlSequencerUi.importStepsFromUrlHash()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('load default ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.onLoad).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('select step ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.selectNewStepUi).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('add step ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.addStepUi).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('remove step ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.removeStepUi).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('import options from url', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.importStepsFromUrlHash).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
})
|
||||||
61
spec/defaultHtmlStepUi.spec.js
Normal file
61
spec/defaultHtmlStepUi.spec.js
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
var { JSDOM } = require('jsdom');
|
||||||
|
var DOM = new JSDOM(`<body></body>`);
|
||||||
|
|
||||||
|
global.document = DOM.window.document;
|
||||||
|
|
||||||
|
describe('Sequencer step HTML', function() {
|
||||||
|
|
||||||
|
var DefaultHtmlStepUi = require('../examples/lib/defaultHtmlStepUi')
|
||||||
|
var sequencer = require('../src/ImageSequencer')()
|
||||||
|
var defaultHtmlStepUi;
|
||||||
|
var step = 'brightness'
|
||||||
|
var options = {
|
||||||
|
name: "Brightness",
|
||||||
|
description: "Change the brightness of the image by given percent value"
|
||||||
|
}
|
||||||
|
// options = JSON.parse(options)
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
defaultHtmlStepUi = new DefaultHtmlStepUi(sequencer)
|
||||||
|
|
||||||
|
spyOn(defaultHtmlStepUi,'getPreview')
|
||||||
|
spyOn(defaultHtmlStepUi,'onSetup')
|
||||||
|
spyOn(defaultHtmlStepUi,'onComplete')
|
||||||
|
spyOn(defaultHtmlStepUi,'onDraw')
|
||||||
|
spyOn(defaultHtmlStepUi,'onRemove')
|
||||||
|
spyOn(defaultHtmlStepUi,'notify')
|
||||||
|
|
||||||
|
defaultHtmlStepUi.getPreview()
|
||||||
|
defaultHtmlStepUi.onSetup(step,options)
|
||||||
|
defaultHtmlStepUi.onComplete(step)
|
||||||
|
defaultHtmlStepUi.onDraw(step)
|
||||||
|
defaultHtmlStepUi.onRemove(step)
|
||||||
|
defaultHtmlStepUi.notify('Step removed','remove-notification')
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
it('result preview ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.getPreview).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('load initial setup ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onSetup).toHaveBeenCalledWith(step,options)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('load completion ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onComplete).toHaveBeenCalledWith(step)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('draw step ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onDraw).toHaveBeenCalledWith(step)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('remove step ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onRemove).toHaveBeenCalledWith(step)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('notification ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.notify).toHaveBeenCalledWith('Step removed','remove-notification')
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
8
spec/helpers/reporter.js
Normal file
8
spec/helpers/reporter.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
var SpecReporter = require('jasmine-spec-reporter').SpecReporter;
|
||||||
|
|
||||||
|
jasmine.getEnv().clearReporters(); // remove default reporter logs
|
||||||
|
jasmine.getEnv().addReporter(new SpecReporter({ // add jasmine-spec-reporter
|
||||||
|
spec: {
|
||||||
|
displayPending: true
|
||||||
|
}
|
||||||
|
}));
|
||||||
26
spec/insertPreview.spec.js
Normal file
26
spec/insertPreview.spec.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
describe('Preview UI HTML', function() {
|
||||||
|
|
||||||
|
var InsertPreview = require('../examples/lib/insertPreview')
|
||||||
|
var sequencer = require('../src/ImageSequencer')()
|
||||||
|
var insertPreview;
|
||||||
|
var options = { brightness: 50 }
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
insertPreview = InsertPreview
|
||||||
|
|
||||||
|
spyOn(insertPreview,'generatePreview')
|
||||||
|
spyOn(insertPreview,'updatePreviews')
|
||||||
|
|
||||||
|
insertPreview.generatePreview('brightness',options,'src','selector')
|
||||||
|
insertPreview.updatePreviews('src','selector')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('generate preview ui', function() {
|
||||||
|
expect(insertPreview.generatePreview).toHaveBeenCalledWith('brightness',options,'src','selector')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('update preview ui', function() {
|
||||||
|
expect(insertPreview.updatePreviews).toHaveBeenCalledWith('src','selector')
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
19
spec/intermediateHtmlStepUi.spec.js
Normal file
19
spec/intermediateHtmlStepUi.spec.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
describe('Intermediate step HTML', function() {
|
||||||
|
|
||||||
|
var IntermediateHtmlStepUi = require('../examples/lib/intermediateHtmlStepUi')
|
||||||
|
var sequencer = require('../src/ImageSequencer')()
|
||||||
|
var intermediateHtmlStepUi;
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
intermediateHtmlStepUi = new IntermediateHtmlStepUi(sequencer)
|
||||||
|
|
||||||
|
spyOn(intermediateHtmlStepUi,'insertStep')
|
||||||
|
|
||||||
|
intermediateHtmlStepUi.insertStep()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('insert step ui', function() {
|
||||||
|
expect(intermediateHtmlStepUi.insertStep).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
11
spec/support/jasmine.json
Normal file
11
spec/support/jasmine.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"spec_dir": "spec",
|
||||||
|
"spec_files": [
|
||||||
|
"**/*[sS]pec.js"
|
||||||
|
],
|
||||||
|
"helpers": [
|
||||||
|
"helpers/**/*.js"
|
||||||
|
],
|
||||||
|
"stopSpecOnExpectationFailure": false,
|
||||||
|
"random": true
|
||||||
|
}
|
||||||
40
spec/urlHash.spec.js
Normal file
40
spec/urlHash.spec.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
describe('URL manipulation methods', function() {
|
||||||
|
|
||||||
|
var UrlHash = require('../examples/lib/urlHash')
|
||||||
|
var urlHash;
|
||||||
|
var params = {
|
||||||
|
module: 'brightness',
|
||||||
|
brightness: 50
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
urlHash = UrlHash
|
||||||
|
|
||||||
|
spyOn(urlHash,'getUrlHashParameters')
|
||||||
|
spyOn(urlHash,'getUrlHashParameter')
|
||||||
|
spyOn(urlHash,'setUrlHashParameters')
|
||||||
|
spyOn(urlHash,'setUrlHashParameter')
|
||||||
|
|
||||||
|
urlHash.getUrlHashParameters()
|
||||||
|
urlHash.getUrlHashParameter('module')
|
||||||
|
urlHash.setUrlHashParameters(params)
|
||||||
|
urlHash.setUrlHashParameter('module','brightness')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('gets url hash params from window hash', function() {
|
||||||
|
expect(urlHash.getUrlHashParameters).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('gets url hash param from params object', function() {
|
||||||
|
expect(urlHash.getUrlHashParameter).toHaveBeenCalledWith('module')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('accepts param object and sets url hash params', function() {
|
||||||
|
expect(urlHash.setUrlHashParameters).toHaveBeenCalledWith(params)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('accepts param key-value pair and sets url hash params', function() {
|
||||||
|
expect(urlHash.setUrlHashParameter).toHaveBeenCalledWith('module','brightness')
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const cliUtils = require('../src/CliUtils');
|
const cliUtils = require('../../src/CliUtils');
|
||||||
const test = require('tape');
|
const test = require('tape');
|
||||||
|
|
||||||
test('Output directory is correctly generated',function(t){
|
test('Output directory is correctly generated',function(t){
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
var test = require('tape');
|
var test = require('tape');
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
var sequencer1 = ImageSequencer({ ui: false });
|
var sequencer1 = ImageSequencer({ ui: false });
|
||||||
var options = {brightness : 50};
|
var options = {brightness : 50};
|
||||||
@@ -6,7 +6,7 @@ var test = require('tape');
|
|||||||
// We should only test headless code here.
|
// We should only test headless code here.
|
||||||
// http://stackoverflow.com/questions/21358015/error-jquery-requires-a-window-with-a-document#25622933
|
// http://stackoverflow.com/questions/21358015/error-jquery-requires-a-window-with-a-document#25622933
|
||||||
|
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
var sequencer = ImageSequencer({ ui: false });
|
var sequencer = ImageSequencer({ ui: false });
|
||||||
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
var test = require('tape');
|
var test = require('tape');
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
var sequencer = ImageSequencer({ ui: false });
|
var sequencer = ImageSequencer({ ui: false });
|
||||||
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
||||||
@@ -7,7 +7,7 @@ var DataURItoBuffer = require('data-uri-to-buffer');
|
|||||||
// We should only test headless code here.
|
// We should only test headless code here.
|
||||||
// http://stackoverflow.com/questions/21358015/error-jquery-requires-a-window-with-a-document#25622933
|
// http://stackoverflow.com/questions/21358015/error-jquery-requires-a-window-with-a-document#25622933
|
||||||
|
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
//require image files as DataURLs so they can be tested alike on browser and Node.
|
//require image files as DataURLs so they can be tested alike on browser and Node.
|
||||||
var sequencer = ImageSequencer({ ui: false });
|
var sequencer = ImageSequencer({ ui: false });
|
||||||
@@ -6,7 +6,7 @@ var test = require('tape');
|
|||||||
// We should only test headless code here.
|
// We should only test headless code here.
|
||||||
// http://stackoverflow.com/questions/21358015/error-jquery-requires-a-window-with-a-document#25622933
|
// http://stackoverflow.com/questions/21358015/error-jquery-requires-a-window-with-a-document#25622933
|
||||||
|
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
// This function is used to test whether or not any additional global variables are being created
|
// This function is used to test whether or not any additional global variables are being created
|
||||||
function copy(g, a) {
|
function copy(g, a) {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
var test = require('tape');
|
var test = require('tape');
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
var sequencer = ImageSequencer({ ui: false });
|
var sequencer = ImageSequencer({ ui: false });
|
||||||
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
var test = require('tape');
|
var test = require('tape');
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
var sequencer1 = ImageSequencer({ ui: false });
|
var sequencer1 = ImageSequencer({ ui: false });
|
||||||
var sequencer2 = ImageSequencer({ ui: false });
|
var sequencer2 = ImageSequencer({ ui: false });
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var test = require('tape');
|
var test = require('tape');
|
||||||
|
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
var sequencer = ImageSequencer({ ui: false });
|
var sequencer = ImageSequencer({ ui: false });
|
||||||
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
||||||
@@ -4,7 +4,7 @@ var fs = require('fs');
|
|||||||
var test = require('tape');
|
var test = require('tape');
|
||||||
var DataURItoBuffer = require('data-uri-to-buffer');
|
var DataURItoBuffer = require('data-uri-to-buffer');
|
||||||
|
|
||||||
require('../../src/ImageSequencer.js');
|
require('../../../src/ImageSequencer.js');
|
||||||
|
|
||||||
var sequencer = ImageSequencer({ ui: false });
|
var sequencer = ImageSequencer({ ui: false });
|
||||||
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
||||||
@@ -6,11 +6,11 @@ var DOM = new JSDOM(`<body></body>`);
|
|||||||
|
|
||||||
global.document = DOM.window.document;
|
global.document = DOM.window.document;
|
||||||
|
|
||||||
var DefaultHtmlStepUi = require('../../examples/lib/defaultHtmlStepUi').DefaultHtmlStepUi;
|
var DefaultHtmlStepUi = require('../../../examples/lib/defaultHtmlStepUi')
|
||||||
var sequencer = require('../../src/ImageSequencer.js')();
|
var sequencer = require('../../../src/ImageSequencer.js')();
|
||||||
var UserInterface = require('../../src/ui/UserInterface');
|
var UserInterface = require('../../../src/ui/UserInterface');
|
||||||
|
|
||||||
test('Notify function works for all three UIs', function (t) {
|
test('Notify function works for all three UIs', function (t) {
|
||||||
//Mocking console.log for testing default notify()
|
//Mocking console.log for testing default notify()
|
||||||
function doesLogMessage(f, message) {
|
function doesLogMessage(f, message) {
|
||||||
var oldLog = console.log,
|
var oldLog = console.log,
|
||||||
@@ -2,7 +2,7 @@ var test = require('tape');
|
|||||||
|
|
||||||
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
var red = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
||||||
|
|
||||||
var parseCornerCoordinateInputs = require('../../src/util/ParseInputCoordinates');
|
var parseCornerCoordinateInputs = require('../../../src/util/ParseInputCoordinates');
|
||||||
|
|
||||||
|
|
||||||
test('parseCornerCoordinateInputs works.', function (t) {
|
test('parseCornerCoordinateInputs works.', function (t) {
|
||||||
42
test/spec/defaultHtmlSequencerUi.spec.js
Normal file
42
test/spec/defaultHtmlSequencerUi.spec.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
describe('Default sequencer HTML', function() {
|
||||||
|
|
||||||
|
var DefaultHtmlSequencerUi = require('../../examples/lib/defaultHtmlSequencerUi')
|
||||||
|
var sequencer = require('../../src/ImageSequencer')()
|
||||||
|
var defaultHtmlSequencerUi;
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
defaultHtmlSequencerUi = new DefaultHtmlSequencerUi(sequencer)
|
||||||
|
|
||||||
|
spyOn(defaultHtmlSequencerUi,'onLoad')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'selectNewStepUi')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'removeStepUi')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'addStepUi')
|
||||||
|
spyOn(defaultHtmlSequencerUi,'importStepsFromUrlHash')
|
||||||
|
|
||||||
|
defaultHtmlSequencerUi.onLoad()
|
||||||
|
defaultHtmlSequencerUi.selectNewStepUi()
|
||||||
|
defaultHtmlSequencerUi.addStepUi()
|
||||||
|
defaultHtmlSequencerUi.removeStepUi()
|
||||||
|
defaultHtmlSequencerUi.importStepsFromUrlHash()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('load default ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.onLoad).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('select step ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.selectNewStepUi).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('add step ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.addStepUi).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('remove step ui', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.removeStepUi).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('import options from url', function() {
|
||||||
|
expect(defaultHtmlSequencerUi.importStepsFromUrlHash).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
})
|
||||||
61
test/spec/defaultHtmlStepUi.spec.js
Normal file
61
test/spec/defaultHtmlStepUi.spec.js
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
var { JSDOM } = require('jsdom');
|
||||||
|
var DOM = new JSDOM(`<body></body>`);
|
||||||
|
|
||||||
|
global.document = DOM.window.document;
|
||||||
|
|
||||||
|
describe('Sequencer step HTML', function() {
|
||||||
|
|
||||||
|
var DefaultHtmlStepUi = require('../../examples/lib/defaultHtmlStepUi')
|
||||||
|
var sequencer = require('../../src/ImageSequencer')()
|
||||||
|
var defaultHtmlStepUi;
|
||||||
|
var step = 'brightness'
|
||||||
|
var options = {
|
||||||
|
name: "Brightness",
|
||||||
|
description: "Change the brightness of the image by given percent value"
|
||||||
|
}
|
||||||
|
// options = JSON.parse(options)
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
defaultHtmlStepUi = new DefaultHtmlStepUi(sequencer)
|
||||||
|
|
||||||
|
spyOn(defaultHtmlStepUi,'getPreview')
|
||||||
|
spyOn(defaultHtmlStepUi,'onSetup')
|
||||||
|
spyOn(defaultHtmlStepUi,'onComplete')
|
||||||
|
spyOn(defaultHtmlStepUi,'onDraw')
|
||||||
|
spyOn(defaultHtmlStepUi,'onRemove')
|
||||||
|
spyOn(defaultHtmlStepUi,'notify')
|
||||||
|
|
||||||
|
defaultHtmlStepUi.getPreview()
|
||||||
|
defaultHtmlStepUi.onSetup(step,options)
|
||||||
|
defaultHtmlStepUi.onComplete(step)
|
||||||
|
defaultHtmlStepUi.onDraw(step)
|
||||||
|
defaultHtmlStepUi.onRemove(step)
|
||||||
|
defaultHtmlStepUi.notify('Step removed','remove-notification')
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
it('result preview ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.getPreview).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('load initial setup ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onSetup).toHaveBeenCalledWith(step,options)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('load completion ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onComplete).toHaveBeenCalledWith(step)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('draw step ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onDraw).toHaveBeenCalledWith(step)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('remove step ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.onRemove).toHaveBeenCalledWith(step)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('notification ui', function() {
|
||||||
|
expect(defaultHtmlStepUi.notify).toHaveBeenCalledWith('Step removed','remove-notification')
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
8
test/spec/helpers/reporter.js
Normal file
8
test/spec/helpers/reporter.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
var SpecReporter = require('jasmine-spec-reporter').SpecReporter;
|
||||||
|
|
||||||
|
jasmine.getEnv().clearReporters(); // remove default reporter logs
|
||||||
|
jasmine.getEnv().addReporter(new SpecReporter({ // add jasmine-spec-reporter
|
||||||
|
spec: {
|
||||||
|
displayPending: true
|
||||||
|
}
|
||||||
|
}));
|
||||||
26
test/spec/insertPreview.spec.js
Normal file
26
test/spec/insertPreview.spec.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
describe('Preview UI HTML', function() {
|
||||||
|
|
||||||
|
var InsertPreview = require('../../examples/lib/insertPreview')
|
||||||
|
var sequencer = require('../../src/ImageSequencer')()
|
||||||
|
var insertPreview;
|
||||||
|
var options = { brightness: 50 }
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
insertPreview = InsertPreview
|
||||||
|
|
||||||
|
spyOn(insertPreview,'generatePreview')
|
||||||
|
spyOn(insertPreview,'updatePreviews')
|
||||||
|
|
||||||
|
insertPreview.generatePreview('brightness',options,'src','selector')
|
||||||
|
insertPreview.updatePreviews('src','selector')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('generate preview ui', function() {
|
||||||
|
expect(insertPreview.generatePreview).toHaveBeenCalledWith('brightness',options,'src','selector')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('update preview ui', function() {
|
||||||
|
expect(insertPreview.updatePreviews).toHaveBeenCalledWith('src','selector')
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
19
test/spec/intermediateHtmlStepUi.spec.js
Normal file
19
test/spec/intermediateHtmlStepUi.spec.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
describe('Intermediate step HTML', function() {
|
||||||
|
|
||||||
|
var IntermediateHtmlStepUi = require('../../examples/lib/intermediateHtmlStepUi')
|
||||||
|
var sequencer = require('../../src/ImageSequencer')()
|
||||||
|
var intermediateHtmlStepUi;
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
intermediateHtmlStepUi = new IntermediateHtmlStepUi(sequencer)
|
||||||
|
|
||||||
|
spyOn(intermediateHtmlStepUi,'insertStep')
|
||||||
|
|
||||||
|
intermediateHtmlStepUi.insertStep()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('insert step ui', function() {
|
||||||
|
expect(intermediateHtmlStepUi.insertStep).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
11
test/spec/support/jasmine.json
Normal file
11
test/spec/support/jasmine.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"spec_dir": "test/spec",
|
||||||
|
"spec_files": [
|
||||||
|
"**/*.[sS]pec.js"
|
||||||
|
],
|
||||||
|
"helpers": [
|
||||||
|
"helpers/**/*.js"
|
||||||
|
],
|
||||||
|
"stopSpecOnExpectationFailure": false,
|
||||||
|
"random": false
|
||||||
|
}
|
||||||
40
test/spec/urlHash.spec.js
Normal file
40
test/spec/urlHash.spec.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
describe('URL manipulation methods', function() {
|
||||||
|
|
||||||
|
var UrlHash = require('../../examples/lib/urlHash')
|
||||||
|
var urlHash;
|
||||||
|
var params = {
|
||||||
|
module: 'brightness',
|
||||||
|
brightness: 50
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeEach(()=>{
|
||||||
|
urlHash = UrlHash
|
||||||
|
|
||||||
|
spyOn(urlHash,'getUrlHashParameters')
|
||||||
|
spyOn(urlHash,'getUrlHashParameter')
|
||||||
|
spyOn(urlHash,'setUrlHashParameters')
|
||||||
|
spyOn(urlHash,'setUrlHashParameter')
|
||||||
|
|
||||||
|
urlHash.getUrlHashParameters()
|
||||||
|
urlHash.getUrlHashParameter('module')
|
||||||
|
urlHash.setUrlHashParameters(params)
|
||||||
|
urlHash.setUrlHashParameter('module','brightness')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('gets url hash params from window hash', function() {
|
||||||
|
expect(urlHash.getUrlHashParameters).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('gets url hash param from params object', function() {
|
||||||
|
expect(urlHash.getUrlHashParameter).toHaveBeenCalledWith('module')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('accepts param object and sets url hash params', function() {
|
||||||
|
expect(urlHash.setUrlHashParameters).toHaveBeenCalledWith(params)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('accepts param key-value pair and sets url hash params', function() {
|
||||||
|
expect(urlHash.setUrlHashParameter).toHaveBeenCalledWith('module','brightness')
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user