mercredi 18 novembre 2015

unit testing factory which calls another factory using ngResource

I'm currently trying to test a factory which calls another factory using ngResource. But I can't figure it out. I'm stuck on this unit test. Any help will be great !

I get this error "Unexpected request: GET /api/eventslot/type No more request expected"

My factory :

factory('EventslotsManager', ['$rootScope',
    'Eventslots','Rule', 'Notification',
    function($rootScope, Eventslots, Rule, Notification) {
        var eventslot_mgr = {
            Eventslots: Eventslots,
            getEventslot: getEventslot
        };
        return eventslot_mgr;

        function getEventslot(params) {
            return Eventslots.query(params).$promise.then(function (response) {
                var event = response.length && response[0] ;
                if (event.original_event) {
                    event.original_event = Eventslots.query({id: event.original_event}, function (response) {
                        event.original_event = response.length && response[0];
                        event.rule = event.original_event.rule;
                    });
                } else {
                    event.rule = Rule;
                }
                return event;
            });
        }

My service :

.factory('Eventslots', ['$resource',
    function ($resource) {
        return $resource('/api/eventslot/:id', {id: '@id', id_type: '@id_type'},
            {}
        );
    }])

The unit test:

beforeEach(module('ionic', 'ngResource', 'ui-notification'));
beforeEach(module('location_services'));
beforeEach(angular.mock.module('live_services'));
beforeEach(inject(function ($httpBackend, _EventslotsManager_, _Eventslots_) {
    httpBackend = $httpBackend;
    EventslotsManager = _EventslotsManager_;
    Eventslots = _Eventslots_;
}));

it('getEventslot function, should return an array of 1', function () {
    expect(EventslotsManager.getEventslot).toBeDefined();
    httpBackend.whenGET('/api/eventslot/1').respond(responseOne);
    var event = EventslotsManager.getEventslot({id: 1});
    httpBackend.flush();
    expect(event[0].name).toBe('type1');
});

Aucun commentaire:

Enregistrer un commentaire