From 72dc46d55123e709452b03f0fe9e31051075bc5c Mon Sep 17 00:00:00 2001 From: Oleg Lebedenko Date: Mon, 11 Jul 2016 08:38:49 +0300 Subject: [PATCH 1/2] Add test for controller Consultor etc. --- common.blocks/app/controllers/BrainTests.js | 2 +- common.blocks/app/controllers/User.js | 3 +- test/unit/controllers/Consultor1.js | 106 ++++++++++++++++++++ test/unit/controllers/Poems.js | 8 +- test/unit/controllers/brainTests.js | 2 +- test/unit/controllers/user.js | 4 +- 6 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 test/unit/controllers/Consultor1.js diff --git a/common.blocks/app/controllers/BrainTests.js b/common.blocks/app/controllers/BrainTests.js index 30340eb..c421d7f 100644 --- a/common.blocks/app/controllers/BrainTests.js +++ b/common.blocks/app/controllers/BrainTests.js @@ -39,7 +39,7 @@ BrainTests.getRandomQuestionForUser = function(db, userId, classNum) { return reject(); } - let r = Math.floor(Math.random() * (n <= 0 ? 0 : n - 1)); + var r = Math.floor(Math.random() * (n <= 0 ? 0 : n - 1)); db.models['brain-tests'].find({ class: classNum, diff --git a/common.blocks/app/controllers/User.js b/common.blocks/app/controllers/User.js index e0e19ae..6ebbec4 100644 --- a/common.blocks/app/controllers/User.js +++ b/common.blocks/app/controllers/User.js @@ -210,7 +210,8 @@ User.getByVKId = function(userModel, vkid) { * * @static */ -User.getById = function(userModel, id, fields = '_id,vkid,first_name,photo_100') { +User.getById = function(userModel, id, fields) { + fields = '_id,vkid,first_name,photo_100'; var deferred = vow.defer(); // TODO: переписать на выборку нужных полей из БД diff --git a/test/unit/controllers/Consultor1.js b/test/unit/controllers/Consultor1.js new file mode 100644 index 0000000..aab6bdb --- /dev/null +++ b/test/unit/controllers/Consultor1.js @@ -0,0 +1,106 @@ +var chai = require('chai'), + chaiAsPromised = require('chai-as-promised'); + +chai.use(chaiAsPromised); + +var assert = chai.assert, + _ = require('lodash'), + path = require('path'), + vow = require('vow'); + +var appDir = './common.blocks/app/', + models = require(path.resolve(appDir + 'models/')), + Consultor = require(path.resolve(appDir + 'controllers/Consultor')); + User = require(path.resolve(appDir + 'controllers/User')); + +models(function (err, db) { + if (err) throw err; + + db.sync(function (err) { + if (err) throw err; + + var VK_USER_ID = 100, + usersModel = db.models['users'], + consultorModel = db.models['s-consultor']; + + describe('Controller: Consultor', function () { + + before(function (done) { + this.timeout(10000); + User.deleteByVKId(usersModel, VK_USER_ID).then(function () { + done(); + }); + }); + beforeEach(function (done) { + this.timeout(10000); + consultorModel.find().remove(function () { + done(); + }); + }); + + describe('Create consultor', function () { + it('should create consultor', function () { + var defered = vow.defer(), + question = 'Test question one', + userId = 'a12345678901'; + + Consultor.create(consultorModel, question, userId) + .then(function (data) { + defered.resolve(data); + }); + + return assert.isFulfilled( + defered.promise(), + 'Should be resolved' + ); + }); + + it('should get all questions', function () { + var defered = vow.defer(), + question = 'Test question two'; + + User.createByVKId(usersModel, VK_USER_ID) + .then(function () { + User.getByVKId(usersModel, VK_USER_ID) + .then(function (data) { + defered.resolve(data); + Consultor.create(consultorModel, question, data[0]._id) + .then(function () { + Consultor.getAllQuestions(db) + .then(function(questions) { + defered.resolve(questions.length); + }); + }); + }); + }); + + return assert.eventually.lengthOf( + defered.promise(), + 1, + 'Should be equal 1' + ); + }); + + it('should find consultor by id', function () { + var defered = vow.defer(), + question = 'Test question three', + userId = 'a12345678901'; + + Consultor.create(consultorModel, question, userId) + .then(function (data) { + Consultor.getById(consultorModel, data._id) + .then(function (question) { + defered.resolve(!_.isEmpty(question)); + }); + }); + + return assert.eventually.ok( + defered.promise(), + 'Should be not empty' + ); + }); + }); + }); + run(); + }); +}); \ No newline at end of file diff --git a/test/unit/controllers/Poems.js b/test/unit/controllers/Poems.js index 4d6c4fd..b9783ed 100644 --- a/test/unit/controllers/Poems.js +++ b/test/unit/controllers/Poems.js @@ -2,14 +2,14 @@ var chai = require('chai'), chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); -let assert = chai.assert, +var assert = chai.assert, _ = require('lodash'), path = require('path'), express = require('express'), app = express(), vow = require('vow'); -let appDir = './common.blocks/app/', +var appDir = './common.blocks/app/', models = require(path.resolve(appDir + 'models/')), Poems = require(path.resolve(appDir + 'controllers/Poems')), Authors = require(path.resolve(appDir + 'controllers/Authors')); @@ -20,7 +20,7 @@ models(function (err, db) { db.sync(function (err) { if (err) throw err; - let pModel = db.models['poems'], + var pModel = db.models['poems'], aModel = db.models['authors']; describe('Controller: Poems', function () { @@ -54,7 +54,7 @@ models(function (err, db) { it('should create two line text in poem', function () { - let deferred = vow.defer(), + var deferred = vow.defer(), uId = 'b12345678902'; Authors.create(aModel, 'a12345678901', uId).then(a => { diff --git a/test/unit/controllers/brainTests.js b/test/unit/controllers/brainTests.js index d9d22c3..ed70edb 100644 --- a/test/unit/controllers/brainTests.js +++ b/test/unit/controllers/brainTests.js @@ -119,7 +119,7 @@ models(function (err, db) { questions.push(data._id); // Тест может только зарезолвится, если нет, то падает по таймауту - let interval = setInterval(() => { + var interval = setInterval(() => { BrainTests.getRandomQuestionForUser(db, userId, classNum) .then(function (data) { questions.push(data._id); diff --git a/test/unit/controllers/user.js b/test/unit/controllers/user.js index 77ecaa5..8cc50ee 100644 --- a/test/unit/controllers/user.js +++ b/test/unit/controllers/user.js @@ -3,14 +3,14 @@ var chai = require('chai'), chai.use(chaiAsPromised); -let assert = chai.assert, +var assert = chai.assert, _ = require('lodash'), path = require('path'), express = require('express'), app = express(), vow = require('vow'); -let appDir = './common.blocks/app/', +var appDir = './common.blocks/app/', utils = require(path.resolve(appDir + 'utils')), models = require(path.resolve(appDir + 'models/')), User = require(path.resolve(appDir + 'controllers/User')); From b11c0e26d8035a805f9972a2ebbd724742f5b512 Mon Sep 17 00:00:00 2001 From: Oleg Lebedenko Date: Tue, 12 Jul 2016 15:02:52 +0300 Subject: [PATCH 2/2] Cancel some changes and left one test for controller consultor.js --- common.blocks/app/controllers/BrainTests.js | 2 +- common.blocks/app/controllers/User.js | 3 +- test/unit/controllers/Consultor.js | 127 ++++++++++++++------ test/unit/controllers/Consultor1.js | 106 ---------------- test/unit/controllers/Poems.js | 8 +- test/unit/controllers/brainTests.js | 2 +- test/unit/controllers/user.js | 4 +- 7 files changed, 100 insertions(+), 152 deletions(-) delete mode 100644 test/unit/controllers/Consultor1.js diff --git a/common.blocks/app/controllers/BrainTests.js b/common.blocks/app/controllers/BrainTests.js index c421d7f..30340eb 100644 --- a/common.blocks/app/controllers/BrainTests.js +++ b/common.blocks/app/controllers/BrainTests.js @@ -39,7 +39,7 @@ BrainTests.getRandomQuestionForUser = function(db, userId, classNum) { return reject(); } - var r = Math.floor(Math.random() * (n <= 0 ? 0 : n - 1)); + let r = Math.floor(Math.random() * (n <= 0 ? 0 : n - 1)); db.models['brain-tests'].find({ class: classNum, diff --git a/common.blocks/app/controllers/User.js b/common.blocks/app/controllers/User.js index 6ebbec4..e0e19ae 100644 --- a/common.blocks/app/controllers/User.js +++ b/common.blocks/app/controllers/User.js @@ -210,8 +210,7 @@ User.getByVKId = function(userModel, vkid) { * * @static */ -User.getById = function(userModel, id, fields) { - fields = '_id,vkid,first_name,photo_100'; +User.getById = function(userModel, id, fields = '_id,vkid,first_name,photo_100') { var deferred = vow.defer(); // TODO: переписать на выборку нужных полей из БД diff --git a/test/unit/controllers/Consultor.js b/test/unit/controllers/Consultor.js index 154002c..aab6bdb 100644 --- a/test/unit/controllers/Consultor.js +++ b/test/unit/controllers/Consultor.js @@ -1,51 +1,106 @@ var chai = require('chai'), - chaiAsPromised = require('chai-as-promised'), - assert = chai.assert, - path = require('path'); + chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); -var appDir = path.resolve(__dirname, '../../../common.blocks/app'), - models = require(path.join(appDir, 'models')), - Consultor = require(path.join(appDir, 'controllers/Consultor')); +var assert = chai.assert, + _ = require('lodash'), + path = require('path'), + vow = require('vow'); -describe('Controller: Consultor', function () { +var appDir = './common.blocks/app/', + models = require(path.resolve(appDir + 'models/')), + Consultor = require(path.resolve(appDir + 'controllers/Consultor')); + User = require(path.resolve(appDir + 'controllers/User')); - var consultorModel; +models(function (err, db) { + if (err) throw err; - before(function() { - return new Promise((resolve, reject) => { - models(function (err, db) { - if (err) throw reject(err); + db.sync(function (err) { + if (err) throw err; - db.sync(function (err) { - if (err) throw reject(err); - resolve(db.models['s-consultor']); - }); + var VK_USER_ID = 100, + usersModel = db.models['users'], + consultorModel = db.models['s-consultor']; - }); - }).then((model) => consultorModel = model); - }); + describe('Controller: Consultor', function () { - beforeEach(function() { - return new Promise((resolve, reject) => { - consultorModel.find().remove(function(err) { - if (err) { - reject(err); - } - resolve(); + before(function (done) { + this.timeout(10000); + User.deleteByVKId(usersModel, VK_USER_ID).then(function () { + done(); + }); + }); + beforeEach(function (done) { + this.timeout(10000); + consultorModel.find().remove(function () { + done(); + }); }); - }); - }); - describe('create', function() { - it('should create question', function () { - var question = 'What\'s up?', - userId = 'a12345678901'; + describe('Create consultor', function () { + it('should create consultor', function () { + var defered = vow.defer(), + question = 'Test question one', + userId = 'a12345678901'; - return Consultor - .create(consultorModel, question, userId) - .then((data) => assert.equal(data.question, question)); + Consultor.create(consultorModel, question, userId) + .then(function (data) { + defered.resolve(data); + }); + + return assert.isFulfilled( + defered.promise(), + 'Should be resolved' + ); + }); + + it('should get all questions', function () { + var defered = vow.defer(), + question = 'Test question two'; + + User.createByVKId(usersModel, VK_USER_ID) + .then(function () { + User.getByVKId(usersModel, VK_USER_ID) + .then(function (data) { + defered.resolve(data); + Consultor.create(consultorModel, question, data[0]._id) + .then(function () { + Consultor.getAllQuestions(db) + .then(function(questions) { + defered.resolve(questions.length); + }); + }); + }); + }); + + return assert.eventually.lengthOf( + defered.promise(), + 1, + 'Should be equal 1' + ); + }); + + it('should find consultor by id', function () { + var defered = vow.defer(), + question = 'Test question three', + userId = 'a12345678901'; + + Consultor.create(consultorModel, question, userId) + .then(function (data) { + Consultor.getById(consultorModel, data._id) + .then(function (question) { + defered.resolve(!_.isEmpty(question)); + }); + }); + + return assert.eventually.ok( + defered.promise(), + 'Should be not empty' + ); + }); + }); }); + run(); }); -}); +}); \ No newline at end of file diff --git a/test/unit/controllers/Consultor1.js b/test/unit/controllers/Consultor1.js deleted file mode 100644 index aab6bdb..0000000 --- a/test/unit/controllers/Consultor1.js +++ /dev/null @@ -1,106 +0,0 @@ -var chai = require('chai'), - chaiAsPromised = require('chai-as-promised'); - -chai.use(chaiAsPromised); - -var assert = chai.assert, - _ = require('lodash'), - path = require('path'), - vow = require('vow'); - -var appDir = './common.blocks/app/', - models = require(path.resolve(appDir + 'models/')), - Consultor = require(path.resolve(appDir + 'controllers/Consultor')); - User = require(path.resolve(appDir + 'controllers/User')); - -models(function (err, db) { - if (err) throw err; - - db.sync(function (err) { - if (err) throw err; - - var VK_USER_ID = 100, - usersModel = db.models['users'], - consultorModel = db.models['s-consultor']; - - describe('Controller: Consultor', function () { - - before(function (done) { - this.timeout(10000); - User.deleteByVKId(usersModel, VK_USER_ID).then(function () { - done(); - }); - }); - beforeEach(function (done) { - this.timeout(10000); - consultorModel.find().remove(function () { - done(); - }); - }); - - describe('Create consultor', function () { - it('should create consultor', function () { - var defered = vow.defer(), - question = 'Test question one', - userId = 'a12345678901'; - - Consultor.create(consultorModel, question, userId) - .then(function (data) { - defered.resolve(data); - }); - - return assert.isFulfilled( - defered.promise(), - 'Should be resolved' - ); - }); - - it('should get all questions', function () { - var defered = vow.defer(), - question = 'Test question two'; - - User.createByVKId(usersModel, VK_USER_ID) - .then(function () { - User.getByVKId(usersModel, VK_USER_ID) - .then(function (data) { - defered.resolve(data); - Consultor.create(consultorModel, question, data[0]._id) - .then(function () { - Consultor.getAllQuestions(db) - .then(function(questions) { - defered.resolve(questions.length); - }); - }); - }); - }); - - return assert.eventually.lengthOf( - defered.promise(), - 1, - 'Should be equal 1' - ); - }); - - it('should find consultor by id', function () { - var defered = vow.defer(), - question = 'Test question three', - userId = 'a12345678901'; - - Consultor.create(consultorModel, question, userId) - .then(function (data) { - Consultor.getById(consultorModel, data._id) - .then(function (question) { - defered.resolve(!_.isEmpty(question)); - }); - }); - - return assert.eventually.ok( - defered.promise(), - 'Should be not empty' - ); - }); - }); - }); - run(); - }); -}); \ No newline at end of file diff --git a/test/unit/controllers/Poems.js b/test/unit/controllers/Poems.js index b9783ed..4d6c4fd 100644 --- a/test/unit/controllers/Poems.js +++ b/test/unit/controllers/Poems.js @@ -2,14 +2,14 @@ var chai = require('chai'), chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); -var assert = chai.assert, +let assert = chai.assert, _ = require('lodash'), path = require('path'), express = require('express'), app = express(), vow = require('vow'); -var appDir = './common.blocks/app/', +let appDir = './common.blocks/app/', models = require(path.resolve(appDir + 'models/')), Poems = require(path.resolve(appDir + 'controllers/Poems')), Authors = require(path.resolve(appDir + 'controllers/Authors')); @@ -20,7 +20,7 @@ models(function (err, db) { db.sync(function (err) { if (err) throw err; - var pModel = db.models['poems'], + let pModel = db.models['poems'], aModel = db.models['authors']; describe('Controller: Poems', function () { @@ -54,7 +54,7 @@ models(function (err, db) { it('should create two line text in poem', function () { - var deferred = vow.defer(), + let deferred = vow.defer(), uId = 'b12345678902'; Authors.create(aModel, 'a12345678901', uId).then(a => { diff --git a/test/unit/controllers/brainTests.js b/test/unit/controllers/brainTests.js index ed70edb..d9d22c3 100644 --- a/test/unit/controllers/brainTests.js +++ b/test/unit/controllers/brainTests.js @@ -119,7 +119,7 @@ models(function (err, db) { questions.push(data._id); // Тест может только зарезолвится, если нет, то падает по таймауту - var interval = setInterval(() => { + let interval = setInterval(() => { BrainTests.getRandomQuestionForUser(db, userId, classNum) .then(function (data) { questions.push(data._id); diff --git a/test/unit/controllers/user.js b/test/unit/controllers/user.js index 8cc50ee..77ecaa5 100644 --- a/test/unit/controllers/user.js +++ b/test/unit/controllers/user.js @@ -3,14 +3,14 @@ var chai = require('chai'), chai.use(chaiAsPromised); -var assert = chai.assert, +let assert = chai.assert, _ = require('lodash'), path = require('path'), express = require('express'), app = express(), vow = require('vow'); -var appDir = './common.blocks/app/', +let appDir = './common.blocks/app/', utils = require(path.resolve(appDir + 'utils')), models = require(path.resolve(appDir + 'models/')), User = require(path.resolve(appDir + 'controllers/User'));