lundi 7 décembre 2015

How to unit test date filters that uses moment.js?

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?

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('momentTime');

        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);
    });
});

Aucun commentaire:

Enregistrer un commentaire