Skip to content
This repository has been archived by the owner on Jan 17, 2024. It is now read-only.

Commit

Permalink
Merge pull request #120 from AppliedIS/issue-unittests
Browse files Browse the repository at this point in the history
more unit tests and registration/login button interactions
  • Loading branch information
jefferey committed Nov 9, 2016
2 parents d6204ae + b15f15f commit 85970aa
Show file tree
Hide file tree
Showing 12 changed files with 209 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,78 @@ describe('dateFieldController', function() {

beforeEach(module('14c'));

beforeEach(inject(function ($rootScope, $controller) {
beforeEach(inject(function ($rootScope, $controller, moment) {
scope = $rootScope.$new();
momentMock = moment;

dateFieldController = function() {
return $controller('dateFieldController', {
'$scope': scope
'$scope': scope,
'moment': momentMock
});
};
}));

it('invoke controller', function() {
scope.dateVal = '2000-01-01';
var controller = dateFieldController();
scope.vm = controller;
scope.$digest();

expect(controller.year).toBe(2000);
expect(controller.day).toBe(1);
expect(controller.month).toBe(1);
});

it('valid date change', function() {
var controller = dateFieldController();
scope.vm = controller;
controller.year = '2000';
controller.month = '01';
controller.day = '01';
scope.$digest();

controller.year = '2001';
controller.month = '01';
controller.day = '01';
scope.$digest();

expect(momentMock(scope.dateVal).format('YYYY-MM-DD')).toBe('2001-01-01');
});

it('invalid date change', function() {
var controller = dateFieldController();
scope.vm = controller;
controller.year = '2000';
controller.month = '01';
controller.day = '01';
scope.$digest();

controller.year = '2001';
controller.month = '99';
controller.day = '01';
scope.$digest();

controller.year = '2001';
controller.month = '02';
controller.day = '01';
scope.$digest();
});

it('invoke controller', function() {
var testDate = new Date();
momentMock = function() {
return { isSame: function() { return false; },
isValid: function() { return true; },
isDate: function() { return true; },
month: function() { return true; },
date: function() { return true; },
year: function() { return true; }}
}
momentMock.isDate = function() {return true;};
var controller = dateFieldController();
scope.vm = controller;
scope.$digest();

});
});
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ module.exports = function(ngModule) {

$scope.onSubmitClick = function() {

vm.submittingForm = true;
stateService.user.loginEmail = $scope.formVals.email


vm.clearError();

// Call Token Service
Expand All @@ -34,9 +34,10 @@ module.exports = function(ngModule) {

$location.path("/");
}, handleError);

vm.submittingForm = false;
}, function (error) {
handleError(error);
vm.submittingForm = false;
});

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@ describe('userLoginFormController', function() {

beforeEach(module('14c'));

beforeEach(inject(function ($rootScope, $controller, _$q_, apiService) {
beforeEach(inject(function ($rootScope, $controller, _$q_, apiService, stateService) {
scope = $rootScope.$new();
$q = _$q_;
mockapiService = apiService;
mockstateService = stateService;
userLoginFormController = function() {
return $controller('userLoginFormController', {
'$scope': scope,
'$route': route,
'apiService': mockapiService
'apiService': mockapiService,
'stateService': mockstateService
});
};

Expand All @@ -20,6 +22,10 @@ describe('userLoginFormController', function() {
userInfo = $q.defer();
spyOn(mockapiService, 'userInfo').and.returnValue(userInfo.promise);

loadState = $q.defer();
spyOn(stateService, 'loadState').and.returnValue(loadState.promise);


}));

it('invoke controller', function() {
Expand Down Expand Up @@ -85,6 +91,45 @@ describe('userLoginFormController', function() {
userLogin.resolve({ data: {} });
userInfo.reject({ data: {} });
scope.$apply();
});

it('toggle hideShowPassword should show password if it is hidden', function() {
var controller = userLoginFormController();
scope.inputType = "password";
scope.hideShowPassword();
scope.$apply();

expect(scope.inputType).toBe("text");
});

it('toggle hideShowPassword should hide password if it is shown', function() {
var controller = userLoginFormController();
scope.inputType = "text";
scope.hideShowPassword();
scope.$apply();

expect(scope.inputType).toBe("password");
});


it('on state loads', function() {
var controller = userLoginFormController();

scope.onSubmitClick();
userLogin.resolve({ data: {} });
userInfo.resolve({ data: {} });
loadState.resolve();
scope.$apply();
});


it('on state load fails', function() {
var controller = userLoginFormController();
spyOn(scope, '$apply');
scope.onSubmitClick();
userLogin.reject({ data: { error_description: 'Password expired'} });
scope.$digest();
});


});
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ <h2>Log in</h2>
<div class="showpass">
<a href="" ng-click="hideShowPassword()"><span ng-show="inputType != 'password'">Hide</span><span ng-show="inputType === 'password'">Show</span> Password</a>
</div></div>
<div class="loginbtn"><button type="submit">Log in</button></div>

<div class="loginbtn">
<button type="submit" ng-show="!vm.submittingForm">Log in</button>
<button type="button" ng-show="vm.submittingForm" class='usa-button-active'><span class="loading-blue" ng-show="vm.submittingForm"></span>Loading</button>
</div>
<div class="forgotpass"><a href="" ng-click="forgotPassword()">Forgot Your Password?</a></div>
</div>
<div class="login">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ module.exports = function(ngModule) {
vm.restForm();

vm.resetErrors = function() {
vm.generalRegistrationError = false;
vm.showEinHelp = false;
vm.einError = false;
vm.einRequired = false;
Expand Down Expand Up @@ -82,11 +83,13 @@ module.exports = function(ngModule) {
$scope.onSubmitClick = function() {
vm.resetErrors();
vm.registerdEmail = ''
vm.submittingForm = true;
apiService.userRegister($scope.formVals.ein, $scope.formVals.email, $scope.formVals.pass, $scope.formVals.confirmPass, $scope.regResponse, vm.emailVerificationUrl).then(function (result) {
$scope.resetRegCaptcha();
vm.registerdEmail = $scope.formVals.email
vm.restForm();
vm.accountCreated = true;
vm.submittingForm = false;
$window.scrollTo(0, 0);
}, function (error) {
if(error && error.data){
Expand Down Expand Up @@ -118,9 +121,13 @@ module.exports = function(ngModule) {
if($scope.registerErrors.indexOf("Password does not meet complexity requirements.") > -1){
vm.passwordComplexity = true;
}
} else {
vm.generalRegistrationError = true;
}

console.log(error.statusText + (error.data && error.data.error ? ': ' + error.data.error + ' - ' + error.data.error_description : ''));
$scope.resetRegCaptcha();
vm.submittingForm = false;
$location.path("/");
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,18 +58,22 @@ describe('userRegistrationFormController', function() {
var controller = userRegistrationFormController();
scope.onSubmitClick();
scope.resetRegCaptcha = function() {};
expect(controller.submittingForm).toBe(true);
userRegister.resolve();
scope.$apply();
expect(controller.submittingForm).toBe(false);
});

it('submitting registration has an error, no error data', function() {
var controller = userRegistrationFormController();
var hasBeenCalled = false;
scope.onSubmitClick();
scope.resetRegCaptcha = function() { hasBeenCalled = true; };
expect(controller.submittingForm).toBe(true);
userRegister.reject({});
scope.$apply();
expect(hasBeenCalled).toBe(true);
expect(controller.submittingForm).toBe(false);
});


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ describe('userRegistrationForm', function() {
element = angular.element('<user-registration-form/>');
inject(function ($rootScope, $compile) {
rootScope = $rootScope;
//$compile(element)(rootScope);
rootScope.$digest();
$compile(element)(rootScope);
scope = $rootScope.$new();
});
});

it('invoke directive', function() {
rootScope.$digest();
scope.model = { key: 'key'};
scope.$digest();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ <h3 class="usa-alert-heading">Account Created</h3>
<p class="usa-alert-text">Your account was created, please verify that your email address is <strong>{{vm.registerdEmail}}</strong> by visiting the link in the email.</p>
</div>
</div>
<div class="usa-alert usa-alert-error" role="alert" ng-show="vm.generalRegistrationError">
<div class="usa-alert-body">
<p class="usa-alert-text">An error occurred while connecting to the server. Please try again later if the error persists.</p>
</div>
</div>
<div class="createAcct">
<h2>Create an Account</h2>
<div ng-class="vm.einError || vm.einRequired || vm.invalidEin ? 'usa-input-error' : ''">
Expand Down Expand Up @@ -109,7 +114,10 @@ <h3 class="usa-alert-heading">Passwords must</h3>
title="reCaptcha"
></div>
</div>
<div class="regbtn"><button type="submit">Register</button></div>
<div class="regbtn">
<button type="submit" ng-show="!vm.submittingForm">Register</button>
<button type="button" ng-show="vm.submittingForm" class='usa-button-active'><span class="loading-blue" ng-show="vm.submittingForm"></span>Loading</button>
</div>
</div>
</form>
<form ng-show="vm.isEmailVerificationRequest">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,76 @@ describe('responsesService', function() {

var responses;

beforeEach(inject(function($injector, _$rootScope_, _$q_) {
beforeEach(inject(function($injector, _$rootScope_, _$q_, _$httpBackend_, responsesService, _env) {
$q = _$q_;
$rootScope = _$rootScope_;
deferred = _$q_.defer();
responses = $injector.get('responsesService');
mockResponsesService = responsesService;
$httpBackend = _$httpBackend_;
env = _env;

changePassword = $q.defer();
spyOn(mockApiService, 'changePassword').and.returnValue(changePassword.promise);
}));

it('getQuestionResponses should resolve promise', function () {
it('getQuestionResponses should reject promise', function () {

var questionKeys = [ 'TestResponseService' ];
var something;
deferred.resolve('Returned OK!');
deferred = responses.getQuestionResponses(questionKeys);
deferred = mockResponsesService.getQuestionResponses(questionKeys);

expect(deferred.resolve).toEqual(undefined);
});

it('getQuestionResponses should reject promise', function () {
var isResolved;
var result;
mockResponsesService.getQuestionResponses().then(undefined, function (error) {
result = error.data;
isResolved = false;
});

var questionKeys = [ 'TestResponseService' ];
deferred.reject('There has been an Error!');
$httpBackend.expectGET(env.api_url + '/api/Response').respond(400, 'value');
$httpBackend.flush();
expect(isResolved).toEqual(false);
expect(result).toEqual('value');
});

deferred = responses.getQuestionResponses(questionKeys);
it('getQuestionResponses should resolve promise', function () {
var isResolved;
var result;
mockResponsesService.getQuestionResponses().then(function (data) {
result = data;
isResolved = true;
});

expect(deferred.reject).toBe(undefined);
$httpBackend.expectGET(env.api_url + '/api/Response').respond(200, [{"id":1,"questionKey":"ApplicationType","display":"Initial Application","subDisplay":null,"otherValueKey":null,"isActive":true}]);
$httpBackend.flush();

// load cached values
mockResponsesService.getQuestionResponses().then(function (data) {
result = data;
isResolved = true;
});
expect(isResolved).toEqual(true);
});


});
it('getQuestionResponses should resolve promise, question array', function () {
var isResolved;
var result;
mockResponsesService.getQuestionResponses([]).then(function (data) {
result = data;
isResolved = true;
});

$httpBackend.expectGET(env.api_url + '/api/Response').respond(200, [{"id":1,"questionKey":"ApplicationType","display":"Initial Application","subDisplay":null,"otherValueKey":null,"isActive":true}]);
$httpBackend.flush();
expect(isResolved).toEqual(true);
});



});

3 changes: 3 additions & 0 deletions DOL.WHD.Section14c.Web/src/styles/defaults.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
$color-primary: #224687 !default;
$color-primary-darker: #1E4072 !default;
$color-primary-darkest: #183560 !default;
Loading

0 comments on commit 85970aa

Please sign in to comment.