2026-09-27 00:51:32 +02:00
import { beforeAll } from 'vitest' ;
import mysql from 'mysql2/promise' ;
import '../src/core/config.js' ;
/** Vor jeder Testdatei: Datenzeilen leeren (Testdatenbank!), Stammdaten (Steuersätze, Einstellungen) und Zähler zurücksetzen. */
2026-09-27 08:53:27 +02:00
const DATA = [ 'backup_targets' , 'backup_settings' , 'domain_tlds' , 'domain_records' , 'ticket_attachments' , 'ticket_messages' , 'tickets' , 'audit_events' , 'jobs' , 'mail_log' , 'contracts' , 'order_items' , 'orders' , 'product_versions' , 'products' , 'resources' , 'connector_instances' , 'sessions' , 'mfa_totp' , 'recovery_codes' , 'user_tokens' , 'memberships' , 'billing_profiles' , 'organizations' , 'users' ] ;
2026-09-27 00:51:32 +02:00
beforeAll ( async ( ) = > {
if ( process . env . DB_NAME !== 'kundencenter_test' ) throw new Error ( 'Tests dürfen nur gegen kundencenter_test laufen' ) ;
const c = await mysql . createConnection ( { host : process.env.DB_HOST ? ? '127.0.0.1' , user : process.env.DB_USER ! , password : process.env.DB_PASSWORD ! , database : 'kundencenter_test' } ) ;
await c . query ( 'SET FOREIGN_KEY_CHECKS = 0' ) ;
for ( const t of DATA ) await c . query ( ` TRUNCATE TABLE \` ${ t } \` ` ) ;
await c . query ( 'SET FOREIGN_KEY_CHECKS = 1' ) ;
await c . query ( "UPDATE customer_sequences SET next_value = 10000; UPDATE number_sequences SET next_value = CASE name WHEN 'order' THEN 20000 ELSE 30000 END" . split ( ';' ) [ 0 ] ) ;
await c . query ( "UPDATE number_sequences SET next_value = CASE name WHEN 'order' THEN 20000 ELSE 30000 END" ) ;
await c . query ( 'UPDATE domain_settings SET tier = 1, margin_type = NULL, margin_value = NULL' ) ;
await c . end ( ) ;
} ) ;