mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-22 08:38:08 +02:00
41 lines
1.7 KiB
TypeScript
41 lines
1.7 KiB
TypeScript
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
import { tmpdir } from 'node:os';
|
|
import { join } from 'node:path';
|
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
import { findDbtSchemaFiles, loadDbtSchemaFiles } from '../../../../src/context/ingest/dbt-shared/schema-files.js';
|
|
|
|
describe('dbt shared schema files', () => {
|
|
let tmpRoot: string;
|
|
|
|
beforeEach(async () => {
|
|
tmpRoot = await mkdtemp(join(tmpdir(), 'dbt-schema-files-'));
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await rm(tmpRoot, { recursive: true, force: true });
|
|
});
|
|
|
|
it('loads schema yaml files from dbt search directories and skips project config files', async () => {
|
|
await mkdir(join(tmpRoot, 'models', 'nested'), { recursive: true });
|
|
await mkdir(join(tmpRoot, 'seeds'), { recursive: true });
|
|
await writeFile(join(tmpRoot, 'dbt_project.yml'), 'name: ignored\n');
|
|
await writeFile(join(tmpRoot, 'packages.yml'), 'packages: []\n');
|
|
await writeFile(join(tmpRoot, 'models', 'schema.yml'), 'version: 2\nmodels: []\n');
|
|
await writeFile(join(tmpRoot, 'models', 'nested', 'customers.yaml'), 'version: 2\nmodels: []\n');
|
|
await writeFile(join(tmpRoot, 'seeds', 'seed.yml'), 'version: 2\nseeds: []\n');
|
|
|
|
const paths = await findDbtSchemaFiles(tmpRoot);
|
|
expect(paths.map((path) => path.replace(`${tmpRoot}/`, '')).sort()).toEqual([
|
|
'models/nested/customers.yaml',
|
|
'models/schema.yml',
|
|
'seeds/seed.yml',
|
|
]);
|
|
|
|
const files = await loadDbtSchemaFiles(tmpRoot);
|
|
expect(files.map((file) => file.path).sort()).toEqual([
|
|
'models/nested/customers.yaml',
|
|
'models/schema.yml',
|
|
'seeds/seed.yml',
|
|
]);
|
|
});
|
|
});
|