Headers & Footers Plugin - Comprehensive Test'; echo '

Test Date: ' . date('Y-m-d H:i:s') . '

'; $all_passed = true; // Test 1: Include Classes echo '

Test 1: Include Plugin Classes

'; try { require_once dirname(__FILE__) . '/includes/class-database.php'; require_once dirname(__FILE__) . '/includes/class-snippet.php'; echo '

✓ Classes loaded successfully

'; } catch (Exception $e) { echo '

✗ Failed to load classes: ' . $e->getMessage() . '

'; $all_passed = false; } // Test 2: Database Table Creation echo '

Test 2: Database Table Creation

'; 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 '

✓ Table exists: ' . $table_name . '

'; } else { echo '

✗ Table does not exist!

'; $all_passed = false; } } catch (Exception $e) { echo '

✗ Database error: ' . $e->getMessage() . '

'; $all_passed = false; } // Test 3: Insert Snippet echo '

Test 3: Insert New Snippet

'; $test_snippet_id = null; try { $data = array( 'title' => 'Test Snippet ' . date('Y-m-d H:i:s'), 'location' => 'header', 'code' => '' ); $snippet = new PC_HFAP_Snippet($data); $result = $snippet->save(); if ($result) { $test_snippet_id = $result; echo '

✓ Snippet created with ID: ' . $result . '

'; } else { echo '

✗ Failed to create snippet

'; global $wpdb; echo '

Error: ' . $wpdb->last_error . '

'; $all_passed = false; } } catch (Exception $e) { echo '

✗ Insert error: ' . $e->getMessage() . '

'; $all_passed = false; } // Test 4: Retrieve Snippet echo '

Test 4: Retrieve Snippet by ID

'; if ($test_snippet_id) { try { $snippet = PC_HFAP_Snippet::get_by_id($test_snippet_id); if ($snippet && $snippet->get_id()) { echo '

✓ Snippet retrieved successfully

'; echo ''; } else { echo '

✗ Failed to retrieve snippet

'; $all_passed = false; } } catch (Exception $e) { echo '

✗ Retrieve error: ' . $e->getMessage() . '

'; $all_passed = false; } } else { echo '

⚠ Skipped (no test snippet ID)

'; } // Test 5: Update Snippet echo '

Test 5: Update Snippet

'; 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(''); $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 '

✓ Snippet updated successfully

'; } else { echo '

✗ Update did not persist

'; $all_passed = false; } } else { echo '

✗ Update failed

'; global $wpdb; echo '

Error: ' . $wpdb->last_error . '

'; $all_passed = false; } } else { echo '

✗ Snippet not found for update

'; $all_passed = false; } } catch (Exception $e) { echo '

✗ Update error: ' . $e->getMessage() . '

'; $all_passed = false; } } else { echo '

⚠ Skipped (no test snippet ID)

'; } // Test 6: Get All Snippets echo '

Test 6: Get All Snippets

'; try { $snippets = PC_HFAP_Snippet::get_all(); echo '

✓ Retrieved ' . count($snippets) . ' snippet(s)

'; if (!empty($snippets)) { echo ''; echo ''; foreach ($snippets as $s) { echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
IDTitleLocation
' . $s->get_id() . '' . esc_html($s->get_title()) . '' . $s->get_location() . '
'; } } catch (Exception $e) { echo '

✗ Get all error: ' . $e->getMessage() . '

'; $all_passed = false; } // Test 7: Delete Snippet echo '

Test 7: Delete Snippet

'; 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 '

✓ Snippet deleted successfully

'; } else { echo '

✗ Snippet still exists after delete

'; $all_passed = false; } } else { echo '

✗ Delete failed

'; global $wpdb; echo '

Error: ' . $wpdb->last_error . '

'; $all_passed = false; } } else { echo '

✗ Snippet not found for delete

'; $all_passed = false; } } catch (Exception $e) { echo '

✗ Delete error: ' . $e->getMessage() . '

'; $all_passed = false; } } else { echo '

⚠ Skipped (no test snippet ID)

'; } // Test 8: Test with Different Locations echo '

Test 8: Test Different Locations

'; $location_test_ids = array(); try { foreach (array('header', 'body', 'footer') as $location) { $data = array( 'title' => 'Location Test - ' . ucfirst($location), 'location' => $location, 'code' => '' ); $snippet = new PC_HFAP_Snippet($data); $result = $snippet->save(); if ($result) { $location_test_ids[$location] = $result; echo '

✓ Created ' . $location . ' snippet (ID: ' . $result . ')

'; } else { echo '

✗ Failed to create ' . $location . ' snippet

'; $all_passed = false; } } } catch (Exception $e) { echo '

✗ Location test error: ' . $e->getMessage() . '

'; $all_passed = false; } // Test 9: Get Snippets by Location echo '

Test 9: Get Snippets by Location

'; try { $headers = PC_HFAP_Snippet::get_headers(); $bodies = PC_HFAP_Snippet::get_bodies(); $footers = PC_HFAP_Snippet::get_footers(); echo '

Header snippets: ' . count($headers) . '

'; echo '

Body snippets: ' . count($bodies) . '

'; echo '

Footer snippets: ' . count($footers) . '

'; echo '

✓ Location queries work correctly

'; } catch (Exception $e) { echo '

✗ Location query error: ' . $e->getMessage() . '

'; $all_passed = false; } // Clean up test snippets echo '

Cleanup

'; 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 '

✓ Cleaned up ' . $deleted . ' test snippet(s)

'; } // Delete location test snippets foreach ($location_test_ids as $location => $id) { $wpdb->delete($table_name, array('id' => $id), array('%d')); } echo '

✓ Cleaned up location test snippets

'; } catch (Exception $e) { echo '

✗ Cleanup error: ' . $e->getMessage() . '

'; } // Final Result echo '

Test Summary

'; if ($all_passed) { echo '

✓ ALL TESTS PASSED!

'; } else { echo '

✗ SOME TESTS FAILED

'; } echo '

Next Steps

'; echo '';