I want to write unit tests for my date filters created using moment.js
.
E.g.
app.filter('timeFormat', function () {
return function (date) {
return moment(date).format("LT");
};
});
What's the best way to test the above filter?
Does the following test look good? Or do I have to mock the moment functions? If so, how can we achieve that?
describe('Filter: timeFormat', function () {
'use strict';
var $filter;
beforeEach(module('someApp'));
beforeEach(inject(function (_$filter_) {
$filter = _$filter_;
}));
it('should return time in localized time format', function () {
var filterTime = $filter('timeFormat');
var date = new Date();
var expectedTime = "5:46 AM";
date.setHours(5);
date.setMinutes(46);
expect(filterTime(date)).toEqual(expectedTime);
expectedTime = "2:34 PM";
date.setHours(14);
date.setMinutes(34);
expect(filterTime(date)).toEqual(expectedTime);
expectedTime = "12:59 PM";
date.setHours(12);
date.setMinutes(59);
expect(filterTime(date)).toEqual(expectedTime);
expectedTime = "11:59 PM";
date.setHours(23);
date.setMinutes(59);
expect(filterTime(date)).toEqual(expectedTime);
});
});