UNPKG

@db2lake/core

Version:

Core interfaces and utilities for db2lake

45 lines 1.72 kB
"use strict"; 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