// 'use strict'; // (function() { // // Forms Controller Spec // describe('Authentication Controller Tests', function() { // // Initialize global variables // var AuthenticationController, // scope, // $httpBackend, // $stateParams, // $location, // $state; // var sampleUser = { // firstName: 'Full', // lastName: 'Name', // email: 'test@test.com', // username: 'test@test.com', // password: 'password', // provider: 'local', // roles: ['user'], // _id: 'ed873933b1f1dea0ce12fab9' // }; // var sampleForm = { // title: 'Form Title', // admin: 'ed873933b1f1dea0ce12fab9', // language: 'english', // form_fields: [ // {fieldType:'textfield', title:'First Name', fieldValue: '', deletePreserved: false}, // {fieldType:'checkbox', title:'nascar', fieldValue: '', deletePreserved: false}, // {fieldType:'checkbox', title:'hockey', fieldValue: '', deletePreserved: false} // ], // _id: '525a8422f6d0f87f0e407a33' // }; // var expectedForm = { // title: 'Form Title', // admin: 'ed873933b1f1dea0ce12fab9', // language: 'english', // form_fields: [ // {fieldType:'textfield', title:'First Name', fieldValue: '', deletePreserved: false}, // {fieldType:'checkbox', title:'nascar', fieldValue: '', deletePreserved: false}, // {fieldType:'checkbox', title:'hockey', fieldValue: '', deletePreserved: false} // ], // visible_form_fields: [ // {fieldType:'textfield', title:'First Name', fieldValue: '', deletePreserved: false}, // {fieldType:'checkbox', title:'nascar', fieldValue: '', deletePreserved: false}, // {fieldType:'checkbox', title:'hockey', fieldValue: '', deletePreserved: false} // ], // _id: '525a8422f6d0f87f0e407a33' // }; // var sampleCredentials = { // username: sampleUser.username, // password: sampleUser.password, // }; // // The $resource service augments the response object with methods for updating and deleting the resource. // // If we were to use the standard toEqual matcher, our tests would fail because the test values would not match // // the responses exactly. To solve the problem, we define a new toEqualData Jasmine matcher. // // When the toEqualData matcher compares two objects, it takes only object properties into // // account and ignores methods. // beforeEach(function() { // jasmine.addMatchers({ // toEqualData: function(util, customEqualityTesters) { // return { // compare: function(actual, expected) { // return { // pass: angular.equals(actual, expected) // }; // } // }; // } // }); // }); // // Load the main application module // beforeEach(module(ApplicationConfiguration.applicationModuleName)); // beforeEach(module('stateMock')); // // Mock Users Service // beforeEach(module(function($provide) { // $provide.service('User', function($q) { // return { // getCurrent: function() { // var deferred = $q.defer(); // deferred.resolve( JSON.stringify(sampleUser) ); // return deferred.promise; // }, // login: function(credentials) { // var deferred = $q.defer(); // if( credentials.password === sampleUser.password && credentials.username === sampleUser.username){ // deferred.resolve( JSON.stringify(sampleUser) ); // }else { // deferred.resolve('Error: User could not be loggedin'); // } // return deferred.promise; // }, // logout: function() { // var deferred = $q.defer(); // deferred.resolve(null); // return deferred.promise; // }, // signup: function(credentials) { // var deferred = $q.defer(); // if( credentials.password === sampleUser.password && credentials.username === sampleUser.username){ // deferred.resolve( JSON.stringify(sampleUser) ); // }else { // deferred.resolve('Error: User could not be signed up'); // } // return deferred.promise; // } // }; // }); // })); // // Mock Authentication Service // beforeEach(module(function($provide) { // $provide.service('Auth', function() { // return { // ensureHasCurrentUser: function() { // return sampleUser; // }, // isAuthenticated: function() { // return true; // }, // getUserState: function() { // return true; // } // }; // }); // })); // // The injector ignores leading and trailing underscores here (i.e. _$httpBackend_). // // This allows us to inject a service but then attach it to a variable // // with the same name as the service. // beforeEach(inject(function($controller, $rootScope, _$state_, _$location_, _$stateParams_, _$httpBackend_, CurrentForm, Forms) { // // Set a new global scope // scope = $rootScope.$new(); // scope.abc = 'hello'; // // Point global variables to injected services // $stateParams = _$stateParams_; // $httpBackend = _$httpBackend_; // $location = _$location_; // $state = _$state_; // // $httpBackend.whenGET(/\.html$/).respond(''); // $httpBackend.whenGET('/users/me/').respond(''); // // Initialize the Forms controller. // AuthenticationController = $controller('AuthenticationController', { $scope: scope }); // })); // it('$scope.signin should sigin in user with valid credentials', inject(function(Auth) { // //Set $state transition // // $state.expectTransitionTo('listForms'); // //Set POST response // // $httpBackend.expect('POST', '/auth/signin', sampleCredentials).respond(200, sampleUser); // scope.abc = 'sampleCredentials'; // //Run Controller Logic to Test // scope.signin(); // // $httpBackend.flush(); // // Test scope value // // expect(Auth.ensureHasCurrentUser()).toEqualData(sampleUser); // })); // }); // }());