bootstrapWeb(); $container = $app->getContainer(); // Get repositories $campaignRepo = $container->get(PreSaveCampaignRepository::class); $registrationRepo = $container->get(PreSaveRegistrationRepository::class); // Test 1: Create a campaign echo "Test 1: Creating a Pre-Save Campaign..." . PHP_EOL; $campaign = PreSaveCampaign::create( title: 'Summer Vibes Album', artistName: 'The Cool Artists', coverImageUrl: 'https://example.com/cover.jpg', description: 'An amazing summer album with 12 tracks', releaseDate: time() + (7 * 24 * 60 * 60), // Release in 7 days trackUrls: [ 'spotify' => 'https://open.spotify.com/album/xyz', 'apple_music' => 'https://music.apple.com/album/xyz', 'tidal' => 'https://tidal.com/album/xyz', ], startDate: time() // Start now ); $campaignRepo->save($campaign); echo "✓ Campaign created with ID: {$campaign->id}" . PHP_EOL . PHP_EOL; // Test 2: Create a registration echo "Test 2: Creating a Pre-Save Registration..." . PHP_EOL; $registration = PreSaveRegistration::create( campaignId: $campaign->id, userId: 'user123', platform: Platform::SPOTIFY, registeredAt: time() ); $registrationRepo->save($registration); echo "✓ Registration created with ID: {$registration->id}" . PHP_EOL; echo " - User: {$registration->userId}" . PHP_EOL; echo " - Platform: {$registration->platform->value}" . PHP_EOL; echo " - Status: {$registration->status->value}" . PHP_EOL . PHP_EOL; // Test 3: Find registrations by campaign echo "Test 3: Finding registrations for campaign..." . PHP_EOL; $registrations = $registrationRepo->findByCampaign($campaign->id); echo "✓ Found " . count($registrations) . " registration(s)" . PHP_EOL . PHP_EOL; // Test 4: Update campaign status echo "Test 4: Updating campaign status..." . PHP_EOL; $campaign = $campaign->updateStatus(CampaignStatus::ACTIVE); $campaignRepo->save($campaign); echo "✓ Campaign status updated to: {$campaign->status->value}" . PHP_EOL . PHP_EOL; // Test 5: Process registration echo "Test 5: Processing registration..." . PHP_EOL; $registration = $registration->process(time()); $registrationRepo->save($registration); echo "✓ Registration processed" . PHP_EOL; echo " - New status: {$registration->status->value}" . PHP_EOL; echo " - Processed at: " . date('Y-m-d H:i:s', $registration->processedAt ?? time()) . PHP_EOL . PHP_EOL; // Test 6: Foreign key cascade delete echo "Test 6: Testing foreign key cascade delete..." . PHP_EOL; $campaignRepo->delete($campaign->id); $registrationsAfterDelete = $registrationRepo->findByCampaign($campaign->id); echo "✓ Campaign deleted" . PHP_EOL; echo "✓ Registrations after delete: " . count($registrationsAfterDelete) . " (should be 0 due to CASCADE)" . PHP_EOL . PHP_EOL; echo "=== All tests completed successfully! ===" . PHP_EOL;