@db2lake/core
Version:
Core interfaces and utilities for db2lake
45 lines • 1.72 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const pipeline_1 = require("./pipeline");
class MockSource {
constructor() {
this.connected = false;
}
async connect() { this.connected = true; }
async *fetch() {
yield [1, 2];
yield [3];
}
async close() { this.connected = false; }
}
class MockDestination {
constructor() {
this.inserted = [];
}
async connect() { }
async insert(rows) { this.inserted.push(...rows); }
async close() { }
}
class TestPipeline extends pipeline_1.Pipeline {
}
(0, vitest_1.describe)("IPipeline (core)", () => {
(0, vitest_1.it)("processes batches, applies transformer, and updates metrics", async () => {
const source = new MockSource();
const dest = new MockDestination();
const transformer = (data) => data.map((n) => n * 2);
const logs = [];
const logger = (level, message, data) => logs.push({ level, message, data });
const pipeline = new TestPipeline(source, dest, transformer, logger);
await pipeline.run();
// destination should have the transformed rows
(0, vitest_1.expect)(dest.inserted).toEqual([2, 4, 6]);
const metrics = pipeline.getMetrics();
(0, vitest_1.expect)(metrics.batchCount).toBe(2);
(0, vitest_1.expect)(metrics.totalRows).toBe(3);
(0, vitest_1.expect)(metrics.cursor).not.toBeNull();
// expect at least one info log about completion
(0, vitest_1.expect)(logs.some((l) => l.level === "info" && /Data processing completed/.test(l.message))).toBe(true);
});
});
//# sourceMappingURL=index.test.js.map
;