upskill-event-manager/wordpress-dev/tests/basic/test-db.php
bengizmo d6211ee364 feat(testing): Implement HVAC_Test_User_Factory and update .gitignore
- Add HVAC_Test_User_Factory class with:
  * User creation with specific roles
  * Multiple role support
  * Persona management system
  * Account cleanup integration
- Create comprehensive test suite in HVAC_Test_User_Factory_Test.php
- Update testing improvement plan documentation
- Add implementation decisions to project memory bank
- Restructure .gitignore with:
  * Whitelist approach for better file management
  * Explicit backup exclusions
  * Specific bin directory inclusions

Part of the Account Management component from the testing framework improvement plan.
2025-04-14 17:41:36 -03:00

209 lines
No EOL
5.9 KiB
PHP

<?php
/**
* Tests for basic database operations without full plugin loading
*/
// Ensure we're running in test mode
if (!defined('HVAC_TEST_DIR')) {
require_once dirname(__DIR__) . '/bootstrap-staging.php';
}
class HVAC_Database_Test extends PHPUnit\Framework\TestCase {
protected $test_post_id;
protected function setUp(): void {
parent::setUp();
// Set staging environment if needed
if (!getenv('HVAC_ENV')) {
putenv('HVAC_ENV=staging');
}
// Create a test event post
$this->test_post_id = create_test_event([
'post_title' => 'Database Test Event',
'post_content' => 'Test content for database operations'
]);
}
protected function tearDown(): void {
// Clean up test post
if ($this->test_post_id) {
wp_delete_post($this->test_post_id, true);
}
parent::tearDown();
}
public function test_event_post_creation() {
$post = get_post($this->test_post_id);
$this->assertNotNull(
$post,
'Should be able to retrieve created event post'
);
$this->assertEquals(
'Database Test Event',
$post->post_title,
'Event title should match created value'
);
$this->assertEquals(
Tribe__Events__Main::POSTTYPE,
$post->post_type,
'Post type should be tribe_events'
);
}
public function test_event_meta_operations() {
// Test adding meta
$result = add_post_meta(
$this->test_post_id,
'_EventStartDate',
'2025-04-10 10:00:00'
);
$this->assertTrue(
$result !== false,
'Should successfully add event start date meta'
);
// Test getting meta
$start_date = get_post_meta(
$this->test_post_id,
'_EventStartDate',
true
);
$this->assertEquals(
'2025-04-10 10:00:00',
$start_date,
'Should retrieve correct event start date'
);
// Test updating meta
$result = update_post_meta(
$this->test_post_id,
'_EventStartDate',
'2025-04-10 11:00:00'
);
$this->assertTrue(
$result !== false,
'Should successfully update event start date'
);
// Verify update
$updated_date = get_post_meta(
$this->test_post_id,
'_EventStartDate',
true
);
$this->assertEquals(
'2025-04-10 11:00:00',
$updated_date,
'Should retrieve updated event start date'
);
}
public function test_event_query() {
// Create additional test events
$event_ids = [];
for ($i = 1; $i <= 3; $i++) {
$event_ids[] = create_test_event([
'post_title' => "Query Test Event $i"
]);
}
// Test WP_Query with event post type
$query = new WP_Query([
'post_type' => Tribe__Events__Main::POSTTYPE,
'posts_per_page' => -1
]);
$this->assertGreaterThanOrEqual(
4, // Including the one from setUp
$query->found_posts,
'Should find all created test events'
);
// Clean up additional events
foreach ($event_ids as $event_id) {
wp_delete_post($event_id, true);
}
}
public function test_venue_organizer_relationships() {
// Create test venue
$venue_id = wp_insert_post([
'post_type' => Tribe__Events__Main::VENUE_POST_TYPE,
'post_title' => 'Test Venue',
'post_status' => 'publish'
]);
// Create test organizer
$organizer_id = wp_insert_post([
'post_type' => Tribe__Events__Main::ORGANIZER_POST_TYPE,
'post_title' => 'Test Organizer',
'post_status' => 'publish'
]);
// Link venue and organizer to event
update_post_meta($this->test_post_id, '_EventVenueID', $venue_id);
update_post_meta($this->test_post_id, '_EventOrganizerID', $organizer_id);
// Test relationships
$this->assertEquals(
$venue_id,
get_post_meta($this->test_post_id, '_EventVenueID', true),
'Event should be linked to correct venue'
);
$this->assertEquals(
$organizer_id,
get_post_meta($this->test_post_id, '_EventOrganizerID', true),
'Event should be linked to correct organizer'
);
// Clean up
wp_delete_post($venue_id, true);
wp_delete_post($organizer_id, true);
}
}
// Add required function if not exists
if (!function_exists('wp_insert_post')) {
function wp_insert_post($args, $wp_error = false) {
static $post_id = 1000;
error_log("[HVAC TEST] Mock wp_insert_post called with args: " . print_r($args, true));
return $post_id++;
}
}
if (!function_exists('wp_delete_post')) {
function wp_delete_post($post_id, $force_delete = false) {
error_log("[HVAC TEST] Mock wp_delete_post called for ID: $post_id");
return true;
}
}
if (!function_exists('get_post')) {
function get_post($post_id) {
error_log("[HVAC TEST] Mock get_post called for ID: $post_id");
$post = new stdClass();
$post->ID = $post_id;
$post->post_type = Tribe__Events__Main::POSTTYPE;
$post->post_title = 'Database Test Event';
return $post;
}
}
if (!class_exists('WP_Query')) {
class WP_Query {
public $found_posts = 4;
public function __construct($args = []) {
error_log("[HVAC TEST] Mock WP_Query constructed with args: " . print_r($args, true));
}
}
}