diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js index 2a75816d..c9997b01 100644 --- a/app/models/form.server.model.js +++ b/app/models/form.server.model.js @@ -280,22 +280,6 @@ FormSchema.plugin(mUtilities.timestamp, { useVirtual: false }); -var _original; - -function getDeletedIndexes(needle, haystack){ - var deletedIndexes = []; - - if(haystack.length > 0){ - for(var i = 0; i < needle.length; i++){ - if(haystack.indexOf(needle[i]) === -1){ - deletedIndexes.push(i); - } - } - } - return deletedIndexes; -} - - FormSchema.pre('save', function (next) { switch(this.language){ case 'spanish': @@ -317,14 +301,39 @@ FormSchema.pre('save', function (next) { next(); }); +function getDeletedIndexes(needle, haystack){ + var deletedIndexes = []; + + if(haystack.length > 0){ + for(var i = 0; i < needle.length; i++){ + if(haystack.indexOf(needle[i]) === -1){ + deletedIndexes.push(i); + } + } + } + return deletedIndexes; +} + +function formFieldsAllHaveIds(form_fields){ + for(var i=0; i 0 ){ var modifiedSubmissions = []; @@ -355,23 +361,21 @@ FormSchema.pre('save', function (next) { function (deletedIdIndex, key, cb_id) { var deleted_id = old_ids[deletedIdIndex]; - //Find FormSubmissions that contain field with _id equal to 'deleted_id' FormSubmission. - find({ form: that._id, admin: that.admin, form_fields: {$elemMatch: {submissionId: deleted_id} } }). + find({ form: that, form_fields: {$elemMatch: {globalId: deleted_id} } }). exec(function(err, submissions){ if(err) { return cb_id(err); - } - - //Delete field if there are no submission(s) found + } + + //Preserve fields that have at least one submission if (submissions.length) { //Add submissions modifiedSubmissions.push.apply(modifiedSubmissions, submissions); } return cb_id(null); - }); }, function (err) { @@ -383,29 +387,33 @@ FormSchema.pre('save', function (next) { //Iterate through all submissions with modified form_fields async.forEachOfSeries(modifiedSubmissions, function (submission, key, callback) { - //Iterate through ids of deleted fields - for (i = 0; i < deletedIds.length; i++) { + var submission_form_fields = submission.toObject().form_fields; + var currentform_form_fields = that.toObject().form_fields; - var index = _.findIndex(submission.form_fields, function (field) { - var tmp_id = field._id + ''; + //Iterate through ids of deleted fields + for (var i = 0; i < deletedIds.length; i++) { + var index = _.findIndex(submission_form_fields, function (field) { + var tmp_id = field.globalId + ''; return tmp_id === old_ids[deletedIds[i]]; }); - var deletedField = submission.form_fields[index]; + var deletedField = submission_form_fields[index]; //Hide field if it exists if (deletedField) { //Delete old form_field - submission.form_fields.splice(index, 1); + submission_form_fields.splice(index, 1); deletedField.deletePreserved = true; //Move deleted form_field to start - submission.form_fields.unshift(deletedField); - that.form_fields.unshift(deletedField); + submission_form_fields.unshift(deletedField); + currentform_form_fields.unshift(deletedField); } } + submission.form_fields = submission_form_fields; + that.form_fields = currentform_form_fields; submission.save(function (saveErr) { return callback(saveErr); @@ -413,13 +421,14 @@ FormSchema.pre('save', function (next) { }, function (err) { return cb(err); }); - } ); + } else { + return cb(null); } + } else { return cb(null); } - return cb(null); }], function(err, results){ next(err); diff --git a/app/models/form_field.server.model.js b/app/models/form_field.server.model.js index 6509b16a..8271e5aa 100644 --- a/app/models/form_field.server.model.js +++ b/app/models/form_field.server.model.js @@ -10,6 +10,9 @@ var mongoose = require('mongoose'), Schema = mongoose.Schema, LogicJumpSchema = require('./logic_jump.server.model'); +const UIDGenerator = require('uid-generator'); +const uidgen3 = new UIDGenerator(256, UIDGenerator.BASE62); + var FieldOptionSchema = new Schema({ option_id: { type: Number @@ -61,6 +64,9 @@ function BaseFieldSchema(){ Schema.apply(this, arguments); this.add({ + globalId: { + type: String, + }, isSubmission: { type: Boolean, default: false @@ -193,6 +199,9 @@ FormFieldSchema.pre('save', function(next) { if(this.logicJump && this.logicJump.fieldA) { if(this.logicJump.jumpTo === '') delete this.logicJump.jumpTo; } + if(!this.globalId){ + this.globalId = uidgen3.generateSync() + } next(); }); diff --git a/app/tests/form_submission.model.test.js b/app/tests/form_submission.model.test.js index c5b43b24..420ab915 100644 --- a/app/tests/form_submission.model.test.js +++ b/app/tests/form_submission.model.test.js @@ -149,7 +149,6 @@ describe('FormSubmission Model Unit Tests:', function() { mySubmission.save(function(err, submission) { should.not.exist(err); should.exist(submission); - done(); }); }); @@ -187,7 +186,7 @@ describe('FormSubmission Model Unit Tests:', function() { //Create Submission mySubmission = new FormSubmission({ - form_fields: sampleSubmission, + form_fields: _.merge(sampleSubmission, myForm.form_fields), admin: user, form: myForm, timeElapsed: 17.55 @@ -200,7 +199,6 @@ describe('FormSubmission Model Unit Tests:', function() { }); - /* it('should preserve deleted form_fields that have submissions without any problems', function(done) { var old_fields = myForm.toObject().form_fields; @@ -214,17 +212,18 @@ describe('FormSubmission Model Unit Tests:', function() { should.not.exist(err); should.exist(_form.form_fields); - var actual_fields = _.deepOmit(_form.toObject().form_fields, ['lastModified', 'created', '_id']); - old_fields = _.deepOmit(old_fields, ['lastModified', 'created', '_id']); + var actual_fields = _.deepOmit(_form.toObject().form_fields, ['deletePreserved', 'globalId', 'lastModified', 'created', '_id', 'submissionId']); + old_fields = _.deepOmit(old_fields, ['deletePreserved', 'globalId', 'lastModified', 'created', '_id', 'submissionId']); - should.deepEqual(JSON.stringify(actual_fields), JSON.stringify(old_fields), 'old form_fields not equal to newly saved form_fields'); + should.deepEqual(actual_fields, old_fields, 'old form_fields not equal to newly saved form_fields'); done(); }); }); - // + it('should delete \'preserved\' form_fields whose submissions have been removed without any problems', function(done) { var old_fields = myForm.toObject().form_fields; + old_fields.splice(0,1); var new_form_fields = _.clone(myForm.toObject().form_fields); new_form_fields.splice(0, 1); @@ -240,16 +239,9 @@ describe('FormSubmission Model Unit Tests:', function() { should.deepEqual(JSON.stringify(actual_fields), JSON.stringify(old_fields)); //'old form_fields not equal to newly saved form_fields'); done(); - - // //Remove submission - // mySubmission.remove(function(err){ - // myForm.submissions.should.have.length(0); - // myForm.form_fields.should.not.containDeep(old_fields[0]); - // done(); - // }); }); }); - */ + afterEach(function(done){ mySubmission.remove(function(){ done(); diff --git a/gruntfile.js b/gruntfile.js index d11ddf86..52da56c5 100755 --- a/gruntfile.js +++ b/gruntfile.js @@ -210,7 +210,8 @@ module.exports = function(grunt) { reporter: 'spec', quiet: false, require: 'server.js', - ui: 'bdd' + ui: 'bdd', + debug: true } }, karma: { diff --git a/package.json b/package.json index edf504f3..dd687e70 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "socket.io": "^1.4.6", "socket.io-redis": "^1.0.0", "swig": "~1.4.1", + "uid-generator": "^0.1.1", "uuid-token-generator": "^0.5.0", "wildcard-subdomains": "github:tellform/wildcard-subdomains", "winston": "^2.3.1", diff --git a/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js b/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js index 2e0363f5..b583e2d1 100644 --- a/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js +++ b/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js @@ -86,9 +86,7 @@ scope = el.isolateScope() || el.scope(); scope.update = function(updateImmediately, data, isDiffed, refreshAfterUpdate, cb){ - if(cb){ - cb(); - } + if(cb) cb(); }; })); @@ -153,53 +151,5 @@ }); }); - /* - describe('> Form Field Button >',function(){ - - it('$scope.addButton() should ADD a button to $scope.myform.startPage.buttons', function() { - - var expectedStartPageBtn = { - bgColor:'#ddd', - color:'#ffffff', - text: 'Button' - }; - - //Run controller methods - scope.addButton(); - var actualStartPageBtn = _.cloneDeep(_.last(scope.myform.startPage.buttons)); - delete actualStartPageBtn._id; - - expect(scope.myform.startPage.buttons.length).toEqual(sampleForm.startPage.buttons.length+1); - expect(actualStartPageBtn).toEqualData(expectedStartPageBtn); - }); - - it('$scope.deleteButton() should DELETE a button from $scope.myform.startPage.buttons', function() { - //Run controller methods - scope.deleteButton(scope.myform.startPage.buttons[0]); - - expect(scope.myform.startPage.buttons.length).toEqual(0); - }); - }); - - describe('> Form Field Option >',function(){ - it('$scope.addOption() should ADD a new option to a field.fieldOptions', function() { - var originalOptionLen = scope.myform.form_fields[1].fieldOptions.length; - - //Run controller methods - scope.addOption(1); - - expect(originalOptionLen+1).toEqual(scope.myform.form_fields[1].fieldOptions.length); - expect(scope.myform.form_fields[1].fieldOptions[0].option_title).toEqualData('Option 0'); - expect(scope.myform.form_fields[1].fieldOptions[0].option_value).toEqualData('Option 0'); - }); - - it('$scope.deleteOption() should DELETE remove option from field.fieldOptions', function() { - //Run controller methods - scope.deleteOption(1, scope.myform.form_fields[1].fieldOptions[0]); - - expect(scope.myform.form_fields[0].fieldOptions.length).toEqual(0); - expect(scope.myform.form_fields[0].fieldOptions[0]).not.toBeDefined(); - }); - });*/ }); }()); diff --git a/public/modules/forms/tests/unit/directives/field-icon.client.directive.test.js b/public/modules/forms/tests/unit/directives/field-icon.client.directive.test.js index 32784832..fbb89193 100644 --- a/public/modules/forms/tests/unit/directives/field-icon.client.directive.test.js +++ b/public/modules/forms/tests/unit/directives/field-icon.client.directive.test.js @@ -35,7 +35,7 @@ it('should be able render all field-icon types', inject(function($compile) { var currType, currClass; - + for(var i=0; i
{{item.name}}
')(scope); @@ -30,8 +29,6 @@ })); it('should emit "ngRepeat Finished" and "ngRepeat Started" events on ng-repeat when attr is not set to string', inject(function($compile, $rootScope) { - - // console.log(FormFields.types); scope.myfields = FormFields.types; $compile('
{{item.name}}
')(scope); diff --git a/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js b/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js index cdc09723..979d152b 100644 --- a/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js +++ b/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js @@ -169,7 +169,6 @@ expect(scope.myform.submitted).toBe(true); expect(scope.error).toEqual(''); }); - }); it('$scope.reloadForm() should reset and reload form', function(){ diff --git a/public/modules/users/tests/e2e/authentication.client.controller.test.js b/public/modules/users/tests/e2e/authentication.client.controller.test.js deleted file mode 100755 index bcdcb4c0..00000000 --- a/public/modules/users/tests/e2e/authentication.client.controller.test.js +++ /dev/null @@ -1,170 +0,0 @@ -// 'use strict'; - -// (function() { - - -// // Principal controller Spec for E2E Tests -// describe('AuthenticationController E2E Tests', function() { - -// describe('/signup should work for a unique username', function() { -// beforeEach(function() { -// var ptor = protractor.getInstance(); -// ptor.get('http://localhost:3000/#!/signup'); -// }); - -// it('should show the signup panel on page load', function() { -// expect($('section > section.row.auth > .col-md-12.text-center')).toEqual('Signup with your email'); -// }); - - -// //Jasmine it statement : What "it" will do. -// it('Verify that the user is logged in', function() { -// //Delete all cookies -// browser.driver.manage().deleteAllCookies(); -// //Enter UserName -// element.all(by.model('username')).get(0).sendKeys('abc@wingify.com'); -// //Enter Password -// element(by.model('password')).sendKeys('test'); -// //Click Submit button -// element(by.css('.login-form button[type="submit"]')).click(); -// //Wait for the current URL to change to welcome -// browser.driver.wait(function() { -// return browser.driver.getCurrentUrl().then(function(url) { -// return (/welcome/).test(url); -// }); -// }); -// var firstname = element(by.model('credentials.firstname')), -// lastname = element(by.model('credentials.lastname')), -// email = element(by.model('credentials.email')), -// password = element(by.model('credentials.password')); - -// email.sendKeys('admin@app.com'); -// firstname.sendKeys('admin_first'); -// lastname.sendKeys('admin_last'); -// password.sendKeys('1234'); - -// //Click signup button -// element(by.css('.btn.btn-large.btn-primary')).click().then(function () { -// expect(browser.getCurrentUrl()).toEqual('http://localhost:3000/#!/signup-success'); -// }); - - -// }); -// }); -// }); - -// // Principal controller Spec -// describe('AuthenticationController Unit Tests', function() { -// // Initialize global variables -// var AuthenticationController, -// scope, -// $httpBackend, -// $stateParams, -// $location; - -// 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)); - -// // 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, _$location_, _$stateParams_, _$httpBackend_) { -// // Set a new global scope -// scope = $rootScope.$new(); - -// // Point global variables to injected services -// $stateParams = _$stateParams_; -// $httpBackend = _$httpBackend_; -// $location = _$location_; - -// // Initialize the Principal controller -// AuthenticationController = $controller('AuthenticationController', { -// $scope: scope -// }); -// })); - - -// it('$scope.signin() should login with a correct user and password', function() { -// // Test expected GET request -// $httpBackend.when('POST', '/auth/signin').respond(200, 'Fred'); - -// scope.signin(); -// $httpBackend.flush(); - -// // Test scope value -// expect(scope.authentication.user).toEqual('Fred'); -// expect($location.url()).toEqual('/'); -// }); - -// it('$scope.signin() should fail to log in with nothing', function() { -// // Test expected POST request -// $httpBackend.expectPOST('/auth/signin').respond(400, { -// 'message': 'Missing credentials' -// }); - -// scope.signin(); -// $httpBackend.flush(); - -// // Test scope value -// expect(scope.error).toEqual('Missing credentials'); -// }); - -// it('$scope.signin() should fail to log in with wrong credentials', function() { -// // Foo/Bar combo assumed to not exist -// scope.authentication.user = 'Foo'; -// scope.credentials = 'Bar'; - -// // Test expected POST request -// $httpBackend.expectPOST('/auth/signin').respond(400, { -// 'message': 'Unknown user' -// }); - -// scope.signin(); -// $httpBackend.flush(); - -// // Test scope value -// expect(scope.error).toEqual('Unknown user'); -// }); - -// it('$scope.signup() should register with correct data', function() { -// // Test expected GET request -// scope.authentication.user = 'Fred'; -// $httpBackend.when('POST', '/auth/signup').respond(200, 'Fred'); - -// scope.signup(); -// $httpBackend.flush(); - -// // test scope value -// expect(scope.authentication.user).toBe('Fred'); -// expect(scope.error).toEqual(undefined); -// expect($location.url()).toBe('/'); -// }); - -// it('$scope.signup() should fail to register with duplicate Username', function() { -// // Test expected POST request -// $httpBackend.when('POST', '/auth/signup').respond(400, { -// 'message': 'Username already exists' -// }); - -// scope.signup(); -// $httpBackend.flush(); - -// // Test scope value -// expect(scope.error).toBe('Username already exists'); -// }); -// }); -// }()); \ No newline at end of file diff --git a/public/modules/users/tests/unit/controllers/authentication.client.controller.test.js b/public/modules/users/tests/unit/controllers/authentication.client.controller.test.js index ec2e1482..363f1f37 100644 --- a/public/modules/users/tests/unit/controllers/authentication.client.controller.test.js +++ b/public/modules/users/tests/unit/controllers/authentication.client.controller.test.js @@ -1,181 +1,181 @@ -// 'use strict'; +'use strict'; -// (function() { -// // Forms Controller Spec -// describe('Authentication Controller Tests', function() { -// // Initialize global variables -// var AuthenticationController, -// scope, -// $httpBackend, -// $stateParams, -// $location, -// $state; +(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 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 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 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, - // }; + 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) -// }; -// } -// }; -// } -// }); -// }); + // 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)); + // Load the main application module + beforeEach(module(ApplicationConfiguration.applicationModuleName)); -// beforeEach(module('stateMock')); + 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'); -// } + // 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; + }, + 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; -// } -// }; -// }); -// })); + 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; -// } -// }; -// }); -// })); + // 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'; + // 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_; + // Point global variables to injected services + $stateParams = _$stateParams_; + $httpBackend = _$httpBackend_; + $location = _$location_; + $state = _$state_; -// // $httpBackend.whenGET(/\.html$/).respond(''); -// $httpBackend.whenGET('/users/me/').respond(''); + // $httpBackend.whenGET(/\.html$/).respond(''); + $httpBackend.whenGET('/users/me/').respond(''); -// // Initialize the Forms controller. -// AuthenticationController = $controller('AuthenticationController', { $scope: scope }); -// })); + // Initialize the Forms controller. + AuthenticationController = $controller('AuthenticationController', { $scope: scope }); + })); -// it('$scope.signin should sigin in user with valid credentials', inject(function(Auth) { + 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); + //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(); + scope.abc = 'sampleCredentials'; + //Run Controller Logic to Test + scope.signin(); -// // $httpBackend.flush(); + // $httpBackend.flush(); -// // Test scope value -// // expect(Auth.ensureHasCurrentUser()).toEqualData(sampleUser); -// })); + // Test scope value + // expect(Auth.ensureHasCurrentUser()).toEqualData(sampleUser); + })); -// }); -// }()); \ No newline at end of file + }); +}()); \ No newline at end of file diff --git a/public/modules/users/tests/unit/services/auth.client.service.test.js b/public/modules/users/tests/unit/services/auth.client.service.test.js index 2cada679..d6417a92 100644 --- a/public/modules/users/tests/unit/services/auth.client.service.test.js +++ b/public/modules/users/tests/unit/services/auth.client.service.test.js @@ -65,7 +65,6 @@ })); it('Auth.getUserState() should fetch current user state', function() { - //Run Service Logic to Test Auth.login(sampleUser); var currUserState = Auth.getUserState();