import assert from 'node:assert/strict';
import { readFileSync, readdirSync } from 'node:fs';
import { join } from 'node:path';
import test from 'node:test';

test('runtime Prisma seeds do not import frontend files absent from the backend image', () => {
  const prismaDirectory = join(__dirname, '..', '..');
  let checked = 0;

  function checkDirectory(directory: string) {
    for (const entry of readdirSync(directory, { withFileTypes: true })) {
      const path = join(directory, entry.name);
      if (entry.isDirectory()) {
        if (entry.name !== 'migrations' && entry.name !== 'schema') checkDirectory(path);
      } else if (entry.name.endsWith('.ts') && !entry.name.endsWith('.test.ts')) {
        const source = readFileSync(path, 'utf8');
        assert.doesNotMatch(source, /(?:from|import)\s*(?:\(\s*)?['"][^'"]*frontend[\\/]/, path);
        checked++;
      }
    }
  }

  checkDirectory(prismaDirectory);
  assert.ok(checked > 20, 'Expected to check all Prisma runtime seed files');
});
