thinkjs/test/adapter/db/_parse.js
2016-03-14 11:47:50 +08:00

941 lines
30 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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)')
})
})