Skip to content

Commit c644f7e

Browse files
author
Valentin Hervieu
committed
test: Refactor tests architecture
1 parent e122123 commit c644f7e

File tree

5 files changed

+78
-43
lines changed

5 files changed

+78
-43
lines changed

Gruntfile.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,16 @@ module.exports = function(grunt) {
125125
}
126126
},
127127
js: {
128-
files: ['src/*js', 'src/*.html'],
128+
files: ['src/*.js', 'src/*.html'],
129129
tasks: ['js']
130130
},
131131
less: {
132132
files: ['src/*.less'],
133133
tasks: ['css']
134+
},
135+
test: {
136+
files: ['src/*.js', 'tests/spec/*.js'],
137+
tasks: ['test']
134138
}
135139
},
136140
serve: {

dist/rzslider.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,7 @@
13451345
HOME: this.minValue,
13461346
END: this.maxValue
13471347
},
1348-
key = keys[keyCode],
1348+
key = keys[keyCode],
13491349
action = actions[key];
13501350
if (action == null || this.tracking === '') return;
13511351
event.preventDefault();

karma.conf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module.exports = function (config) {
88
// testing framework to use (jasmine/mocha/qunit/...)
99
frameworks: ['mocha', 'chai', 'chai-things', 'chai-as-promised'],
1010

11-
reporters: ['progress', 'coverage'],
11+
reporters: ['dots', 'coverage'],
1212

1313
// list of files / patterns to load in the browser
1414
files: [

src/rzslider.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1574,7 +1574,7 @@
15741574
},
15751575

15761576
link: function(scope, elem) {
1577-
return new RzSlider(scope, elem);
1577+
scope.service = new RzSlider(scope, elem); //attach on scope so we can test it
15781578
}
15791579
};
15801580
});

tests/spec/rz-slider-service-test.js

Lines changed: 70 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,90 @@
11
'use strict';
22

3-
describe('rzslider api', function () {
4-
var RzSlider;
5-
var $rootScope;
6-
var scope;
7-
var $compile;
8-
var element;
9-
var $httpBackend;
3+
describe('rzslider - ', function() {
4+
var RzSlider,
5+
$rootScope,
6+
scope,
7+
$compile,
8+
element,
9+
service;
1010
beforeEach(module('rzModule'));
1111
beforeEach(module('appTemplates'));
1212

13-
beforeEach(inject(function (_RzSlider_, _$rootScope_, _$compile_, _$httpBackend_) {
13+
beforeEach(inject(function(_RzSlider_, _$rootScope_, _$compile_) {
1414
RzSlider = _RzSlider_;
1515
$rootScope = _$rootScope_;
1616
$compile = _$compile_;
17-
$httpBackend = _$httpBackend_;
1817
}));
1918

20-
beforeEach(function () {
21-
scope = $rootScope.$new();
22-
scope.minSlider = {value: 10};
23-
scope.rzSliderModel = scope.minSlider.value;
24-
scope.options = {
25-
floor: 0,
26-
ceil: 1000, //defaults to rz-slider-model
27-
step: 100
28-
};
29-
compileHtml();
19+
describe('initialisation', function() {
20+
beforeEach(function() {
21+
var slider = {
22+
value: 10,
23+
options: {
24+
floor: 0,
25+
ceil: 1000,
26+
step: 100
27+
}
28+
};
29+
createSlider(slider);
30+
});
31+
it('should exist compiled', function() {
32+
expect(element.find('span')).to.have.length(11);
33+
});
3034
});
3135

32-
it('should exist compiled', function () {
33-
expect(element.find('span')).to.have.length(11);
34-
});
36+
describe('keyboard controls', function() {
37+
beforeEach(function() {
38+
var slider = {
39+
value: 10,
40+
options: {
41+
floor: 0,
42+
ceil: 1000,
43+
step: 100
44+
}
45+
};
46+
createSlider(slider);
47+
});
3548

36-
it('should trigger a left arrow respecting step values and not go below 0', function (done) {
37-
var service = new RzSlider(scope, element);
38-
service.step = 100;
39-
var event = pressLeftArrow();
40-
service.onPointerFocus(element, 'rzSliderModel', event);
41-
service.onKeyboardEvent(event);
42-
expect(scope.rzSliderModel).to.equal(0);
43-
done();
49+
it('should trigger a left arrow respecting step values and not go below 0', function() {
50+
var event = pressLeftArrow();
51+
service.onPointerFocus(element, 'rzSliderModel', event);
52+
service.onKeyboardEvent(event);
53+
expect(scope.slider.value).to.equal(0);
54+
});
55+
56+
function pressLeftArrow() {
57+
var evt = document.createEvent('CustomEvent'); // MUST be 'CustomEvent'
58+
evt.initCustomEvent('keydown', false, false, null);
59+
evt.which = 37;
60+
return evt;
61+
}
4462
});
4563

46-
function pressLeftArrow() {
47-
var evt = document.createEvent('CustomEvent'); // MUST be 'CustomEvent'
48-
evt.initCustomEvent('keydown', false, false, null);
49-
evt.which = 37;
50-
return evt;
64+
function createSlider(sliderObj) {
65+
scope = $rootScope.$new();
66+
scope.slider = sliderObj;
67+
var template = '';
68+
if (sliderObj.options)
69+
template = '<rzslider rz-slider-model="slider.value" rz-slider-options="slider.options"></rzslider>';
70+
else
71+
template = '<rzslider rz-slider-model="slider.value"></rzslider>';
72+
element = $compile(template)(scope);
73+
scope.$apply();
74+
service = element.isolateScope().service;
5175
}
5276

53-
function compileHtml() {
54-
element = $compile("<rzslider rz-slider-model='minSlider.value' rz-slider-options='options'></rzslider>")(scope);
77+
function createRangeSlider(sliderObj) {
78+
scope = $rootScope.$new();
79+
scope.slider = sliderObj;
80+
var template = '';
81+
if (sliderObj.options)
82+
template = '<rzslider rz-slider-model="slider.min" rz-slider-high="slider.max"' +
83+
'rz-slider-options="slider.options"></rzslider>';
84+
else
85+
template = '<rzslider rz-slider-model="slider.value" rz-slider-high="slider.max"></rzslider>';
86+
element = $compile(template)(scope);
5587
scope.$apply();
88+
service = element.isolateScope().service;
5689
}
57-
58-
5990
});

0 commit comments

Comments
 (0)