Files
michaelschiemer/tests/debug/test-presave-simple.php
Michael Schiemer 5050c7d73a docs: consolidate documentation into organized structure
- Move 12 markdown files from root to docs/ subdirectories
- Organize documentation by category:
  • docs/troubleshooting/ (1 file)  - Technical troubleshooting guides
  • docs/deployment/      (4 files) - Deployment and security documentation
  • docs/guides/          (3 files) - Feature-specific guides
  • docs/planning/        (4 files) - Planning and improvement proposals

Root directory cleanup:
- Reduced from 16 to 4 markdown files in root
- Only essential project files remain:
  • CLAUDE.md (AI instructions)
  • README.md (Main project readme)
  • CLEANUP_PLAN.md (Current cleanup plan)
  • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements)

This improves:
 Documentation discoverability
 Logical organization by purpose
 Clean root directory
 Better maintainability
2025-10-05 11:05:04 +02:00

92 lines
3.2 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use App\Domain\PreSave\PreSaveCampaign;
use App\Domain\PreSave\PreSaveCampaignRepository;
use App\Domain\PreSave\PreSaveRegistration;
use App\Domain\PreSave\PreSaveRegistrationRepository;
use App\Domain\PreSave\ValueObjects\CampaignStatus;
use App\Domain\PreSave\ValueObjects\StreamingPlatform;
use App\Domain\PreSave\ValueObjects\TrackUrl;
use App\Framework\OAuth\Storage\OAuthTokenRepository;
use App\Framework\OAuth\Storage\StoredOAuthToken;
use App\Framework\Database\PdoConnection;
use App\Framework\Core\ValueObjects\Timestamp;
echo "=== Simple Pre-Save System Test ===" . PHP_EOL . PHP_EOL;
// Create MySQL database connection
$pdo = new PDO(
'mysql:host=db;dbname=michaelschiemer;charset=utf8mb4',
'mdb-user',
'StartSimple2024!'
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$connection = new PdoConnection($pdo);
// Create repositories
$campaignRepo = new PreSaveCampaignRepository($connection);
$registrationRepo = new PreSaveRegistrationRepository($connection);
$tokenRepo = new OAuthTokenRepository($connection);
echo "✓ Database connected and repositories created" . PHP_EOL . PHP_EOL;
// Test 1: Create campaign
echo "Test 1: Creating campaign..." . PHP_EOL;
$campaign = PreSaveCampaign::create(
title: 'Test Album',
artistName: 'Test Artist',
coverImageUrl: 'https://example.com/cover.jpg',
releaseDate: Timestamp::fromFloat(time() + (7 * 24 * 60 * 60)),
trackUrls: [
TrackUrl::create(StreamingPlatform::SPOTIFY, '3n3Ppam7vgaVa1iaRUc9Lp'),
],
description: 'Test description',
startDate: Timestamp::now()
);
$savedCampaign = $campaignRepo->save($campaign);
echo "✓ Campaign created with ID: {$savedCampaign->id}" . PHP_EOL . PHP_EOL;
$campaign = $savedCampaign;
// Test 2: Create registration
echo "Test 2: Creating registration..." . PHP_EOL;
$registration = PreSaveRegistration::create(
campaignId: $campaign->id,
userId: 'test_user',
platform: StreamingPlatform::SPOTIFY
);
$savedRegistration = $registrationRepo->save($registration);
$registration = $savedRegistration;
echo "✓ Registration created with ID: {$registration->id}" . PHP_EOL . PHP_EOL;
// Test 3: Find registrations
echo "Test 3: Finding registrations..." . PHP_EOL;
$found = $registrationRepo->findByCampaign($campaign->id);
echo "✓ Found " . count($found) . " registration(s)" . PHP_EOL . PHP_EOL;
// Test 4: Publish campaign
echo "Test 4: Publishing campaign..." . PHP_EOL;
$publishedCampaign = $campaign->publish();
$campaignRepo->save($publishedCampaign);
echo "✓ Campaign status: {$publishedCampaign->status->value}" . PHP_EOL . PHP_EOL;
// Test 5: Process registration (mark as completed)
echo "Test 5: Processing registration..." . PHP_EOL;
$processed = $registration->markAsCompleted();
$registrationRepo->save($processed);
echo "✓ Registration status: {$processed->status->value}" . PHP_EOL . PHP_EOL;
// Cleanup
echo "Cleanup..." . PHP_EOL;
$campaignRepo->delete($campaign->id);
echo "✓ Campaign deleted" . PHP_EOL . PHP_EOL;
echo "=== All tests passed! ===" . PHP_EOL;