From b3915b7f9011110dd888da425a1f6712f134fed1 Mon Sep 17 00:00:00 2001 From: David Baldwynn Date: Wed, 20 Sep 2017 20:53:50 -0700 Subject: [PATCH] added cache --- app/controllers/forms.server.controller.js | 59 ++++++-- app/models/form.server.model.js | 2 + app/routes/forms.server.routes.js | 5 +- config/express.js | 7 + package.json | 1 + .../forms/admin/directives/HeaderController | 140 ------------------ .../edit-submissions-form.client.directive.js | 37 +++-- 7 files changed, 77 insertions(+), 174 deletions(-) delete mode 100644 public/modules/forms/admin/directives/HeaderController diff --git a/app/controllers/forms.server.controller.js b/app/controllers/forms.server.controller.js index eb01c69d..90c1beed 100644 --- a/app/controllers/forms.server.controller.js +++ b/app/controllers/forms.server.controller.js @@ -102,7 +102,6 @@ exports.listSubmissions = function(req, res) { }); } res.json(_submissions); - }); }; @@ -162,14 +161,6 @@ exports.read = function(req, res) { } }; -/** - * Upload temp file for submissions - */ -exports.uploadTemp = function(req, res) { - //Send uploaded file data back to form - res.json(req.file); -}; - /** * Show the current form for rendering form live */ @@ -181,9 +172,6 @@ var readForRender = exports.readForRender = function(req, res) { }); } - //Remove extraneous fields from form object - delete newForm.submissions; - delete newForm.analytics; delete newForm.admin; if(!newForm.startPage.showStart){ @@ -267,7 +255,12 @@ exports.list = function(req, res) { var searchObj = {admin: req.user}; if(req.user.isAdmin()) searchObj = {}; - Form.find(searchObj).sort('-created').populate('admin.username', 'admin._id').exec(function(err, forms) { + Form.find(searchObj) + .desc('created') + .select('title', 'language', 'submissions', 'admin', 'isLive') + .populate('admin.username', 'admin._id') + .lean() + .exec(function(err, forms) { if (err) { res.status(400).send({ message: errorHandler.getErrorMessage(err) @@ -287,7 +280,45 @@ exports.formByID = function(req, res, next, id) { message: 'Form is invalid' }); } - Form.findById(id).populate('admin').populate('submissions').exec(function(err, form) { + Form.findById(id) + .populate('admin') + .populate('submissions') + .exec(function(err, form) { + if (err) { + return next(err); + } else if (!form || form === null) { + res.status(404).send({ + message: 'Form not found' + }); + } + else { + //Remove sensitive information from User object + var _form = form; + _form.admin.password = null; + _form.admin.salt = null; + _form.provider = null; + + req.form = _form; + return next(); + } + }); +}; + +/** + * FastForm middleware + */ +exports.formByIDFast = function(req, res, next, id) { + if (!mongoose.Types.ObjectId.isValid(id)) { + return res.status(400).send({ + message: 'Form is invalid' + }); + } + Form.findById(id) + .select('title', 'language', 'form_fields', 'startPage', 'endPage', 'hideFooter', 'isLive', 'design', 'admin', 'analytics.gaCode') + .populate() + .cache() + .lean() + .exec(function(err, form) { if (err) { return next(err); } else if (!form || form === null) { diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js index 8f884061..58cf9e7c 100644 --- a/app/models/form.server.model.js +++ b/app/models/form.server.model.js @@ -435,5 +435,7 @@ FormSchema.pre('save', function (next) { }); }); +FormSchema.index({created: 1}); + mongoose.model('Form', FormSchema); diff --git a/app/routes/forms.server.routes.js b/app/routes/forms.server.routes.js index 949d39f2..23c54ae6 100644 --- a/app/routes/forms.server.routes.js +++ b/app/routes/forms.server.routes.js @@ -41,6 +41,9 @@ module.exports = function(app) { .get(auth.isAuthenticatedOrApiKey, forms.hasAuthorization, forms.listSubmissions) .delete(auth.isAuthenticatedOrApiKey, forms.hasAuthorization, forms.deleteSubmissions); - // Finish by binding the form middleware + // Slower formId middleware app.param('formId', forms.formByID); + + // Fast formId middleware + app.param('formIdFast', forms.formByIDFast); }; diff --git a/config/express.js b/config/express.js index 0d5de8a5..367f53b0 100755 --- a/config/express.js +++ b/config/express.js @@ -26,6 +26,13 @@ var fs = require('fs-extra'), var mongoose = require('mongoose'); +var cacheOpts = { + max:1000, + maxAge:1000*60 +}; + +require('mongoose-cache').install(mongoose, cacheOpts) + /** * Configure Socket.io */ diff --git a/package.json b/package.json index 6e324668..1be945e0 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "method-override": "~2.3.0", "mkdirp": "^0.5.1", "mongoose": "~4.4.19", + "mongoose-cache": "^0.1.5", "mongoose-utilities": "~0.1.1", "morgan": "~1.8.1", "multer": "^1.3.0", diff --git a/public/modules/forms/admin/directives/HeaderController b/public/modules/forms/admin/directives/HeaderController deleted file mode 100644 index aedbae66..00000000 --- a/public/modules/forms/admin/directives/HeaderController +++ /dev/null @@ -1,140 +0,0 @@ -HeaderController -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 39 SUCCESS (0 secs / 0.077 secs) -LOG: '$scope.myform' -LOG: '$scope.myform' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 39 SUCCESS (0 secs / 0.077 secs) -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33'LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 39 SUCCESS (0 secs / 0.077 secs) - AdminForm Controller Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 2 of 39 SUCCESS (0 secs / 0.106 secs) -LOG: '$scope.myform' -LOG: '$scope.myform' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 2 of 39 SUCCESS (0 secs / 0.106 secs) -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33'LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 2 of 39 SUCCESS (0 secs / 0.106 secs) -LOG: 'form deleted successfully' -LOG: 'form deleted successfully' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 2 of 39 SUCCESS (0 secs / 0.106 secs) - ✔ $scope.removeCurrentForm() with valid form data should send a DELETE request with PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 3 of 39 SUCCESS (0 secs / 0.131 secs) -LOG: '$scope.myform' -LOG: '$scope.myform' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 3 of 39 SUCCESS (0 secs / 0.131 secs) -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33'LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{visitors: []}, submissions: [], _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 3 of 39 SUCCESS (0 secs / 0.131 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 4 of 39 SUCCESS (0 secs / 0.15 secs) -LOG: '$scope.myform' -LOG: '$scope.myform' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 4 of 39 SUCCESS (0 secs / 0.15 secs) -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{}, _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{}, _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407aLOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{}, _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 4 of 39 SUCCESS (0 secs / 0.15 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 5 of 39 SUCCESS (0 secs / 0.165 secs) -LOG: '$scope.myform' -LOG: '$scope.myform' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 5 of 39 SUCCESS (0 secs / 0.165 secs) -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{}, _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -LOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{}, _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407aLOG: Object{title: 'Form Title', admin: 'ed873933b1f1dea0ce12fab9', language: 'english', form_fields: [Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}, Object{fieldType: ..., title: ..., fieldValue: ..., deletePreserved: ..., _id: ...}], analytics: Object{}, _id: '525a8422f6d0f87f0e407a33', id: '525a8422f6d0f87f0e407a33'} -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 5 of 39 SUCCESS (0 secs / 0.165 secs) -LOG: 'Modal dismissed at: Wed Sep 20 2017 18:01:37 GMT-0700 (PDT)' -LOG: 'Modal dismissed at: Wed Sep 20 2017 18:01:37 GMT-0700 (PDT)' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 5 of 39 SUCCESS (0 secs / 0.165 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 6 of 39 SUCCESS (0 secs / 0.181 secs) -LOG: {} -LOG: {} -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 6 of 39 SUCCESS (0 secs / 0.181 secs) - ListForms Controller Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 7 of 39 SUCCESS (0 secs / 0.196 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 8 of 39 SUCCESS (0 secs / 0.207 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 9 of 39 SUCCESS (0 secs / 0.218 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 10 of 39 SUCCESS (0 secs / 0.229 secs) -LOG: {} -LOG: {} -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 10 of 39 SUCCESS (0 secs / 0.229 secs) - SubmitForm Controller Tests - ✖ on controller instantiation it should populate $scope.myform with current Form -PhantomJS 2.1.1 (Mac OS X 0.0.0) SubmitForm Controller Tests on controller instantiation it should populate $scope.myform with current Form FAILED - TypeError: undefined is not a constructor (evaluating 'expect( scope.myform ).toEqualData(sampleForm)') (line 151) - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:151:48 - invoke@/Users/admin/Documents/tellform/public/lib/angular/angular.js:4570:22 - workFn@/Users/admin/Documents/tellform/public/lib/angular-mocks/angular-mocks.js:2524:26 - inject@/Users/admin/Documents/tellform/public/lib/angular-mocks/angular-mocks.js:2493:28 - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:140:100 - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:5:13 - global code@/Users/admin/Documents/tellform/public/modules/forms/tests/unit/contPhantomJS 2.1.1 (Mac OS X 0.0.0) SubmitForm Controller Tests on controller instantiation it should populate $scope.myform with current Form FAILED - TypeError: undefined is not a constructor (evaluating 'expect( scope.myform ).toEqualData(sampleForm)') (line 151) - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:151:48 - invoke@/Users/admin/Documents/tellform/public/lib/angular/angular.js:4570:22 - workFn@/Users/admin/Documents/tellform/public/lib/angular-mocks/angular-mocks.js:2524:26 - inject@/Users/admin/Documents/tellform/public/lib/angular-mocks/angular-mocks.js:2493:28 - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:140:100 - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:5:13 - global code@/Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:155:2 -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 11 of 39 (1 FAILED) (0 secs / 0.249 secs) - EditSubmissions Directive-Controller Tests - Form Table Methods -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 12 of 39 (1 FAILED) (0 secs / 0.436 secs) - ✔ $scope.isAtLeastOneChecked should return true when at least one checkbox is selePhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 13 of 39 (1 FAILED) (0 secs / 0.564 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 14 of 39 (1 FAILED) (0 secs / 0.645 secs) - EditForm Directive-Controller Tests - > Form Field > -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 15 of 39 (1 FAILED) (0 secs / 0.74 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 16 of 39 (1 FAILED) (0 secs / 0.805 secs) - ✔ $scope.duplicateField() should DUPLICATE a field and update $scope.myform.form_fPhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 17 of 39 (1 FAILED) (0 secs / 0.857 secs) - FieldIcon Directive Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 18 of 39 (1 FAILED) (0 secs / 0.88 secs) - Field Directive Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 19 of 39 (1 FAILED) (0 secs / 1.193 secs) - onFinishRender Directive Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 20 of 39 (1 FAILED) (0 secs / 1.218 secs) - ✔ should emit "ngRepeat Finished" and "ngRepeat Started" events on ng-repeat when atPhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 21 of 39 (1 FAILED) (0 secs / 1.237 secs) - SubmitForm Directive-Controller Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 22 of 39 (1 FAILED) (0 secs / 1.912 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 23 of 39 (1 FAILED) (0 secs / 2.462 secs) - CurrentForm Service Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 24 of 39 (1 FAILED) (0 secs / 2.472 secs) -20 09 2017 18:01:40.263:WARN [web-server]: 404: /users/me - TimeCounter Service Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 25 of 39 (1 FAILED) (0 secs / 2.487 secs) - Authentication Controller Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 26 of 39 (1 FAILED) (0 secs / 2.499 secs) - Auth Service Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 27 of 39 (1 FAILED) (0 secs / 2.508 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 28 of 39 (1 FAILED) (0 secs / 2.547 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 29 of 39 (1 FAILED) (0 secs / 2.557 secs) - ✔ Auth.ensureHasCurrentUser() should fetch most current user if it exists in $windowPhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 30 of 39 (1 FAILED) (0 secs / 2.564 secs) - Authorizer Service Tests - ✔ Authorizer.canAccess() should return expected values for 'admin' and 'user' accounPhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 31 of 39 (1 FAILED) (0 secs / 2.574 secs) - User Service Tests -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 32 of 39 (1 FAILED) (0 secs / 2.582 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 33 of 39 (1 FAILED) (0 secs / 2.589 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 34 of 39 (1 FAILED) (0 secs / 2.596 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 35 of 39 (1 FAILED) (0 secs / 2.606 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 36 of 39 (1 FAILED) (0 secs / 2.613 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 37 of 39 (1 FAILED) (0 secs / 2.624 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 38 of 39 (1 FAILED) (0 secs / 2.631 secs) -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 39 of 39 (1 FAILED) (0 secs / 2.639 secs) -LOG: 'User.getCurrent() err', 'User's session has expired' -LOG: 'User.getCurrent() err', 'User's session has expired' -PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 39 of 39 (1 FAILED) (2.067 secs / 2.639 secs) - -Finished in 2.067 secs / 2.639 secs - -SUMMARY: -✔ 38 tests completed -✖ 1 test failed - -FAILED TESTS: - SubmitForm Controller Tests - ✖ on controller instantiation it should populate $scope.myform with current Form - PhantomJS 2.1.1 (Mac OS X 0.0.0) - TypeError: undefined is not a constructor (evaluating 'expect( scope.myform ).toEqualData(sampleForm)') (line 151) - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:151:48 - invoke@/Users/admin/Documents/tellform/public/lib/angular/angular.js:4570:22 - workFn@/Users/admin/Documents/tellform/public/lib/angular-mocks/angular-mocks.js:2524:26 - inject@/Users/admin/Documents/tellform/public/lib/angular-mocks/angular-mocks.js:2493:28 - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:140:100 - /Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:5:13 - global code@/Users/admin/Documents/tellform/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js:155:2 \ No newline at end of file diff --git a/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js b/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js index c7368e0e..56d18bee 100644 --- a/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js +++ b/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js @@ -16,31 +16,31 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope', rows: [] }; - var submissions = $scope.myform.submissions || []; + var submissions = $scope.myform.submissions || []; - //Iterate through form's submissions - for(var i = 0; i < submissions.length; i++){ - for(var x = 0; x < submissions[i].form_fields.length; x++){ - if(submissions[i].form_fields[x].fieldType === 'dropdown'){ - submissions[i].form_fields[x].fieldValue = submissions[i].form_fields[x].fieldValue.option_value; - } - //var oldValue = submissions[i].form_fields[x].fieldValue || ''; - //submissions[i].form_fields[x] = _.merge(defaultFormFields, submissions[i].form_fields); - //submissions[i].form_fields[x].fieldValue = oldValue; - } - submissions[i].selected = false; + //Iterate through form's submissions + for(var i = 0; i < submissions.length; i++){ + for(var x = 0; x < submissions[i].form_fields.length; x++){ + if(submissions[i].form_fields[x].fieldType === 'dropdown'){ + submissions[i].form_fields[x].fieldValue = submissions[i].form_fields[x].fieldValue.option_value; } + //var oldValue = submissions[i].form_fields[x].fieldValue || ''; + //submissions[i].form_fields[x] = _.merge(defaultFormFields, submissions[i].form_fields); + //submissions[i].form_fields[x].fieldValue = oldValue; + } + submissions[i].selected = false; + } - $scope.table.rows = submissions; + $scope.table.rows = submissions; var initController = function(){ - Forms.get({ - formId: $stateParams.formId - }, function(form){ - $scope.myform = form; + $http({ + method: 'GET', + url: '/someUrl' + }).then(function successCallback(response) { var defaultFormFields = _.cloneDeep($scope.myform.form_fields); - var submissions = $scope.myform.submissions || []; + var submissions = response.data || []; //Iterate through form's submissions for(var i = 0; i < submissions.length; i++){ @@ -183,7 +183,6 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope', //Export selected submissions of Form $scope.exportSubmissions = function(type){ - angular.element('#table-submission-data').tableExport({type: type, escape:false}); };