UNPKG

nodebatis

Version:
206 lines (188 loc) 4.77 kB
const rewire = require('rewire') const sqlBuilder = require('../../src/lib/sqlBuilder') describe('getInsertSql', () => { test('normal', () => { let ret = sqlBuilder.getInsertSql('test', { column1: '1', column2: '2' }) expect(ret).toMatchObject({ sql: 'insert into `test` (`column1`,`column2`) values (?,?)', params: ['1', '2'] }) }) test('tableName is null', () => { expect(() => { sqlBuilder.getInsertSql(null, { column1: '1' }) }).toThrow() }) test('data is null', () => { expect(() => { sqlBuilder.getInsertSql('test', null) }).toThrow() }) }) describe('getUpdateSql', () => { test('normal', () => { let ret = sqlBuilder.getUpdateSql('test', { column1: 'column1' }) expect(ret).toMatchObject({ sql: 'update `test` set `column1` = ? ', params: ['column1'] }) }) test('have simple query', () => { let ret = sqlBuilder.getUpdateSql('test', { column1: 'column1' },{ id: 'idValue' }) expect(ret).toMatchObject({ sql: 'update `test` set `column1` = ? where `id` = ?', params: ['column1', 'idValue'] }) }) test('have complex query', () => { let ret = sqlBuilder.getUpdateSql('test', { column1: 'column1', column2: 'column2' },{ id: 'idValue', inTest: { $in: ['a', 'b', 'c'] } }) expect(ret).toMatchObject({ sql: 'update `test` set `column1` = ?,`column2` = ? where `id` = ? and `inTest` in (?,?,?)', params: ['column1', 'column2', 'idValue', 'a', 'b', 'c'] }) }) test('tableName or data is null', () => { expect(() => { sqlBuilder.getUpdateSql(null, null) }).toThrow() }) }) describe('getDelSql', () => { test('normal', () => { let ret = sqlBuilder.getDelSql('test', 1) expect(ret).toMatchObject({ sql: 'delete from `test` where `id` = ?', params: [1] }) }) test('idKey is null', () => { let ret = sqlBuilder.getDelSql('test', 'any', null) expect(ret).toMatchObject({ sql: 'delete from `test`', params: [] }) }) test('tableName is null', () => { expect(() => { sqlBuilder.getDelSql(null) }).toThrow() }) }) describe('getSqlFromObject', () => { test('normal', () => { let _sqlBuilder = rewire('../../src/lib/sqlBuilder') let ret = _sqlBuilder.__get__('getSqlFromObject')({ equal: 'equal', neq: { $neq: 'neq' } }) expect(ret).toMatchObject({ sql: [ '`equal` = ?', '`neq` <> ?' ], params: [ 'equal', 'neq' ] }) }) test('$in', () => { let _sqlBuilder = rewire('../../src/lib/sqlBuilder') let ret = _sqlBuilder.__get__('getSqlFromObject')({ inTest: { $in: [1, 2, 3] } }) expect(ret).toMatchObject({ sql: ['`inTest` in (?,?,?)'], params: [1, 2, 3] }) }) }) describe('getSelectSql', () => { test('normal', () => { let ret = sqlBuilder.getSelectSql('test', { equal: 'equal', neq: { $neq: 'neq' }, like: { $like: '%like%' }, in: { $in: [1, 2, 3] } }) expect(ret).toMatchObject({ sql: 'select * from `test` where `equal` = ? and `neq` <> ? and `like` like ? and `in` in (?,?,?)', params: [ 'equal', 'neq', '%like%', 1, 2, 3 ] }) }) test('normalByPage', () => { let ret = sqlBuilder.getSelectSql('test', { equal: 'equal', neq: { $neq: 'neq' }, like: { $like: '%like%' }, in: { $in: [1, 2, 3] } }, 0 , 10, 'orderName', 'desc') expect(ret).toMatchObject({ sql: 'select * from `test` where `equal` = ? and `neq` <> ? and `like` like ? and `in` in (?,?,?) order by `orderName` desc limit ? offset ?', params: [ 'equal', 'neq', '%like%', 1, 2, 3, 10, 0 ] }) }) test('data is null', () => { let ret = sqlBuilder.getSelectSql('test') expect(ret).toMatchObject({ sql: 'select * from `test`', params: [] }) }) }) describe('getCountSql', () => { test('normal', () => { let ret = sqlBuilder.getCountSql('test', { equal: 'equal', neq: { $neq: 'neq' }, like: { $like: '%like%' }, in: { $in: [1, 2, 3] } }) expect(ret).toMatchObject({ sql: 'select count(*) count from `test` where `equal` = ? and `neq` <> ? and `like` like ? and `in` in (?,?,?)', params: [ 'equal', 'neq', '%like%', 1, 2, 3 ] }) }) test('data is null', () => { let ret = sqlBuilder.getCountSql('test') expect(ret).toMatchObject({ sql: 'select count(*) count from `test`', params: [] }) }) })