Files
codecanyon-rest-api-for-per…/api/simple_migration_test.php
Oussama Douhou 23cc6629f1 license
2025-10-29 19:20:51 +01:00

166 lines
5.1 KiB
PHP

<?php
/**
* Simple test to verify migration files and structure
*/
echo "Simple API Module Migration Test\n";
echo "=================================\n\n";
// Test 1: Check if migration files exist
echo "Test 1: Checking migration files...\n";
$migration_files = glob('migrations/*_version_*.php');
if (!empty($migration_files)) {
echo "✅ Found " . count($migration_files) . " migration files:\n";
$versions = [];
foreach ($migration_files as $file) {
$filename = basename($file);
if (preg_match('/(\d+)_version_(\d+)\.php$/', $filename, $matches)) {
$version = (int) $matches[1];
$versions[] = $version;
echo " - Version $version: $filename\n";
}
}
// Check version sequence
sort($versions);
$expected_versions = range(min($versions), max($versions));
$missing_versions = array_diff($expected_versions, $versions);
if (empty($missing_versions)) {
echo "✅ All versions are sequential\n";
} else {
echo "⚠️ Missing versions: " . implode(', ', $missing_versions) . "\n";
}
} else {
echo "❌ No migration files found in migrations/ directory\n";
}
// Test 2: Check migration runner files
echo "\nTest 2: Checking migration runner files...\n";
$runner_files = [
'migration_runner.php' => 'Advanced migration runner',
'run_migrations.php' => 'Basic migration runner',
'migration_web_interface.php' => 'Web interface',
'migration_template.php' => 'Migration template'
];
foreach ($runner_files as $file => $description) {
if (file_exists($file)) {
echo "$description: $file\n";
} else {
echo "❌ Missing: $file ($description)\n";
}
}
// Test 3: Check migration template
echo "\nTest 3: Checking migration template...\n";
if (file_exists('migration_template.php')) {
$template_content = file_get_contents('migration_template.php');
$required_elements = [
'Migration_Version_{VERSION}',
'extends App_module_migration',
'public function up()',
'public function down()',
'db_prefix()'
];
$missing_elements = [];
foreach ($required_elements as $element) {
if (strpos($template_content, $element) === false) {
$missing_elements[] = $element;
}
}
if (empty($missing_elements)) {
echo "✅ Migration template is complete\n";
} else {
echo "⚠️ Migration template missing: " . implode(', ', $missing_elements) . "\n";
}
} else {
echo "❌ Migration template not found\n";
}
// Test 4: Check documentation
echo "\nTest 4: Checking documentation...\n";
$doc_files = [
'MIGRATION_README.md' => 'Migration documentation',
'API_LICENSE_BYPASS_README.md' => 'License bypass documentation'
];
foreach ($doc_files as $file => $description) {
if (file_exists($file)) {
echo "$description: $file\n";
} else {
echo "❌ Missing: $file ($description)\n";
}
}
// Test 5: Validate a sample migration file
echo "\nTest 5: Validating sample migration...\n";
$sample_file = 'migrations/211_version_211.php'; // Most recent migration
if (file_exists($sample_file)) {
$content = file_get_contents($sample_file);
$validation_checks = [
'class Migration_Version_211' => 'Correct class name',
'extends App_module_migration' => 'Proper inheritance',
'public function up()' => 'Up method exists',
'public function down()' => 'Down method exists',
'db_prefix()' => 'Uses db_prefix function',
'$this->db->query' => 'Uses database queries'
];
$failed_checks = [];
foreach ($validation_checks as $check => $description) {
if (strpos($content, $check) === false) {
$failed_checks[] = $description;
}
}
if (empty($failed_checks)) {
echo "✅ Sample migration file is valid\n";
} else {
echo "⚠️ Sample migration missing: " . implode(', ', $failed_checks) . "\n";
}
} else {
echo "❌ Sample migration file not found\n";
}
// Summary
echo "\n📊 Migration System Validation Summary\n";
echo "=======================================\n";
$checks = [
'Migration files exist' => !empty($migration_files),
'Migration runners available' => file_exists('migration_runner.php'),
'Web interface available' => file_exists('migration_web_interface.php'),
'Template available' => file_exists('migration_template.php'),
'Documentation complete' => file_exists('MIGRATION_README.md'),
'Sample migration valid' => file_exists($sample_file)
];
$passed = 0;
$total = count($checks);
foreach ($checks as $check => $result) {
echo ($result ? '✅' : '❌') . " $check\n";
if ($result) $passed++;
}
echo "\n📈 Score: $passed/$total checks passed\n";
if ($passed === $total) {
echo "\n🎉 Migration system is fully set up and ready to use!\n\n";
echo "Usage instructions:\n";
echo "1. Web interface: migration_web_interface.php\n";
echo "2. CLI: php migration_runner.php\n";
echo "3. Basic: php run_migrations.php\n";
} else {
echo "\n⚠️ Some components are missing. Please check the errors above.\n";
}
?>