Files
dbx/packages/app-tests/tableDataExport.test.ts
zipgandzipg 2ede64f1cb feat(db): 支持 VictoriaMetrics 数据库
* feat(victoriametrics): support native MetricsQL queries

* fix(victoriametrics): 完善指标浏览和结果导出

* fix(victoriametrics): 修复指标对象通用操作入口

* fix(victoriametrics): 修正指标注释和截断提示

* fix(i18n): 补齐 VictoriaMetrics 连接配置翻译

---------

Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-08-05 23:58:11 +08:00

51 lines
1.8 KiB
TypeScript
Vendored

import { strict as assert } from "node:assert";
import { test } from "vitest";
import { fetchTableDataForExport, TABLE_DATA_EXPORT_PAGE_SIZE } from "../../apps/desktop/src/lib/table/tableDataExport.ts";
import type { QueryResult } from "../../apps/desktop/src/types/database.ts";
function result(rows: QueryResult["rows"]): QueryResult {
return {
columns: ["id"],
rows,
affected_rows: 0,
execution_time_ms: 1,
truncated: false,
has_more: false,
};
}
test("fetchTableDataForExport pages past the 10000 row export boundary", async () => {
const sqls: string[] = [];
const pages = [result(Array.from({ length: TABLE_DATA_EXPORT_PAGE_SIZE }, (_, index) => [index + 1])), result([[10_001], [10_002]])];
const exported = await fetchTableDataForExport({
databaseType: "mysql",
tableName: "users",
buildPageSql: ({ limit, offset }) => (offset ? `SELECT * FROM \`users\` LIMIT ${limit} OFFSET ${offset};` : `SELECT * FROM \`users\` LIMIT ${limit};`),
executePage: async (sql) => {
sqls.push(sql);
return pages.shift() ?? result([]);
},
});
assert.equal(exported.rows.length, TABLE_DATA_EXPORT_PAGE_SIZE + 2);
assert.deepEqual(exported.rows.at(-1), [10_002]);
assert.deepEqual(sqls, ["SELECT * FROM `users` LIMIT 10000;", "SELECT * FROM `users` LIMIT 10000 OFFSET 10000;"]);
assert.equal(exported.truncated, false);
});
test("fetchTableDataForExport executes a VictoriaMetrics range query once", async () => {
const sqls: string[] = [];
const exported = await fetchTableDataForExport({
databaseType: "victoriametrics",
tableName: "flag",
executePage: async (sql) => {
sqls.push(sql);
return result([[1], [2]]);
},
});
assert.deepEqual(sqls, ['{__name__="flag"}[1h]']);
assert.equal(exported.rows.length, 2);
});