tdengine-client
Version:
A Node.js connector for TDengine.
94 lines (81 loc) • 3.25 kB
JavaScript
const taos = require('../../tdengine');
const { getFeildsFromDll: getFelidFromDll, buildInsertSql, getFieldArr, getResData } = require('../utils/utilTools')
const author = 'xiaolei';
const result = 'passed';
const fileName = __filename.slice(__dirname.length + 1);
const db = 'json_db'
// This is a taos connection
let conn;
// This is a Cursor
let c1;
function executeUpdate(sql, printFlag = false) {
if (printFlag === true) {
console.log(sql);
}
c1.execute(sql, { 'quiet': false });
}
function executeQuery(sql, printFlag = false) {
if (printFlag === true) {
console.log(sql);
}
c1.execute(sql, { quiet: true })
var data = c1.fetchall({ 'quiet': false });
let fields = c1.fields;
let resArr = [];
data.forEach(row => {
row.forEach(data => {
if (data instanceof Date) {
resArr.push(data.taosTimestamp());
} else {
resArr.push(data);
}
})
})
return { resData: resArr, resFeilds: fields };
}
beforeAll(() => {
conn = taos.connect({ host: "127.0.0.1", user: "root", password: "taosdata", config: "/etc/taos", port: 10 });
c1 = conn.cursor();
executeUpdate(`create database if not exists ${db} keep 3650;`);
executeUpdate(`use ${db};`);
});
// Clears the database and adds some testing data.
// Jest will wait for this promise to resolve before running tests.
afterAll(() => {
executeUpdate(`drop database if exists ${db};`);
c1.close();
conn.close();
});
describe("test json tag", () => {
test(`name:json tag;` +
`author:${author};` +
`desc:create,insert,query with json tag;` +
`filename:${fileName};` +
`result:${result}`, () => {
let tableName = 'jsons1';
let createSql = `create table if not exists ${tableName}(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json);`;
executeUpdate(createSql);
let expectResField = getFieldArr(getFelidFromDll(createSql));
let colData = [1591060618000, 1, false, 'json1', '涛思数据'
, 1591060628000, 23, true, '涛思数据', 'json'
, 1591060638000, 54, false, 'tdengine', 'taosdata'];
let tagData = ['{\"tag1\":\"fff\",\"tag2\":5,\"tag3\":true}']
let insertSql = buildInsertSql('json_sub_1', tableName, colData, tagData, 5);
let expectResData = getResData(colData, tagData, 5);
executeUpdate(insertSql);
let result = executeQuery(`select * from ${tableName};`);
let actualResData = result.resData;
let actualResFields = result.resFeilds;
//assert result data length
expect(expectResData.length).toEqual(actualResData.length);
//assert result data
expectResData.forEach((item, index) => {
expect(item).toEqual(actualResData[index]);
});
//assert result meta data
expectResField.forEach((item, index) => {
// console.log(item,index,actualResFields[index]);
expect(item).toEqual(actualResFields[index])
})
})
})