UNPKG

alphascript-server

Version:

CRUD operations for mongo and other functionalities to get started quickly in any CMS project

89 lines (73 loc) 3.66 kB
var api = require('../../'); var Q = require('q'); var chai = require('chai'); var assert = chai.assert; var expect = chai.expect; var should = chai.should(); var chaiHttp = require('chai-http'); chai.use(chaiHttp); module.exports = function (app, callback) { var agent = chai.request.agent(app); agent.post('/api/session/login').send({ username: 'admin', password: '827ccb0eea8a706c4c34a16891f84e7b' }).then(function (req, res) { var promises = []; for (var entity in api.entityMap) { if (entity !== "simptom") continue; promises.push(test(agent, entity)); } Q.all(promises).then(function () { callback(); }, function (err) { callback(err); }); }); }; function test(agent, key) { var deferred = Q.defer(); var entity = api.entityMap[key]; entity.db = entity.db || "common"; agent.get('/api/' + key + '/list/' + entity.db).then(function (res) { if (res.statusCode !== 200) return deferred.reject(key + ".list: returned error http code"); console.log(key + ".list: OK"); var beforeAddItems = res.body; if (!(beforeAddItems instanceof Array)) return deferred.reject(key + ".list: does not return array"); if (!entity.dummy) return deferred.reject(key + ": no dummy data defined"); if (!entity.dummy.good) return deferred.reject(key + ": no good dummy data defined"); agent.post('/api/' + key + '/add/' + entity.db).send(entity.dummy.good).then(function (res) { if (res.statusCode !== 200) return deferred.reject(key + ".new: returned error http code"); console.log(key + ".new: OK"); var newItem = res.body; agent.get('/api/' + key + '/list/' + entity.db).then(function (res) { if (res.statusCode !== 200) return deferred.reject(key + ".list: returned error http code"); var afterAddItems = res.body; if (!(afterAddItems instanceof Array)) return deferred.reject(key + ".list: does not return array"); if (afterAddItems.length !== beforeAddItems.length + 1) return deferred.reject(key + ".new: did not add record to DB"); if (!(entity.dummy.bad instanceof Array)) return deferred.reject(key + ": no bad dummy data defined"); var promises = entity.dummy.bad.map(function (dummy) { return agent.post('/api/' + key + '/add/' + entity.db + "/" + newItem._id).send(dummy); }); Q.allSettled(promises).then(function (outputs) { outputs.forEach(function (output, i) { if (output.state === "rejected") console.log(key + ".edit (bad dummy " + i + "): " + output.reason.response.error.text); else console.log(key + ".edit (bad dummy " + i + "): should not have passed"); }); deferred.resolve(); }); }).catch(function (output) { deferred.reject(key + ".list: " + output.response.error.text); }); }).catch(function (output) { deferred.reject(key + ".new (good dummy): " + output.response.error.text); }); }).catch(function (output) { deferred.reject(key + ".list: " + output.response.error.text); }); return deferred.promise; } //router.post('/api/' + entityKey + '/add/:db/:id?', this.entity.redirectToDriver(entityKey, "edit")); //router.get('/api/' + entityKey + '/fetch/:db', this.entity.redirectToDriver(entityKey, "fetch")); //router.post('/api/' + entityKey + '/update/:db/:id', this.entity.redirectToDriver(entityKey, "update")); //router.get('/api/' + entityKey + '/remove/:db/:id', this.entity.redirectToDriver(entityKey, "remove")); //router.get('/api/' + entityKey + '/versions/:db/:id', this.entity.redirectToDriver(entityKey, "versions"));