Commit c644f7e5 authored by Valentin Hervieu's avatar Valentin Hervieu

test: Refactor tests architecture

parent e1221239
...@@ -125,12 +125,16 @@ module.exports = function(grunt) { ...@@ -125,12 +125,16 @@ module.exports = function(grunt) {
} }
}, },
js: { js: {
files: ['src/*js', 'src/*.html'], files: ['src/*.js', 'src/*.html'],
tasks: ['js'] tasks: ['js']
}, },
less: { less: {
files: ['src/*.less'], files: ['src/*.less'],
tasks: ['css'] tasks: ['css']
},
test: {
files: ['src/*.js', 'tests/spec/*.js'],
tasks: ['test']
} }
}, },
serve: { serve: {
......
...@@ -1345,7 +1345,7 @@ ...@@ -1345,7 +1345,7 @@
HOME: this.minValue, HOME: this.minValue,
END: this.maxValue END: this.maxValue
}, },
key = keys[keyCode], key = keys[keyCode],
action = actions[key]; action = actions[key];
if (action == null || this.tracking === '') return; if (action == null || this.tracking === '') return;
event.preventDefault(); event.preventDefault();
......
...@@ -8,7 +8,7 @@ module.exports = function (config) { ...@@ -8,7 +8,7 @@ module.exports = function (config) {
// testing framework to use (jasmine/mocha/qunit/...) // testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['mocha', 'chai', 'chai-things', 'chai-as-promised'], frameworks: ['mocha', 'chai', 'chai-things', 'chai-as-promised'],
reporters: ['progress', 'coverage'], reporters: ['dots', 'coverage'],
// list of files / patterns to load in the browser // list of files / patterns to load in the browser
files: [ files: [
......
...@@ -1574,7 +1574,7 @@ ...@@ -1574,7 +1574,7 @@
}, },
link: function(scope, elem) { link: function(scope, elem) {
return new RzSlider(scope, elem); scope.service = new RzSlider(scope, elem); //attach on scope so we can test it
} }
}; };
}); });
......
'use strict'; 'use strict';
describe('rzslider api', function () { describe('rzslider - ', function() {
var RzSlider; var RzSlider,
var $rootScope; $rootScope,
var scope; scope,
var $compile; $compile,
var element; element,
var $httpBackend; service;
beforeEach(module('rzModule')); beforeEach(module('rzModule'));
beforeEach(module('appTemplates')); beforeEach(module('appTemplates'));
beforeEach(inject(function (_RzSlider_, _$rootScope_, _$compile_, _$httpBackend_) { beforeEach(inject(function(_RzSlider_, _$rootScope_, _$compile_) {
RzSlider = _RzSlider_; RzSlider = _RzSlider_;
$rootScope = _$rootScope_; $rootScope = _$rootScope_;
$compile = _$compile_; $compile = _$compile_;
$httpBackend = _$httpBackend_;
})); }));
beforeEach(function () { describe('initialisation', function() {
scope = $rootScope.$new(); beforeEach(function() {
scope.minSlider = {value: 10}; var slider = {
scope.rzSliderModel = scope.minSlider.value; value: 10,
scope.options = { options: {
floor: 0, floor: 0,
ceil: 1000, //defaults to rz-slider-model ceil: 1000,
step: 100 step: 100
}; }
compileHtml(); };
createSlider(slider);
});
it('should exist compiled', function() {
expect(element.find('span')).to.have.length(11);
});
}); });
it('should exist compiled', function () { describe('keyboard controls', function() {
expect(element.find('span')).to.have.length(11); beforeEach(function() {
}); var slider = {
value: 10,
options: {
floor: 0,
ceil: 1000,
step: 100
}
};
createSlider(slider);
});
it('should trigger a left arrow respecting step values and not go below 0', function (done) { it('should trigger a left arrow respecting step values and not go below 0', function() {
var service = new RzSlider(scope, element); var event = pressLeftArrow();
service.step = 100; service.onPointerFocus(element, 'rzSliderModel', event);
var event = pressLeftArrow(); service.onKeyboardEvent(event);
service.onPointerFocus(element, 'rzSliderModel', event); expect(scope.slider.value).to.equal(0);
service.onKeyboardEvent(event); });
expect(scope.rzSliderModel).to.equal(0);
done(); function pressLeftArrow() {
var evt = document.createEvent('CustomEvent'); // MUST be 'CustomEvent'
evt.initCustomEvent('keydown', false, false, null);
evt.which = 37;
return evt;
}
}); });
function pressLeftArrow() { function createSlider(sliderObj) {
var evt = document.createEvent('CustomEvent'); // MUST be 'CustomEvent' scope = $rootScope.$new();
evt.initCustomEvent('keydown', false, false, null); scope.slider = sliderObj;
evt.which = 37; var template = '';
return evt; if (sliderObj.options)
template = '<rzslider rz-slider-model="slider.value" rz-slider-options="slider.options"></rzslider>';
else
template = '<rzslider rz-slider-model="slider.value"></rzslider>';
element = $compile(template)(scope);
scope.$apply();
service = element.isolateScope().service;
} }
function compileHtml() { function createRangeSlider(sliderObj) {
element = $compile("<rzslider rz-slider-model='minSlider.value' rz-slider-options='options'></rzslider>")(scope); scope = $rootScope.$new();
scope.slider = sliderObj;
var template = '';
if (sliderObj.options)
template = '<rzslider rz-slider-model="slider.min" rz-slider-high="slider.max"' +
'rz-slider-options="slider.options"></rzslider>';
else
template = '<rzslider rz-slider-model="slider.value" rz-slider-high="slider.max"></rzslider>';
element = $compile(template)(scope);
scope.$apply(); scope.$apply();
service = element.isolateScope().service;
} }
}); });
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment