import assert from 'node:assert/strict'; import fs from 'node:fs'; import path from 'node:path'; import test from 'node:test'; const root = process.cwd(); const read = (relative: string) => fs.readFileSync(path.join(root, relative), 'utf8'); test('F4 removes Survey modules from the active API', () => { const app = read('src/app.module.ts'); assert.doesNotMatch(app, /SurveyPlanningModule/); assert.doesNotMatch(app, /SurveyExecutionModule/); const entities = read('src/database/entities/index.ts'); assert.doesNotMatch(entities, /SurveyCampaign|SurveyTargetReport|survey-campaign|survey-target-report/); }); test('F4 removes survey permissions and survey-specific tables through a new cleanup migration', () => { const migration = read('src/database/migrations/1790053200000-phase-f4-remove-survey-subsystem.ts'); assert.match(migration, /code LIKE 'surveys\.\%'/); assert.match(migration, /DROP TABLE IF EXISTS survey_target_report_media/); assert.match(migration, /DROP TABLE IF EXISTS survey_target_report_versions/); assert.match(migration, /DROP TABLE IF EXISTS survey_target_reports/); assert.match(migration, /DROP TABLE IF EXISTS survey_campaign_targets/); assert.match(migration, /DROP TABLE IF EXISTS survey_campaigns/); });