/** * sql拼接器单元测试 * * @author CaiAoLin * @date 2017/10/20 * @version */ 'use strict'; const { app, assert } = require('egg-mock/bootstrap'); const SqlBuilder = require('../../../app/lib/sql_builder'); describe('test/app/lib/sql_builder.test.js', () => { it('set where like', function* () { const sqlBuilder = new SqlBuilder(); sqlBuilder.setAndWhere('field', { value: app.mysql.escape('value%'), operate: 'like', }); const [sql, param] = sqlBuilder.build('table'); const finalSql = app.mysql.format(sql, param); // 最后组合后应该获得的数据 const matchSql = "SELECT * FROM `table` WHERE `field` like 'value%'"; assert(finalSql === matchSql); }); it('set normal sql', function* () { const sqlBuilder = new SqlBuilder(); sqlBuilder.columns = ['id']; sqlBuilder.limit = 10; sqlBuilder.offset = 1; sqlBuilder.orderBy = [['id', 'DESC']]; const [sql, param] = sqlBuilder.build('table'); const finalSql = app.mysql.format(sql, param); // 最后组合后应该获得的数据 const matchSql = 'SELECT `id` FROM `table` LIMIT 1,10 ORDER BY `id` DESC'; assert(finalSql === matchSql); }); it('update sql', function* () { const sqlBuilder = new SqlBuilder(); sqlBuilder.setUpdateData('create_time', { value: 1, selfOperate: '+', }); sqlBuilder.setUpdateData('office', { value: 2, }); sqlBuilder.setAndWhere('group_id', { value: 1, operate: '>=', }); const [sql, sqlParam] = sqlBuilder.build('table', 'update'); const finalSql = app.mysql.format(sql, sqlParam); const matchSql = 'UPDATE `table` SET `create_time` = `create_time` + 1, `office` = 2 WHERE `group_id` >= 1'; assert(finalSql === matchSql); }); });