UNPKG

gaf-mobile

Version:

GAF mobile Web site

149 lines (127 loc) 4.59 kB
'use strict'; describe('Controller: HirePageCtrl', function() { // Vars var $scope, $q, $httpBackend, createCtrl; // Mocks var RouteMock, ProjectsMock, LocationMock; var skillsData = {}; var query = 'mobile'; var locationData; // Load the controller's module beforeEach(module('gafMobileApp')); // Initialize the controller beforeEach(inject(function($controller, _$rootScope_, _$q_, _$httpBackend_) { $scope = _$rootScope_.$new(); $q = _$q_; $httpBackend = _$httpBackend_; // Controller constructer to enable to tweak the // mock ups before instantiate it createCtrl = function() { return $controller('HirePageCtrl', { $scope: $scope, $location: LocationMock, $route: RouteMock, Projects: ProjectsMock }); }; })); // Create the mock ups beforeEach(function() { ProjectsMock = jasmine.createSpyObj('ProjectsMock', ['getCurrent']); ProjectsMock.getCurrent.and.returnValue({ set: jasmine.createSpy('set'), reset: jasmine.createSpy('reset') }); RouteMock = { current: { locals: { job: 'Graphic-Design'} } }; LocationMock = { url: function(url) { if(url) { locationData = url; } else { return locationData; } }, path: function(path) { if(path) { locationData = path; } else { return locationData; } } }; $httpBackend.when('GET', '/views/main.html').respond({}); }); it('should set job when job is available and valid ', function() { createCtrl(); $scope.$digest(); expect($scope.job).toEqual(RouteMock.current.locals.job); }); it('should set job title when either job is invalid or h1 param is specified', function() { RouteMock = { current: { locals: { h1: 'Website'} } }; createCtrl(); $scope.$digest(); expect($scope.h1).toEqual(RouteMock.current.locals.h1); }); it('should set blank title or job when no param is specified', function() { RouteMock = { current: { locals: {} } }; createCtrl(); $scope.$digest(); expect($scope.h1).toEqual(''); expect($scope.job).toEqual(''); }); it('should start new project based on jobs', function() { createCtrl(); $scope.startProjectFromJob(RouteMock.current.locals.job); $scope.$digest(); expect(ProjectsMock.getCurrent().set).toHaveBeenCalledWith({ jobs: [RouteMock.current.locals.job] }); expect(LocationMock.url()).toBe('/post-project'); }); // [TEMP] Skill select service code. To be rewritten when the skill select // service leaves the prototype stage it('should post project with title based on query', function() { $httpBackend.expect('GET', 'https://m.freelancer.com/suggest-skill?q=' + query).respond(skillsData); createCtrl(); $scope.startWithQuery(query); $httpBackend.flush(1); expect(ProjectsMock.getCurrent().reset).toHaveBeenCalled(); expect(LocationMock.url()).toBe('post-project/?title=' + query.charAt(0).toUpperCase() + query.slice(1)); }); it('should post project with title even when suggest-skill resp is empty', function() { $httpBackend.expect('GET', 'https://m.freelancer.com/suggest-skill?q=' + query).respond(); createCtrl(); $scope.startWithQuery(query); $httpBackend.flush(1); expect(ProjectsMock.getCurrent().reset).toHaveBeenCalled(); expect(LocationMock.url()).toBe('post-project/?title=' + query.charAt(0).toUpperCase() + query.slice(1)); }); it('should post project with suggested skills based on query', function() { skillsData.skills = ['Mobile', 'HTML']; $httpBackend.expect('GET', 'https://m.freelancer.com/suggest-skill?q=' + query).respond(skillsData); createCtrl(); $scope.startWithQuery(query); $httpBackend.flush(1); expect(ProjectsMock.getCurrent().reset).toHaveBeenCalled(); expect(LocationMock.url()).toBe('post-project/mobile/?title=' + query.charAt(0).toUpperCase() + query.slice(1) + '&jobs=Mobile,HTML'); }); it('should post project using templates based on query', function() { skillsData.template = 0; $httpBackend.expect('GET', 'https://m.freelancer.com/suggest-skill?q=' + query).respond(skillsData); createCtrl(); $scope.startWithQuery(query); $httpBackend.flush(1); expect(ProjectsMock.getCurrent().reset).toHaveBeenCalled(); expect(LocationMock.url()).toBe('post-project/Web-development/?title=' + query.charAt(0).toUpperCase() + query.slice(1)); }); });