// '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);
// 		}));


// 	});
// }());