UNPKG

chinese-search-dh

Version:

Chinese-Search is a full text search in chinese,base on nodejieba and redis,support to using sql pull data from mysql,and it is easy,small and fast.

354 lines (342 loc) 10.8 kB
const mocha = require("mocha"); const should = require("should"); const ayc = require("async"); const search = require("../index.js"); const debug = require("debug"); const { addUUID, cutWords, reMixWords, initCacheClient, initDataClient, clearAllKeys, Engine, } = search let log = debug("debug:log") describe(' - 测试公共方法调用', function() { let s beforeEach(() => { s = new Engine({}) }) it('test common method -> addUUID', function() { let d = addUUID([{ 'name': 'aAa', 'title': '你好吗?老师!' }, { 'name': 'bBb', 'title': '中午还没有吃饭呢!aAa' }]) log(d); d.should.matchEach(function(value) { value.should.have.property('_id') }); }); it('test common method -> cutWords', function() { let objs = cutWords(['name', 'title'], addUUID([{ 'name': 'aAa', 'title': '你好吗?老师!' }, { 'name': 'bBb', 'title': '老师!他中午还没有吃饭呢!aAa' }])) log(objs); objs['aAa'].size.should.eql(2) objs['!'].size.should.eql(2) objs['老师'].size.should.eql(2) objs['!'].size.should.eql(1) }); it('test common method -> reMixWords', function() { let word = reMixWords(['name', 'title'], { 'name': 'ken', 'title': 'i am 18 years old', 'desc': 'from hk', 'id': 10 }) log(word) word.should.have.property('name') word.should.have.property('title') }); it('test common method -> initCacheClient', function(done) { let opt = { 'host': '127.0.0.1', 'port': 6379 } let client = initCacheClient(null, {cache:opt}) client.echo('helo', (err, r) => { log(r) r.should.eql('helo') done() }) }); it('test common method -> initDataClient', function(done) { let sql = 'select * from book' let opt = { host:'127.0.0.1', port:3306, db:'test', user:'root', pwd:'Ken5201314', type:'mysql' } if(process.env["CODECOV_TOKEN"]){ opt.pwd = '' } let client = initDataClient(null, {data:opt}) client.raw(sql) .then(res=>{ res[0].length.should.eql(3) done() }) }); it('test common method -> clearAllKeys', function(done) { let opt = { 'host': '127.0.0.1', 'port': 6379 } let client = initCacheClient(null, {cache:opt}) clearAllKeys(client, (err, r) => { if (err) { log(err) } else { log(r) done() } }) }); }); describe(' - 测试API(SQL填入数据)', function() { let s=null let sql = 'select * from book' let opt = {cache:{ 'host': '127.0.0.1', 'port': 6379 }, data:{ host:'127.0.0.1', port:3306, db:'test', user:'root', pwd:'Ken5201314', type:'mysql' }} if(process.env["CODECOV_TOKEN"]){ opt.data.pwd = '' } beforeEach(() => { s = new Engine(opt) }) it('test API -> cutKeys && initData with sql', function(done) { s.cutKeys(['book_desc', 'book_title']) .initData(sql,(err, r) => { if (err) { log(err) } else { log(r) done() } }) }); // it('test API -> appendData', function(done) { // s.cutKeys(['name', 'title']) // .initData([{ // id: 0, // 'name': 'aAa', // 'title': '你好吗?老师!' // }, { // id: 1, // 'name': 'bBb', // 'title': '老师!他中午还没有吃饭呢!aAa' // }], (err, r) => { // s.appendData([{ id: 3, 'name': 'kkk', 'title': 'aAa' }], (err, r) => { // if (err) { // log(err) // } else { // log(r) // done() // } // }) // }) // }); it('test API -> query', function(done) { s.cutKeys(['book_desc', 'book_title']) .initData(sql, (err, r) => { if (err) { log(err) } else { s.query(['PHP'], (err, r) => { if (err) { log(err) } else { log(r) r.length.should.eql(1) r[0].should.have.property('book_id') r[0].should.have.property('book_desc') r[0].should.have.property('book_title') r[0].should.have.property('_id') done() } }) } }) }); it('test API -> returnKeys', function(done) { s.cutKeys(['book_desc', 'book_anthor']) .initData(sql, (err, r) => { if (!err) { s.returnKeys(['book_id', 'book_desc', 'book_title']) .query(['ben'], (err, r) => { if (err) { log(err) } else { log(r) r.length.should.eql(2) r[0].should.have.property('book_id') r[0].should.have.property('book_desc') r[0].should.have.property('book_title') r[0].should.not.have.keys('_id') done() } }) } else { log(err) } }) }); it('test API -> clearAll', function(done) { s.clearAll((err, r) => { if (err) { log(err) } else { log(r) done() } }) }); }); describe(' - 测试API(数组填入数据)', function() { let s=null let opt = {cache:{ 'host': '127.0.0.1', 'port': 6379 }, data:{ host:'127.0.0.1', port:3306, db:'test', user:'root', pwd:'Ken5201314', type:'mysql' }} beforeEach(() => { s = new Engine(opt) }) it('test API -> cutKeys && initData with data', function(done) { s.cutKeys(['name', 'title']) .initData([{ id: 0, 'name': 'aAa', 'title': '你好吗?老师!' }, { id: 1, 'name': 'bBb', 'title': '老师!他中午还没有吃饭呢!aAa' }], (err, r) => { if (err) { log(err) } else { log(r) done() } }) }); it('test API -> appendData', function(done) { s.cutKeys(['name', 'title']) .initData([{ id: 0, 'name': 'aAa', 'title': '你好吗?老师!' }, { id: 1, 'name': 'bBb', 'title': '老师!他中午还没有吃饭呢!aAa' }], (err, r) => { s.appendData([{ id: 3, 'name': 'kkk', 'title': 'aAa' }], (err, r) => { if (err) { log(err) } else { log(r) done() } }) }) }); it('test API -> query', function(done) { s.cutKeys(['name', 'title']) .initData([{ id: 0, 'name': 'aAa', 'title': '你好吗?老师!' }, { id: 1, 'name': 'bBb', 'title': '老师!他中午还没有吃饭呢!' }], (err, r) => { if (!err) { s.query(['aAa'], (err, r) => { if (err) { log(err) } else { log(r) r.length.should.eql(1) r[0].should.have.property('id') r[0].should.have.property('name') r[0].should.have.property('title') r[0].should.have.property('_id') done() } }) } else { log(err) } }) }); it('test API -> returnKeys', function(done) { s.cutKeys(['name', 'title']) .initData([{ id: 0, 'name': 'aAa', 'title': '你好吗?老师!' }, { id: 1, 'name': 'bBb', 'title': '老师!他中午还没有吃饭呢!' }], (err, r) => { if (!err) { s.returnKeys(['id', 'name', 'title']) .query(['aAa'], (err, r) => { if (err) { log(err) } else { log(r) r.length.should.eql(1) r[0].should.have.property('id') r[0].should.have.property('name') r[0].should.have.property('title') r[0].should.not.have.keys('_id') done() } }) } else { log(err) } }) }); it('test API -> clearAll', function(done) { s.clearAll((err, r) => { if (err) { log(err) } else { log(r) done() } }) }); });