mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-18 14:26:56 +00:00
187 lines
5.6 KiB
JavaScript
187 lines
5.6 KiB
JavaScript
'use strict';
|
|
|
|
var assert = require('assert');
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
var muk = require('muk');
|
|
|
|
|
|
var Index = require('../../../lib/index.js');
|
|
var instance = new Index();
|
|
instance.load();
|
|
|
|
think.APP_PATH = path.dirname(__dirname) + think.sep + 'testApp';
|
|
|
|
var Parse = think.safeRequire(path.resolve(__dirname, '../../../lib/adapter/db/_parse_mongo.js'));
|
|
|
|
describe('adapter/db/_parse_mongo', function(){
|
|
it('init', function(){
|
|
var instance = new Parse();
|
|
var keys = Object.keys(instance.comparison).sort();
|
|
assert.deepEqual(keys, ["!=","<","<=","<>","=",">",">=","EGT","ELT","EQ","GT","IN","LT","NEQ","NOTIN", "OR"]);
|
|
})
|
|
it('parseField, empty', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseField();
|
|
assert.deepEqual(data, {})
|
|
})
|
|
it('parseField, string', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseField('name, title');
|
|
assert.deepEqual(data, {name: 1, title: 1})
|
|
})
|
|
it('parseField, string, reverse', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseField('name, title', true);
|
|
assert.deepEqual(data, {name: 0, title: 0})
|
|
})
|
|
it('parseField, object', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseField({name: 1, title: 1});
|
|
assert.deepEqual(data, {name: 1, title: 1})
|
|
})
|
|
it('parseField, object, reverse', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseField({name: 1, title: 1}, true);
|
|
assert.deepEqual(data, {name: 0, title: 0})
|
|
})
|
|
it('parseLimit, empty', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseLimit();
|
|
assert.deepEqual(data, [])
|
|
})
|
|
it('parseLimit, number', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseLimit(10);
|
|
assert.deepEqual(data, [0, 10])
|
|
})
|
|
it('parseLimit, string', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseLimit('10');
|
|
assert.deepEqual(data, [0, 10])
|
|
})
|
|
it('parseLimit, string, skip', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseLimit('10, 20');
|
|
assert.deepEqual(data, [10, 20])
|
|
})
|
|
it('parseOrder, empty', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder();
|
|
assert.deepEqual(data, {})
|
|
})
|
|
it('parseOrder, natural', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder(true);
|
|
assert.deepEqual(data, {$natural: true})
|
|
})
|
|
it('parseOrder, natural 1', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder('natural');
|
|
assert.deepEqual(data, {$natural: true})
|
|
})
|
|
it('parseOrder, string', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder('name');
|
|
assert.deepEqual(data, {name: 1})
|
|
})
|
|
it('parseOrder, string, 2', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder('name,title');
|
|
assert.deepEqual(data, {name: 1, title: 1})
|
|
})
|
|
it('parseOrder, string, 3', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder('name,title desc');
|
|
assert.deepEqual(data, {name: 1, title: -1})
|
|
})
|
|
it('parseOrder, object', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder({
|
|
name: 1,
|
|
title: false
|
|
});
|
|
assert.deepEqual(data, {name: 1, title: -1})
|
|
})
|
|
it('parseOrder, object 1', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseOrder({
|
|
name: 0,
|
|
title: -1
|
|
});
|
|
assert.deepEqual(data, {name: -1, title: -1})
|
|
})
|
|
it('parseGroup, empty', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseGroup();
|
|
assert.deepEqual(data, '')
|
|
})
|
|
it('parseGroup, string', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseGroup('name, title');
|
|
assert.deepEqual(data, ['name', 'title'])
|
|
})
|
|
it('parseGroup, array', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseGroup(['name', 'title']);
|
|
assert.deepEqual(data, ['name', 'title'])
|
|
})
|
|
it('parseWhere, empty', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseWhere();
|
|
assert.deepEqual(data, {})
|
|
})
|
|
it('parseWhere, with _id, mongoid', function(){
|
|
var instance = new Parse();
|
|
var req = think.require;
|
|
muk(think, 'require', function(name){
|
|
if(name === 'validator'){
|
|
return req('validator');
|
|
}
|
|
return {
|
|
ObjectID: function(){
|
|
return {}
|
|
}
|
|
}
|
|
})
|
|
var data = instance.parseWhere({
|
|
_id: '563473fae61a1b3709e43ae2'
|
|
});
|
|
assert.equal(typeof data._id, 'object');
|
|
//assert.equal(JSON.stringify(data), '{"_id":"563473fae61a1b3709e43ae2"}');
|
|
|
|
muk.restore();
|
|
})
|
|
it('parseWhere, with _id, number', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseWhere({
|
|
_id: 123456
|
|
});
|
|
assert.deepEqual(data, {_id: 123456})
|
|
})
|
|
|
|
it('parseWhere, has <', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseWhere({qty: { '>': 20 }});
|
|
assert.deepEqual(data, {qty: { $gt: 20 }})
|
|
})
|
|
|
|
it('parseWhere, has >', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseWhere({qty: { '$gt': 20 }});
|
|
assert.deepEqual(data, {qty: { $gt: 20 }})
|
|
})
|
|
|
|
it('parseWhere, has &or', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseWhere({ 'OR': [ { quantity: { '<': 20 } }, { price: 10 } ] });
|
|
assert.deepEqual(data, { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] })
|
|
})
|
|
|
|
|
|
it('parseDistinct, empty', function(){
|
|
var instance = new Parse();
|
|
var data = instance.parseDistinct();
|
|
assert.deepEqual(data, undefined)
|
|
})
|
|
}) |