Testing angular filters with Jasmine
Testing an Angular filters with Jasmine
HTML
<script src="http://jasmine.github.io/1.3/lib/jasmine.js"></script>
<script src="http://jasmine.github.io/1.3/lib/jasmine-html.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/1.3/lib/jasmine.css">
<script src="http://code.angularjs.org/1.2.9/angular.js"></script>
<script src="http://code.angularjs.org/1.2.9/angular-mocks.js"></script>
JavaScript
//--- CODE --------------------------
var myApp = angular.module('myApp', []);
/**
* A filter used to transfer value to Boolean.
* If the input value is equal to 'f' / 0 / '0' / 'false' / 'no'/ 'n' or an empty array it returns false, otherwise it returns true.
*/
myApp.filter('bool', function () {
return function (value) {
if (value && value.length !== 0) {
var v = angular.lowercase('' + value);
value = !(v === 'f' || v === '0' || v === 'false' || v === 'no' || v === 'n' || v === '[]');
} else {
value = false;
}
return value;
};
});
// ---SPECS-------------------------
describe('myApp', function () {
beforeEach(function () {
module('myApp');
});
it('has a bool filter', inject(function($filter) {
expect($filter('bool')).not.toBeNull();
}));
it("should return true if the input is not equal to 'f' / 0 / '0' / 'false' / 'no'/ 'n' or an empty array ", inject(function (boolFilter) {
expect(boolFilter(true)).toBeTruthy();
expect(boolFilter('any string')).toBeTruthy();
expect(boolFilter(1)).toBeTruthy();
expect(boolFilter([1234])).toBeTruthy();
expect(boolFilter({})).toBeTruthy();
}));
it("should return false if the input is equal to 'f' / 0 / '0' / 'false' / 'no'/ 'n' or an empty array ", inject(function (boolFilter) {
expect(boolFilter(false)).toBeFalsy();
expect(boolFilter('false')).toBeFalsy();
expect(boolFilter('f')).toBeFalsy();
expect(boolFilter(0)).toBeFalsy();
expect(boolFilter('n')).toBeFalsy();
expect(boolFilter([])).toBeFalsy();
}));
});
// --- Runner -------------------------
(function () {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function (spec) {
return...