mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-18 14:26:56 +00:00
941 lines
30 KiB
JavaScript
941 lines
30 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.js'));
|
||
|
||
describe('adapter/db/_parse.js', function(){
|
||
it('init', function(){
|
||
var instance = new Parse();
|
||
var keys = Object.keys(instance.comparison).sort();
|
||
assert.deepEqual(keys, [ '<>','EGT','ELT','EQ','GT','IN','LIKE','LT','NEQ','NOTIN','NOTLIKE' ]);
|
||
assert.equal(instance.selectSql, '%EXPLAIN%SELECT%DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT%%UNION%%COMMENT%')
|
||
})
|
||
it('parseExplain', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseExplain()
|
||
assert.equal(data, "");
|
||
})
|
||
it('parseExplain true', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseExplain(true)
|
||
assert.equal(data, "EXPLAIN ");
|
||
})
|
||
it('parseSet', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseSet({
|
||
name: 'welefen'
|
||
})
|
||
assert.equal(data, " SET name='welefen'");
|
||
})
|
||
it('parseSet, has extra value', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseSet({
|
||
name: 'welefen',
|
||
value: ['array']
|
||
})
|
||
assert.equal(data, " SET name='welefen'");
|
||
})
|
||
it('parseSet, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseSet()
|
||
assert.equal(data, "");
|
||
})
|
||
it('parseKey is function', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseKey('key');
|
||
assert.equal(key, 'key')
|
||
})
|
||
it('parseValue, string', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseValue('key');
|
||
assert.equal(key, "'key'")
|
||
})
|
||
it('parseValue, array, exp', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseValue(['exp', 'welefen']);
|
||
assert.equal(key, "welefen")
|
||
})
|
||
it('parseValue, null', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseValue(null);
|
||
assert.equal(key, "null")
|
||
})
|
||
it('parseValue, boolean, true', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseValue(true);
|
||
assert.equal(key, "1")
|
||
})
|
||
it('parseValue, boolean, false', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseValue(false);
|
||
assert.equal(key, "0")
|
||
})
|
||
it('parseValue, object', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseValue({});
|
||
assert.deepEqual(key, {})
|
||
})
|
||
it('parseField, empty', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseField();
|
||
assert.deepEqual(key, '*')
|
||
})
|
||
it('parseField, single field', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseField('name');
|
||
assert.deepEqual(key, 'name')
|
||
})
|
||
it('parseField, multi field', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseField('name,title');
|
||
assert.deepEqual(key, 'name,title')
|
||
})
|
||
it('parseField, multi field', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseField('name, title');
|
||
assert.deepEqual(key, 'name,title')
|
||
})
|
||
it('parseField, object', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseField({
|
||
name: 'name',
|
||
title1: 'title'
|
||
});
|
||
assert.deepEqual(key, 'name AS name,title1 AS title')
|
||
})
|
||
it('parseTable, empty', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseTable();
|
||
assert.deepEqual(key, '')
|
||
})
|
||
it('parseTable, string', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseTable('user');
|
||
assert.deepEqual(key, 'user')
|
||
})
|
||
it('parseTable, string, multi', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseTable('user, group');
|
||
assert.deepEqual(key, 'user,group')
|
||
})
|
||
it('parseTable, object', function(){
|
||
var instance = new Parse();
|
||
var key = instance.parseTable({
|
||
user: 'user1',
|
||
group: 'group1'
|
||
});
|
||
assert.deepEqual(key, 'user AS user1,group AS group1')
|
||
})
|
||
it('getLogic', function(){
|
||
var instance = new Parse();
|
||
var key = instance.getLogic({});
|
||
assert.deepEqual(key, 'AND')
|
||
})
|
||
it('getLogic, has _logic', function(){
|
||
var instance = new Parse();
|
||
var key = instance.getLogic({
|
||
_logic: 'OR'
|
||
});
|
||
assert.deepEqual(key, 'OR')
|
||
})
|
||
it('getLogic, has _logic, error', function(){
|
||
var instance = new Parse();
|
||
var key = instance.getLogic({
|
||
_logic: 'test'
|
||
});
|
||
assert.deepEqual(key, 'AND')
|
||
})
|
||
it('getLogic, default is OR', function(){
|
||
var instance = new Parse();
|
||
var key = instance.getLogic({}, 'OR');
|
||
assert.deepEqual(key, 'OR')
|
||
})
|
||
it('getLogic, string', function(){
|
||
var instance = new Parse();
|
||
var key = instance.getLogic('AND', 'OR');
|
||
assert.deepEqual(key, 'AND')
|
||
})
|
||
it('getLogic, string, lowercase', function(){
|
||
var instance = new Parse();
|
||
var key = instance.getLogic('and', 'OR');
|
||
assert.deepEqual(key, 'AND')
|
||
})
|
||
it('escapeString is function', function(){
|
||
var instance = new Parse();
|
||
assert.equal(think.isFunction(instance.escapeString), true);
|
||
})
|
||
it('parseLock, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLock();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseLock, true', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLock(true);
|
||
assert.equal(data, ' FOR UPDATE ');
|
||
})
|
||
it('parseDistinct, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseDistinct();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseDistinct, true', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseDistinct(true);
|
||
assert.equal(data, ' DISTINCT');
|
||
})
|
||
it('parseComment, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseComment();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseComment, welefen test', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseComment('welefen test');
|
||
assert.equal(data, ' /*welefen test*/');
|
||
})
|
||
it('parseHaving, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseHaving();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseHaving, SUM(area)>1000000', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseHaving('SUM(area)>1000000');
|
||
assert.equal(data, ' HAVING SUM(area)>1000000');
|
||
})
|
||
it('parseGroup, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseGroup();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseGroup, name', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseGroup('name');
|
||
assert.equal(data, ' GROUP BY `name`');
|
||
})
|
||
it('parseGroup, name', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseGroup("date_format(create_time,'%Y-%m-%d')");
|
||
assert.equal(data, " GROUP BY date_format(create_time,'%Y-%m-%d')");
|
||
})
|
||
it('parseGroup, name,title', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseGroup('name, title');
|
||
assert.equal(data, ' GROUP BY `name`,`title`');
|
||
})
|
||
it('parseGroup, user.name,title', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseGroup(['user.name', 'title']);
|
||
assert.equal(data, ' GROUP BY user.`name`,`title`');
|
||
})
|
||
it('parseOrder, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseOrder();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseOrder, array', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseOrder(['name ASC', 'title DESC']);
|
||
assert.equal(data, ' ORDER BY name ASC,title DESC');
|
||
})
|
||
it('parseOrder, string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseOrder('name ASC,title DESC');
|
||
assert.equal(data, ' ORDER BY name ASC,title DESC');
|
||
})
|
||
it('parseOrder, object', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseOrder({name: 'ASC', 'title': 'DESC'});
|
||
assert.equal(data, ' ORDER BY name ASC,title DESC');
|
||
})
|
||
it('parseLimit, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLimit();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseLimit, 10', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLimit('10');
|
||
assert.equal(data, ' LIMIT 10');
|
||
})
|
||
it('parseLimit, number', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLimit(10);
|
||
assert.equal(data, ' LIMIT 10');
|
||
})
|
||
it('parseLimit, 10, 20', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLimit('10, 20');
|
||
assert.equal(data, ' LIMIT 10,20');
|
||
})
|
||
it('parseLimit, 10, welefen', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLimit('10, welefen');
|
||
assert.equal(data, ' LIMIT 10,0');
|
||
})
|
||
it('parseLimit, [20, 10]', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseLimit([20, 10]);
|
||
assert.equal(data, ' LIMIT 20,10');
|
||
})
|
||
it('parseJoin, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin();
|
||
assert.equal(data, '');
|
||
})
|
||
it('parseJoin, single string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin('meinv_cate ON meinv_group.cate_id=meinv_cate.id');
|
||
assert.equal(data, ' LEFT JOIN meinv_cate ON meinv_group.cate_id=meinv_cate.id');
|
||
})
|
||
it('parseJoin, multi string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin(['meinv_cate ON meinv_group.cate_id=meinv_cate.id', 'RIGHT JOIN meinv_tag ON meinv_group.tag_id=meinv_tag.id']);
|
||
assert.equal(data, ' LEFT JOIN meinv_cate ON meinv_group.cate_id=meinv_cate.id RIGHT JOIN meinv_tag ON meinv_group.tag_id=meinv_tag.id');
|
||
})
|
||
it('parseJoin, array', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: 'cate',
|
||
join: 'inner',
|
||
as: 'c',
|
||
on: ['cate_id', 'id']
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' INNER JOIN `cate` AS `c` ON `user`.`cate_id` = `c`.`id`');
|
||
})
|
||
it('parseJoin, array, no on', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: 'cate',
|
||
join: 'inner',
|
||
as: 'c'
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' INNER JOIN `cate` AS `c`');
|
||
})
|
||
it('parseJoin, array, ignore not object', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: 'cate',
|
||
join: 'inner',
|
||
as: 'c'
|
||
}, true], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' INNER JOIN `cate` AS `c`');
|
||
})
|
||
it('parseJoin, array, multi', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: 'cate',
|
||
join: 'left',
|
||
as: 'c',
|
||
on: ['cate_id', 'id']
|
||
}, {
|
||
table: 'group_tag',
|
||
join: 'left',
|
||
as: 'd',
|
||
on: ['id', 'group_id']
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN `cate` AS `c` ON `user`.`cate_id` = `c`.`id` LEFT JOIN `group_tag` AS `d` ON `user`.`id` = `d`.`group_id`');
|
||
})
|
||
it('parseJoin, array, multi 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
cate: {
|
||
join: 'left',
|
||
as: 'c',
|
||
on: ['id', 'id']
|
||
},
|
||
group_tag: {
|
||
join: 'left',
|
||
as: 'd',
|
||
on: ['id', 'group_id']
|
||
}
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
|
||
assert.equal(data, ' LEFT JOIN `cate` AS `c` ON `user`.`id` = `c`.`id` LEFT JOIN `group_tag` AS `d` ON `user`.`id` = `d`.`group_id`');
|
||
})
|
||
it('parseJoin, array, multi 2', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
cate: {
|
||
on: ['id', 'id']
|
||
},
|
||
group_tag: {
|
||
on: ['id', 'group_id']
|
||
}
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN `cate` ON `user`.`id` = `cate`.`id` LEFT JOIN `group_tag` ON `user`.`id` = `group_tag`.`group_id`');
|
||
})
|
||
it('parseJoin, array, multi 3', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
cate: {
|
||
on: 'id, id'
|
||
},
|
||
group_tag: {
|
||
on: ['id', 'group_id']
|
||
},
|
||
tag: {
|
||
on: {
|
||
id: 'id',
|
||
title: 'name'
|
||
}
|
||
}
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN `cate` ON `user`.`id` = `cate`.`id` LEFT JOIN `group_tag` ON `user`.`id` = `group_tag`.`group_id` LEFT JOIN `tag` ON (`user`.`id`=`tag`.`id` AND `user`.`title`=`tag`.`name`)');
|
||
})
|
||
it('parseJoin, array, multi 4, on has table name', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
cate: {
|
||
on: 'id, id'
|
||
},
|
||
group_tag: {
|
||
on: ['id', 'group_id']
|
||
},
|
||
tag: {
|
||
on: {
|
||
id: 'id',
|
||
title: 'tag.name'
|
||
}
|
||
}
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN `cate` ON `user`.`id` = `cate`.`id` LEFT JOIN `group_tag` ON `user`.`id` = `group_tag`.`group_id` LEFT JOIN `tag` ON (`user`.`id`=`tag`.`id` AND `user`.`title`=tag.name)');
|
||
})
|
||
it('parseJoin, array, multi 4, on has table name 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
cate: {
|
||
on: 'id, id'
|
||
},
|
||
group_tag: {
|
||
on: ['id', 'group_id']
|
||
},
|
||
tag: {
|
||
on: {
|
||
id: 'id',
|
||
title: '`tag`.`name`'
|
||
}
|
||
}
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN `cate` ON `user`.`id` = `cate`.`id` LEFT JOIN `group_tag` ON `user`.`id` = `group_tag`.`group_id` LEFT JOIN `tag` ON (`user`.`id`=`tag`.`id` AND `user`.`title`=`tag`.`name`)');
|
||
})
|
||
it('parseJoin, array, multi 4', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
cate: {
|
||
on: 'id, id'
|
||
},
|
||
group_tag: {
|
||
on: ['id', 'group_id']
|
||
},
|
||
tag: {
|
||
on: {
|
||
id: 'id',
|
||
'u1.title': 'tag.name'
|
||
}
|
||
}
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN `cate` ON `user`.`id` = `cate`.`id` LEFT JOIN `group_tag` ON `user`.`id` = `group_tag`.`group_id` LEFT JOIN `tag` ON (`user`.`id`=`tag`.`id` AND u1.title=tag.name)');
|
||
})
|
||
it('parseJoin, array, table is sql', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: 'SELECT * FROM test WHERE 1=1',
|
||
join: 'left',
|
||
as: 'temp',
|
||
on: ['id', 'temp.team_id']
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN (SELECT * FROM test WHERE 1=1) AS `temp` ON `user`.`id` = temp.team_id');
|
||
})
|
||
it('parseJoin, array, table is sql 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: 'SELECT * FROM test WHERE 1=1',
|
||
join: 'left',
|
||
as: 'temp',
|
||
on: ['u.id', 'temp.team_id']
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN (SELECT * FROM test WHERE 1=1) AS `temp` ON u.id = temp.team_id');
|
||
})
|
||
it('parseJoin, array, table is sql 2', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: 'SELECT * FROM test WHERE 1=1',
|
||
join: 'left',
|
||
as: 'temp',
|
||
on: ['id', 'team_id']
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN (SELECT * FROM test WHERE 1=1) AS `temp` ON `user`.`id` = `temp`.`team_id`');
|
||
})
|
||
it('parseJoin, array, table is sql 3', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseJoin([{
|
||
table: '(SELECT * FROM test WHERE 1=1)',
|
||
join: 'left',
|
||
as: 'temp',
|
||
on: ['id', 'team_id']
|
||
}], {
|
||
tablePrefix: '',
|
||
table: 'user'
|
||
});
|
||
assert.equal(data, ' LEFT JOIN (SELECT * FROM test WHERE 1=1) AS `temp` ON `user`.`id` = `temp`.`team_id`');
|
||
})
|
||
it('parseThinkWhere, key is empty, ignore valud', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseThinkWhere('', 'SELECT * FROM user');
|
||
assert.equal(data, '')
|
||
})
|
||
it('parseThinkWhere, _string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseThinkWhere('_string', 'SELECT * FROM user');
|
||
assert.equal(data, 'SELECT * FROM user')
|
||
})
|
||
it('parseThinkWhere, _query', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseThinkWhere('_query', 'name=welefen&name1=suredy');
|
||
assert.equal(data, 'name = \'welefen\' AND name1 = \'suredy\'')
|
||
})
|
||
it('parseThinkWhere, _query, with logic', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseThinkWhere('_query', 'name=welefen&name1=suredy&_logic=OR');
|
||
assert.equal(data, 'name = \'welefen\' OR name1 = \'suredy\'')
|
||
})
|
||
it('parseThinkWhere, _query, object', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseThinkWhere('_query', {name: 'welefen', name1: 'suredy'});
|
||
assert.equal(data, 'name = \'welefen\' AND name1 = \'suredy\'')
|
||
})
|
||
it('parseWhere, empty', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere();
|
||
assert.equal(data, '')
|
||
})
|
||
it('parseWhere, empty 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({_logic: 'AND'});
|
||
assert.equal(data, '')
|
||
})
|
||
it('parseWhere, 1=1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({1: 1});
|
||
assert.equal(data, ' WHERE ( 1 = 1 )')
|
||
})
|
||
it('parseWhere, key is not valid', function(){
|
||
var instance = new Parse();
|
||
try{
|
||
var data = instance.parseWhere({'&*&*&*': 'title'});
|
||
assert.equal(1, 2);
|
||
}catch(e){
|
||
|
||
}
|
||
})
|
||
it('parseWhere, string & object', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: 'welefen', _string: 'status=1'});
|
||
assert.equal(data, ' WHERE ( title = \'welefen\' ) AND ( status=1 )')
|
||
})
|
||
it('parseWhere, null', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: null});
|
||
assert.equal(data, ' WHERE ( title IS NULL )')
|
||
})
|
||
it('parseWhere, null 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: {'=': null}});
|
||
assert.equal(data, ' WHERE ( title IS NULL )')
|
||
})
|
||
it('parseWhere, null 2', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: ['=', null]});
|
||
assert.equal(data, ' WHERE ( title IS NULL )')
|
||
})
|
||
it('parseWhere, not null', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: {'!=': null}});
|
||
assert.equal(data, ' WHERE ( title IS NOT NULL )')
|
||
})
|
||
it('parseWhere, not null 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: ['!=', null]});
|
||
assert.equal(data, ' WHERE ( title IS NOT NULL )')
|
||
})
|
||
it('parseWhere, object', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: 10});
|
||
assert.equal(data, ' WHERE ( id = 10 )')
|
||
})
|
||
it('parseWhere, object IN number', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: {IN: [1,2,3]}});
|
||
assert.equal(data, ' WHERE ( id IN (1, 2, 3) )')
|
||
})
|
||
it('parseWhere, IN number string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: [1,2,3]});
|
||
assert.equal(data, ' WHERE ( id IN ( 1, 2, 3 ) )')
|
||
})
|
||
it('parseWhere, object 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: [1, 10, 'string']});
|
||
assert.equal(data, ' WHERE ( (id = 1) AND (id = 10) AND (id = \'string\') )')
|
||
})
|
||
|
||
it('parseWhere, IN number string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['1','2','3']});
|
||
assert.equal(data, ' WHERE ( id IN ( 1, 2, 3 ) )')
|
||
})
|
||
it('parseWhere, object IN number string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: {IN: ['1','2','3']}});
|
||
assert.equal(data, ' WHERE ( id IN (\'1\', \'2\', \'3\') )')
|
||
})
|
||
it('parseWhere, object 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['!=', 10]});
|
||
assert.equal(data, ' WHERE ( id != 10 )')
|
||
})
|
||
it('parseWhere, string', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere('id = 10 OR id < 2');
|
||
assert.equal(data, ' WHERE id = 10 OR id < 2')
|
||
})
|
||
it('parseWhere, EXP', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({name: ['EXP', "='name'"]});
|
||
assert.equal(data, ' WHERE ( (name =\'name\') )')
|
||
})
|
||
it('parseWhere, EXP 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({view_nums: ['EXP', 'view_nums+1']});
|
||
assert.equal(data, ' WHERE ( (view_nums view_nums+1) )')
|
||
})
|
||
it('parseWhere, LIKE', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: ['NOTLIKE', 'welefen']});
|
||
assert.equal(data, ' WHERE ( title NOT LIKE \'welefen\' )')
|
||
})
|
||
it('parseWhere, LIKE 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: ['like', '%welefen%']});
|
||
assert.equal(data, ' WHERE ( title LIKE \'%welefen%\' )')
|
||
})
|
||
it('parseWhere, LIKE 2', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: ['like', ['welefen', 'suredy']]});
|
||
assert.equal(data, ' WHERE ( (title LIKE \'welefen\' OR title LIKE \'suredy\') )')
|
||
})
|
||
it('parseWhere, LIKE 3', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({title: ['like', ['welefen', 'suredy'], 'AND']});
|
||
assert.equal(data, ' WHERE ( (title LIKE \'welefen\' AND title LIKE \'suredy\') )')
|
||
})
|
||
it('parseWhere, key has |', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({'title|content': ['like', '%welefen%']});
|
||
assert.equal(data, ' WHERE ( (title LIKE \'%welefen%\') OR (content LIKE \'%welefen%\') )')
|
||
})
|
||
it('parseWhere, key has |, multi', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
'title|content': [
|
||
['like', '%title%'], ['=', '%content%']
|
||
],
|
||
_multi: true
|
||
});
|
||
assert.equal(data, ' WHERE ( (title LIKE \'%title%\') OR (content = \'%content%\') )')
|
||
})
|
||
it('parseWhere, key has |, multi', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
'title|content': [
|
||
['like', '%title%'], ['=', '%content%']
|
||
],
|
||
_multi: true
|
||
});
|
||
assert.equal(data, ' WHERE ( (title LIKE \'%title%\') OR (content = \'%content%\') )')
|
||
})
|
||
it('parseWhere, key has &', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({'title&content': ['like', '%welefen%']});
|
||
assert.equal(data, ' WHERE ( (title LIKE \'%welefen%\') AND (content LIKE \'%welefen%\') )')
|
||
})
|
||
it('parseWhere, key has &, multi', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
'title&content': [
|
||
['like', '%welefen%'],
|
||
['!=', '%content%'],
|
||
],
|
||
_multi: true
|
||
});
|
||
assert.equal(data, ' WHERE ( (title LIKE \'%welefen%\') AND (content != \'%content%\') )')
|
||
})
|
||
it('parseWhere, IN', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['IN', '10,20']});
|
||
assert.equal(data, ' WHERE ( id IN (\'10\',\'20\') )')
|
||
})
|
||
it('parseWhere, IN 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['IN', [10, 20]]});
|
||
assert.equal(data, ' WHERE ( id IN (10,20) )')
|
||
})
|
||
it('parseWhere, IN 2', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['NOTIN', [10, 20]]});
|
||
assert.equal(data, ' WHERE ( id NOT IN (10,20) )')
|
||
})
|
||
it('parseWhere, NOT IN, only one', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['NOTIN', 10]});
|
||
assert.equal(data, ' WHERE ( id != 10 )')
|
||
})
|
||
it('parseWhere, IN, only one', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['IN', 10]});
|
||
assert.equal(data, ' WHERE ( id = 10 )')
|
||
})
|
||
it('parseWhere, IN, object', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: {IN: [1, 2, 3]}});
|
||
assert.equal(data, ' WHERE ( id IN (1, 2, 3) )')
|
||
})
|
||
it('parseWhere, IN, has exp', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['NOTIN', '(10,20,30)', 'exp']});
|
||
assert.equal(data, ' WHERE ( id NOT IN (10,20,30) )')
|
||
})
|
||
|
||
it('parseWhere, multi fields', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: 10, title: "www"});
|
||
assert.equal(data, ' WHERE ( id = 10 ) AND ( title = \'www\' )')
|
||
})
|
||
it('parseWhere, multi fields 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: 10, title: "www", _logic: 'OR'});
|
||
assert.equal(data, ' WHERE ( id = 10 ) OR ( title = \'www\' )')
|
||
})
|
||
it('parseWhere, multi fields 2', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: 10, title: "www", _logic: 'XOR'});
|
||
assert.equal(data, ' WHERE ( id = 10 ) XOR ( title = \'www\' )')
|
||
})
|
||
it('parseWhere, BETWEEN', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['BETWEEN', 1, 2]});
|
||
assert.equal(data, ' WHERE ( (id BETWEEN 1 AND 2) )')
|
||
})
|
||
it('parseWhere, BETWEEN', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: ['between', '1,2']});
|
||
assert.equal(data, ' WHERE ( (id BETWEEN \'1\' AND \'2\') )')
|
||
})
|
||
it('parseWhere, complex', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: {
|
||
'>': 10,
|
||
'<': 20
|
||
}});
|
||
assert.equal(data, ' WHERE ( id > 10 AND id < 20 )')
|
||
})
|
||
it('parseWhere, complex 1', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: {
|
||
'>': 10,
|
||
'<': 20,
|
||
_logic: 'OR'
|
||
}});
|
||
assert.equal(data, ' WHERE ( id > 10 OR id < 20 )')
|
||
})
|
||
it('parseWhere, complex 2', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({id: {
|
||
'>=': 10,
|
||
'<=': 20
|
||
}, 'title': ['like', '%welefen%'], date: ['>', '2014-08-12'], _logic: 'OR'});
|
||
assert.equal(data, ' WHERE ( id >= 10 AND id <= 20 ) OR ( title LIKE \'%welefen%\' ) OR ( date > \'2014-08-12\' )')
|
||
})
|
||
it('parseWhere, complex 3', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
title: 'test',
|
||
_complex: {
|
||
id: ['IN', [1, 2, 3]],
|
||
content: 'www',
|
||
_logic: 'or'
|
||
}
|
||
});
|
||
assert.equal(data, ' WHERE ( title = \'test\' ) AND ( ( id IN (1,2,3) ) OR ( content = \'www\' ) )')
|
||
})
|
||
it('parseWhere, other', function(){
|
||
var instance = new Parse();
|
||
try{
|
||
var data = instance.parseWhere({
|
||
title: ['OTHER', 'dd']
|
||
});
|
||
assert.equal(1, 2)
|
||
}catch(e){
|
||
}
|
||
})
|
||
it('parseWhere, array', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
title: [
|
||
['exp', '= \'welefen\'']
|
||
],
|
||
});
|
||
assert.equal(data, ' WHERE ( (title = \'welefen\') )')
|
||
})
|
||
it('parseWhere, array, multi', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
title: [
|
||
['exp', '= \'welefen\''],
|
||
['=', 'suredy']
|
||
],
|
||
});
|
||
assert.equal(data, ' WHERE ( (title = \'welefen\') AND (title = \'suredy\') )')
|
||
})
|
||
it('parseWhere, array, multi, or', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
title: [
|
||
['exp', '= \'welefen\''],
|
||
['=', 'suredy'],
|
||
'OR'
|
||
],
|
||
});
|
||
assert.equal(data, ' WHERE ( (title = \'welefen\') OR (title = \'suredy\') )')
|
||
})
|
||
it('parseWhere, array, multi, or', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
title: [
|
||
['exp', '= \'welefen\''],
|
||
['!=', 'suredy'],
|
||
'OR'
|
||
],
|
||
});
|
||
assert.equal(data, ' WHERE ( (title = \'welefen\') OR (title != \'suredy\') )')
|
||
})
|
||
it('parseWhere, array, multi, or', function(){
|
||
var instance = new Parse();
|
||
var data = instance.parseWhere({
|
||
title: [
|
||
['exp', '= \'welefen\''],
|
||
'suredy',
|
||
'OR'
|
||
],
|
||
});
|
||
assert.equal(data, ' WHERE ( (title = \'welefen\') OR (title = \'suredy\') )')
|
||
})
|
||
it('buildSelectSql', function(){
|
||
var instance = new Parse();
|
||
var data = instance.buildSelectSql({
|
||
table: 'user',
|
||
where: {
|
||
id: 11,
|
||
title: 'welefen'
|
||
},
|
||
group: 'name',
|
||
field: 'name,title',
|
||
order: 'name DESC',
|
||
limit: '10, 20',
|
||
distinct: true
|
||
});
|
||
assert.equal(data, "SELECT DISTINCT name,title FROM user WHERE ( id = 11 ) AND ( title = 'welefen' ) GROUP BY `name` ORDER BY name DESC LIMIT 10,20")
|
||
})
|
||
it('parseSql', function(){
|
||
var instance = new Parse({prefix: 'think_'});
|
||
var data = instance.parseSql('SELECT * FROM __USER__ WHERE name=1');
|
||
assert.equal(data, 'SELECT * FROM `think_user` WHERE name=1')
|
||
})
|
||
it('parseSql 1', function(){
|
||
var instance = new Parse({prefix: 'think_'});
|
||
var data = instance.parseSql('SELECT * FROM __USER__ WHERE name=\'%TEST%\'');
|
||
assert.equal(data, 'SELECT * FROM `think_user` WHERE name=\'%TEST%\'')
|
||
})
|
||
it('parseUnion, empty', function(){
|
||
var instance = new Parse({prefix: 'think_'});
|
||
var data = instance.parseUnion();
|
||
assert.equal(data, '')
|
||
})
|
||
it('parseUnion, string', function(){
|
||
var instance = new Parse({prefix: 'think_'});
|
||
var data = instance.parseUnion('SELECT * FROM meinv_pic2');
|
||
assert.equal(data, ' UNION (SELECT * FROM meinv_pic2)')
|
||
})
|
||
it('parseUnion, object', function(){
|
||
var instance = new Parse({prefix: 'think_'});
|
||
var data = instance.parseUnion({table: 'meinv_pic2'});
|
||
assert.equal(data, ' UNION (SELECT * FROM meinv_pic2)')
|
||
})
|
||
it('parseUnion, array', function(){
|
||
var instance = new Parse({prefix: 'think_'});
|
||
var data = instance.parseUnion([{
|
||
union: {table: 'meinv_pic2'},
|
||
all: true
|
||
}]);
|
||
assert.equal(data, ' UNION ALL (SELECT * FROM meinv_pic2)')
|
||
})
|
||
it('parseUnion, array', function(){
|
||
var instance = new Parse({prefix: 'think_'});
|
||
var data = instance.parseUnion([{
|
||
union: 'SELECT * FROM meinv_pic2',
|
||
}]);
|
||
assert.equal(data, ' UNION (SELECT * FROM meinv_pic2)')
|
||
})
|
||
}) |