Files
shopify-ai-backup/chat/templates/headers and footers/pc-head-and-foot/comprehensive-test.php
2026-02-09 18:09:12 +00:00

275 lines
9.7 KiB
PHP

<?php
/**
* Comprehensive Plugin Test
* Tests all plugin functionality: database, snippets, saving, deleting, etc.
*/
// Include WordPress
require_once dirname(__FILE__) . '/../../../../wp-load.php';
echo '<h1>Headers & Footers Plugin - Comprehensive Test</h1>';
echo '<p>Test Date: ' . date('Y-m-d H:i:s') . '</p>';
$all_passed = true;
// Test 1: Include Classes
echo '<h2>Test 1: Include Plugin Classes</h2>';
try {
require_once dirname(__FILE__) . '/includes/class-database.php';
require_once dirname(__FILE__) . '/includes/class-snippet.php';
echo '<p style="color: green;">✓ Classes loaded successfully</p>';
} catch (Exception $e) {
echo '<p style="color: red;">✗ Failed to load classes: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
// Test 2: Database Table Creation
echo '<h2>Test 2: Database Table Creation</h2>';
try {
PC_HFAP_Database::create_tables();
global $wpdb;
$table_name = PC_HFAP_Database::get_table_name();
$table_exists = $wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', $table_name));
if ($table_name === $table_exists) {
echo '<p style="color: green;">✓ Table exists: ' . $table_name . '</p>';
} else {
echo '<p style="color: red;">✗ Table does not exist!</p>';
$all_passed = false;
}
} catch (Exception $e) {
echo '<p style="color: red;">✗ Database error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
// Test 3: Insert Snippet
echo '<h2>Test 3: Insert New Snippet</h2>';
$test_snippet_id = null;
try {
$data = array(
'title' => 'Test Snippet ' . date('Y-m-d H:i:s'),
'location' => 'header',
'code' => '<!-- Test header code -->'
);
$snippet = new PC_HFAP_Snippet($data);
$result = $snippet->save();
if ($result) {
$test_snippet_id = $result;
echo '<p style="color: green;">✓ Snippet created with ID: ' . $result . '</p>';
} else {
echo '<p style="color: red;">✗ Failed to create snippet</p>';
global $wpdb;
echo '<p>Error: ' . $wpdb->last_error . '</p>';
$all_passed = false;
}
} catch (Exception $e) {
echo '<p style="color: red;">✗ Insert error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
// Test 4: Retrieve Snippet
echo '<h2>Test 4: Retrieve Snippet by ID</h2>';
if ($test_snippet_id) {
try {
$snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($snippet && $snippet->get_id()) {
echo '<p style="color: green;">✓ Snippet retrieved successfully</p>';
echo '<ul>';
echo '<li>ID: ' . $snippet->get_id() . '</li>';
echo '<li>Title: ' . esc_html($snippet->get_title()) . '</li>';
echo '<li>Location: ' . $snippet->get_location() . '</li>';
echo '<li>Code: ' . esc_html($snippet->get_code()) . '</li>';
echo '</ul>';
} else {
echo '<p style="color: red;">✗ Failed to retrieve snippet</p>';
$all_passed = false;
}
} catch (Exception $e) {
echo '<p style="color: red;">✗ Retrieve error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
} else {
echo '<p style="color: orange;">⚠ Skipped (no test snippet ID)</p>';
}
// Test 5: Update Snippet
echo '<h2>Test 5: Update Snippet</h2>';
if ($test_snippet_id) {
try {
$snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($snippet) {
$snippet->set_title('Updated Test Snippet');
$snippet->set_code('<!-- Updated test code -->');
$result = $snippet->save();
if ($result !== false) {
// Verify update
$updated_snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($updated_snippet->get_title() === 'Updated Test Snippet') {
echo '<p style="color: green;">✓ Snippet updated successfully</p>';
} else {
echo '<p style="color: red;">✗ Update did not persist</p>';
$all_passed = false;
}
} else {
echo '<p style="color: red;">✗ Update failed</p>';
global $wpdb;
echo '<p>Error: ' . $wpdb->last_error . '</p>';
$all_passed = false;
}
} else {
echo '<p style="color: red;">✗ Snippet not found for update</p>';
$all_passed = false;
}
} catch (Exception $e) {
echo '<p style="color: red;">✗ Update error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
} else {
echo '<p style="color: orange;">⚠ Skipped (no test snippet ID)</p>';
}
// Test 6: Get All Snippets
echo '<h2>Test 6: Get All Snippets</h2>';
try {
$snippets = PC_HFAP_Snippet::get_all();
echo '<p style="color: green;">✓ Retrieved ' . count($snippets) . ' snippet(s)</p>';
if (!empty($snippets)) {
echo '<table border="1" cellpadding="5">';
echo '<tr><th>ID</th><th>Title</th><th>Location</th></tr>';
foreach ($snippets as $s) {
echo '<tr>';
echo '<td>' . $s->get_id() . '</td>';
echo '<td>' . esc_html($s->get_title()) . '</td>';
echo '<td>' . $s->get_location() . '</td>';
echo '</tr>';
}
echo '</table>';
}
} catch (Exception $e) {
echo '<p style="color: red;">✗ Get all error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
// Test 7: Delete Snippet
echo '<h2>Test 7: Delete Snippet</h2>';
if ($test_snippet_id) {
try {
$snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if ($snippet) {
$result = $snippet->delete();
if ($result) {
// Verify deletion
$deleted_snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id);
if (!$deleted_snippet) {
echo '<p style="color: green;">✓ Snippet deleted successfully</p>';
} else {
echo '<p style="color: red;">✗ Snippet still exists after delete</p>';
$all_passed = false;
}
} else {
echo '<p style="color: red;">✗ Delete failed</p>';
global $wpdb;
echo '<p>Error: ' . $wpdb->last_error . '</p>';
$all_passed = false;
}
} else {
echo '<p style="color: red;">✗ Snippet not found for delete</p>';
$all_passed = false;
}
} catch (Exception $e) {
echo '<p style="color: red;">✗ Delete error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
} else {
echo '<p style="color: orange;">⚠ Skipped (no test snippet ID)</p>';
}
// Test 8: Test with Different Locations
echo '<h2>Test 8: Test Different Locations</h2>';
$location_test_ids = array();
try {
foreach (array('header', 'body', 'footer') as $location) {
$data = array(
'title' => 'Location Test - ' . ucfirst($location),
'location' => $location,
'code' => '<!-- Test ' . $location . ' code -->'
);
$snippet = new PC_HFAP_Snippet($data);
$result = $snippet->save();
if ($result) {
$location_test_ids[$location] = $result;
echo '<p style="color: green;">✓ Created ' . $location . ' snippet (ID: ' . $result . ')</p>';
} else {
echo '<p style="color: red;">✗ Failed to create ' . $location . ' snippet</p>';
$all_passed = false;
}
}
} catch (Exception $e) {
echo '<p style="color: red;">✗ Location test error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
// Test 9: Get Snippets by Location
echo '<h2>Test 9: Get Snippets by Location</h2>';
try {
$headers = PC_HFAP_Snippet::get_headers();
$bodies = PC_HFAP_Snippet::get_bodies();
$footers = PC_HFAP_Snippet::get_footers();
echo '<p>Header snippets: ' . count($headers) . '</p>';
echo '<p>Body snippets: ' . count($bodies) . '</p>';
echo '<p>Footer snippets: ' . count($footers) . '</p>';
echo '<p style="color: green;">✓ Location queries work correctly</p>';
} catch (Exception $e) {
echo '<p style="color: red;">✗ Location query error: ' . $e->getMessage() . '</p>';
$all_passed = false;
}
// Clean up test snippets
echo '<h2>Cleanup</h2>';
try {
global $wpdb;
$table_name = PC_HFAP_Database::get_table_name();
// Delete test snippets
$deleted = $wpdb->query("DELETE FROM $table_name WHERE title LIKE 'Test Snippet%' OR title LIKE 'Updated Test%' OR title LIKE 'Location Test%' OR title LIKE 'Database Test%'");
if ($deleted !== false) {
echo '<p style="color: green;">✓ Cleaned up ' . $deleted . ' test snippet(s)</p>';
}
// Delete location test snippets
foreach ($location_test_ids as $location => $id) {
$wpdb->delete($table_name, array('id' => $id), array('%d'));
}
echo '<p style="color: green;">✓ Cleaned up location test snippets</p>';
} catch (Exception $e) {
echo '<p style="color: red;">✗ Cleanup error: ' . $e->getMessage() . '</p>';
}
// Final Result
echo '<h2>Test Summary</h2>';
if ($all_passed) {
echo '<p style="color: green; font-size: 20px;">✓ ALL TESTS PASSED!</p>';
} else {
echo '<p style="color: red; font-size: 20px;">✗ SOME TESTS FAILED</p>';
}
echo '<h3>Next Steps</h3>';
echo '<ul>';
echo '<li><a href="' . admin_url('admin.php?page=pc-hfap-snippets') . '">View Snippets Admin Page</a></li>';
echo '<li><a href="' . admin_url('admin.php?page=pc-hfap-add-snippet') . '">Add New Snippet</a></li>';
echo '<li><a href="' . admin_url('admin.php?page=pc-hfap-settings') . '">Plugin Settings</a></li>';
echo '</ul>';