feat: Integrate TestDataTracker into all test suites

This commit is contained in:
gpt-engineer-app[bot]
2025-10-30 15:08:33 +00:00
parent 6a30a9e568
commit 1874b6ffbd
5 changed files with 80 additions and 38 deletions

View File

@@ -6,6 +6,7 @@
import { supabase } from '@/integrations/supabase/client';
import type { TestSuite, TestResult } from '../testRunner';
import { TestDataTracker } from '../TestDataTracker';
export const dataIntegrityTestSuite: TestSuite = {
id: 'data-integrity',
@@ -102,7 +103,8 @@ export const dataIntegrityTestSuite: TestSuite = {
slug,
park_id: invalidParkId,
category: 'roller_coaster',
status: 'operating'
status: 'operating',
is_test_data: true
});
// This SHOULD fail with foreign key violation
@@ -150,6 +152,7 @@ export const dataIntegrityTestSuite: TestSuite = {
description: 'Tests unique constraints prevent duplicate slugs',
run: async (): Promise<TestResult> => {
const startTime = Date.now();
const tracker = new TestDataTracker();
let parkId: string | null = null;
try {
@@ -161,7 +164,8 @@ export const dataIntegrityTestSuite: TestSuite = {
name: 'Unique Test Park',
slug,
park_type: 'theme_park',
status: 'operating'
status: 'operating',
is_test_data: true
})
.select('id')
.single();
@@ -170,6 +174,7 @@ export const dataIntegrityTestSuite: TestSuite = {
if (!park) throw new Error('No park returned');
parkId = park.id;
tracker.track('parks', parkId);
// Try to create another park with same slug
const { error: duplicateError } = await supabase
@@ -178,7 +183,8 @@ export const dataIntegrityTestSuite: TestSuite = {
name: 'Duplicate Park',
slug, // Same slug
park_type: 'theme_park',
status: 'operating'
status: 'operating',
is_test_data: true
});
// This SHOULD fail with unique violation
@@ -218,8 +224,10 @@ export const dataIntegrityTestSuite: TestSuite = {
timestamp: new Date().toISOString()
};
} finally {
if (parkId) {
await supabase.from('parks').delete().eq('id', parkId);
await tracker.cleanup();
const remaining = await tracker.verifyCleanup();
if (remaining.length > 0) {
console.warn('integrity-003 cleanup incomplete:', remaining);
}
}
}