mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-25 08:48:08 +02:00
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { parseMetricflowPullConfig, pullConfigFromMetricflowIntegration } from '../../../../../src/context/ingest/adapters/metricflow/pull-config.js';
|
|
|
|
describe('metricflow pull config', () => {
|
|
it('applies defaults for optional git fields', () => {
|
|
const parsed = parseMetricflowPullConfig({
|
|
repoUrl: 'https://github.com/acme/analytics.git',
|
|
});
|
|
|
|
expect(parsed).toEqual({
|
|
repoUrl: 'https://github.com/acme/analytics.git',
|
|
branch: 'main',
|
|
path: null,
|
|
authToken: null,
|
|
parsedTargetTables: {},
|
|
});
|
|
});
|
|
|
|
it('preserves provided branch, path, token, and parsed target tables', () => {
|
|
const parsed = parseMetricflowPullConfig({
|
|
repoUrl: 'https://github.com/acme/analytics.git',
|
|
branch: 'release',
|
|
path: 'dbt',
|
|
authToken: 'secret-token',
|
|
parsedTargetTables: {
|
|
orders: {
|
|
catalog: 'warehouse',
|
|
schema: 'marts',
|
|
name: 'orders',
|
|
ok: true,
|
|
canonicalTable: 'analytics.marts.orders',
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(parsed.branch).toBe('release');
|
|
expect(parsed.path).toBe('dbt');
|
|
expect(parsed.authToken).toBe('secret-token');
|
|
expect(parsed.parsedTargetTables.orders).toMatchObject({ ok: true, name: 'orders' });
|
|
});
|
|
|
|
it('rejects missing repoUrl', () => {
|
|
expect(() => parseMetricflowPullConfig({})).toThrow();
|
|
});
|
|
|
|
it('builds pull config from a local metricflow integration block', () => {
|
|
expect(
|
|
pullConfigFromMetricflowIntegration({
|
|
repoUrl: 'https://github.com/acme/analytics.git',
|
|
branch: null,
|
|
path: null,
|
|
authToken: null,
|
|
}),
|
|
).toEqual({
|
|
repoUrl: 'https://github.com/acme/analytics.git',
|
|
branch: 'main',
|
|
path: null,
|
|
authToken: null,
|
|
parsedTargetTables: {},
|
|
});
|
|
});
|
|
|
|
it('throws a clear error when the integration block has no repo URL', () => {
|
|
expect(() => pullConfigFromMetricflowIntegration({ repoUrl: null })).toThrow(
|
|
'metricflow integration config missing repoUrl',
|
|
);
|
|
});
|
|
});
|