mirror of
/repos/Prototyper.git
synced 2025-12-30 06:31:32 +01:00
210 lines
5.1 KiB
JavaScript
210 lines
5.1 KiB
JavaScript
'use strict';
|
|
//noinspection JSUnresolvedVariable
|
|
var libPath = process.env.PROTOTYPER_COV ? '../lib-cov' : '../lib';
|
|
var chai = require('chai');
|
|
chai.config.includeStack = true; // defaults to false
|
|
chai.config.showDiff = false; // defaults to false
|
|
var expect = chai.expect;
|
|
|
|
var rethinkData = require(libPath + '/rethinkData.js');
|
|
var config = {
|
|
debug: function () {
|
|
//console.log(arguments);
|
|
},
|
|
info: function () {
|
|
//console.log(arguments);
|
|
},
|
|
warn: function () {
|
|
//console.error(arguments);
|
|
},
|
|
error: function () {
|
|
//console.error(arguments);
|
|
}
|
|
};
|
|
|
|
describe('rethinkData', function () {
|
|
describe('getContent', function () {
|
|
|
|
var db = {
|
|
tableList: function(){
|
|
return this;
|
|
},
|
|
contains: function(){
|
|
return this;
|
|
},
|
|
do: function(){
|
|
return this;
|
|
},
|
|
run: function(c,callback){
|
|
return callback(new Error());
|
|
}
|
|
};
|
|
var shareModel = {};
|
|
var option_list = [
|
|
{}, // no collection
|
|
{query: 'q'}, // no collection
|
|
{collection: 'test_error'}, // bad collection
|
|
{collection: 'col'}, // no query
|
|
{
|
|
collection: 'no_hex',
|
|
query: {id: 'id'} // not a hexString
|
|
},
|
|
{
|
|
collection: 'no_col', // trigger findOne error
|
|
query: {id: '123456789012345678901234'}
|
|
},
|
|
{
|
|
collection: 'col', // trigger null result
|
|
query: {id: '234567890123456789012345'}
|
|
},
|
|
{
|
|
collection: 'col', // trigger '' result
|
|
query: {id: '345678901234567890123456'}
|
|
},
|
|
{
|
|
collection: 'ok', // trigger 'ok' result
|
|
query: {id: '456789012345678901234567'}
|
|
}
|
|
];
|
|
var dataInstance = rethinkData(config, db, 'ok', shareModel);
|
|
var i;
|
|
|
|
function testArguments(options) {
|
|
return function (done) {
|
|
dataInstance.getMongoContent(options, function (err, result) {
|
|
if (result === 'ok') {
|
|
expect(result).to.equal('ok');
|
|
expect(err).to.not.be.ok;
|
|
done();
|
|
} else {
|
|
expect(err).to.be.instanceOf(Error);
|
|
expect(result).to.not.be.ok;
|
|
done();
|
|
}
|
|
});
|
|
};
|
|
}
|
|
|
|
for (i = 0; i < option_list.length; i += 1) {
|
|
it('should handle arguments correctly ' + JSON.stringify(option_list[i]),
|
|
testArguments(option_list[i])
|
|
);
|
|
}
|
|
});
|
|
|
|
describe('getContentAttribute', function () {
|
|
var ok = {
|
|
id: '345678901234567890123456',
|
|
parent: '456789012345678901234567',
|
|
name: 'test.content_attribute'
|
|
};
|
|
function findOne(q, cb) {
|
|
if (q._id && q._id.toString() === '123456789012345678901234') {
|
|
return cb(null, {
|
|
id: '123456789012345678901234',
|
|
name: 'test',
|
|
error_attribute: {
|
|
guid: '234567890123456789012345'
|
|
},
|
|
content_attribute: {
|
|
guid: '345678901234567890123456'
|
|
}
|
|
});
|
|
}
|
|
if (q.id && q.id === '234567890123456789012345') {
|
|
return cb(new Error(q));
|
|
}
|
|
if (q.id && q.id === '345678901234567890123456') {
|
|
return cb(null, ok);
|
|
}
|
|
if (q.id && q.id === '456789012345678901234567') {
|
|
return cb(null, {
|
|
id: '456789012345678901234567',
|
|
name: 'test'
|
|
});
|
|
}
|
|
if (q.parent && q.parent.toString() === '456789012345678901234567') {
|
|
if (q.name === 'test.content_attribute'){
|
|
return cb(null, ok);
|
|
} else {
|
|
return cb(new Error(q));
|
|
}
|
|
}
|
|
throw new Error('fail:' + JSON.stringify(arguments));
|
|
}
|
|
|
|
var col = {findOne: findOne};
|
|
var db = {
|
|
tableList: function(){
|
|
return this;
|
|
},
|
|
contains: function(){
|
|
return this;
|
|
},
|
|
do: function(){
|
|
return this;
|
|
},
|
|
run: function(c,callback){
|
|
return callback(new Error());
|
|
}
|
|
};
|
|
var shareModel = {};
|
|
var option_list = [
|
|
{}, // no collection
|
|
{query: 'q'}, // no collection
|
|
{collection: 'col'}, // no query
|
|
{
|
|
collection: 'no_attr',
|
|
query: {id: '123456789012345678901234'} // no attribute
|
|
},
|
|
{
|
|
collection: 'col', // trigger null result
|
|
query: {id: '123456789012345678901234'},
|
|
attribute: 'error_attribute'
|
|
},
|
|
{
|
|
collection: 'ok', // trigger 'ok' result
|
|
query: {id: '123456789012345678901234'},
|
|
attribute: 'content_attribute'
|
|
|
|
},
|
|
{
|
|
collection: 'col', // trigger error result
|
|
query: {id: '456789012345678901234567'},
|
|
attribute: 'error_attribute'
|
|
},
|
|
{
|
|
collection: 'ok', // trigger 'ok' result
|
|
query: {id: '456789012345678901234567'},
|
|
attribute: 'content_attribute'
|
|
}
|
|
];
|
|
var mongoDataInstance = rethinkData(config, db, shareModel);
|
|
var i;
|
|
|
|
function testArguments(options) {
|
|
return function (done) {
|
|
mongoDataInstance.getMongoAttribute(options, function (err, result) {
|
|
if (options.collection === 'ok') {
|
|
//console.log('result',result,'err',err,'coll',coll);
|
|
expect(result).to.equal(ok);
|
|
expect(err).to.not.be.ok;
|
|
done();
|
|
} else {
|
|
//console.log('err',err);
|
|
expect(err).to.be.instanceOf(Error);
|
|
expect(result).to.not.be.ok;
|
|
done();
|
|
}
|
|
});
|
|
};
|
|
}
|
|
|
|
for (i = 0; i < option_list.length; i += 1) {
|
|
it('should handle arguments correctly ' + JSON.stringify(option_list[i]),
|
|
testArguments(option_list[i])
|
|
);
|
|
}
|
|
});
|
|
});
|