UNPKG

gaf-mobile

Version:

GAF mobile Web site

105 lines (86 loc) 2.75 kB
'use strict'; describe('Controller: HomePageCtrl', function () { // Vars var $scope, $q, $httpBackend, createCtrl, GAF_BASE_URL; // Mocks var ProjectsMock, CookieStoreMock, WindowMock, LocationMock; var projectData = { category: 'chuck', bundle: 'norris' }; var locationData; // load the controller's module beforeEach(module('gafMobileApp')); // Initialize the controller and a mock scope beforeEach(inject(function($controller, $rootScope, _$q_, _$httpBackend_, _GAF_BASE_URL_) { $q = _$q_; $scope = $rootScope.$new(); $httpBackend = _$httpBackend_; GAF_BASE_URL = _GAF_BASE_URL_; // Controller constructer to enable to tweak the // mock ups before instantiate it createCtrl = function() { return $controller('HomePageCtrl', { $scope: $scope, $location: LocationMock, $window: WindowMock, Projects: ProjectsMock, CookieStore: CookieStoreMock, }); }; })); // Create the mock ups beforeEach(function() { ProjectsMock = jasmine.createSpyObj('ProjectsMock', ['getCurrent']); ProjectsMock.getCurrent.and.returnValue({ reset: jasmine.createSpy('reset') }); CookieStoreMock = jasmine.createSpyObj('CookieStore', ['put', 'get']); LocationMock = { url: function(url) { if(url) { locationData = url; } else { return locationData; } } }; WindowMock = { navigator: { userAgent: 'iPhone' } }; $httpBackend.when('GET', GAF_BASE_URL + '/api/projects/0.1/categories/?compact=true&job_details=true').respond(); }); it('should reset a previous project', function() { createCtrl(); $scope.start(projectData); expect(ProjectsMock.getCurrent().reset).toHaveBeenCalled(); }); it('should redirect to /post-project after project creation', function() { createCtrl(); $scope.start(projectData); expect(LocationMock.url()).toBe('post-project/templates'); }); it('should hide app banner if hideAppBanner cookie is set', function() { CookieStoreMock.get.and.returnValue(true); createCtrl(); expect($scope.hideAppBanner).toBe(true); }); it('should hide app banner if banner is closed', function() { createCtrl(); $scope.closeBanner(); expect($scope.hideAppBanner).toBe(true); expect(CookieStoreMock.put).toHaveBeenCalled(); }); it('should detect iOS devices and set corresponding var', function() { createCtrl(); expect($scope.isiOS).toBe(true); }); it('should detect android devices and set corresponding var', function() { WindowMock = { navigator: { userAgent: 'Android' } }; createCtrl(); expect($scope.isAndroid).toBe(true); }); });