I have the following controller
app.controller('NavController', ['$rootScope', '$scope', 'api', function($rootScope, $scope, $location, auth, api) {
$scope.load = function() {
return api.get('/location').success(function(data) {
$rootScope.locations = data;
}).error(function(data) {
console.log('load error');
});
};
}]);
And this is the unit test I have written for it
describe('Navigation Controller Test', function() {
beforeEach(module('app'));
var controller, scope, rootScope, httpBackend;
beforeEach(inject(function(_$controller_, _$rootScope_, $httpBackend) {
var $controller = _$controller_;
rootScope = _$rootScope_;
scope = rootScope.$new();
httpBackend = $httpBackend;
controller = $controller('NavController', {
$rootScope: rootScope,
$scope: scope,
});
apiRequestHandler = httpBackend.when('GET', '/api/v2/location')
.respond({userId: 'userX'});
}));
afterEach(function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
describe('load()', function() {
it('should have locations when successful', function() {
httpBackend.expectGET('/api/v2/location');
scope.load();
expect(rootScope.locations).toEqual("{userId: 'userX'}");
httpBackend.flush();
});
});
});
The current issue I'm having is that rootScope.locations is undefined even after calling the scope.load() function. I'm not too sure why this is but the closest post I seem to have found is this one which I think might be related to my problem but I'm not quite certain.
I did a console.log($rootScope.locations) in the controller when the get request is successful and it had the correct output however I'm stumped on how to get it to appear the same for this test.