- 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.
126 lines
No EOL
4 KiB
PHP
126 lines
No EOL
4 KiB
PHP
<?php
|
|
/**
|
|
* Test doubles for The Events Calendar classes and functions
|
|
*/
|
|
|
|
if (!class_exists('Tribe__Events__Main')) {
|
|
class Tribe__Events__Main {
|
|
const POSTTYPE = 'tribe_events';
|
|
const VENUE_POST_TYPE = 'tribe_venue';
|
|
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
|
|
|
public static function registerPostType() {
|
|
register_post_type(self::POSTTYPE, [
|
|
'public' => true,
|
|
'label' => 'Events'
|
|
]);
|
|
register_post_type(self::VENUE_POST_TYPE, [
|
|
'public' => true,
|
|
'label' => 'Venues'
|
|
]);
|
|
register_post_type(self::ORGANIZER_POST_TYPE, [
|
|
'public' => true,
|
|
'label' => 'Organizers'
|
|
]);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Register post types when file is loaded
|
|
if (function_exists('register_post_type')) {
|
|
Tribe__Events__Main::registerPostType();
|
|
}
|
|
|
|
// Mock TEC functions if they don't exist
|
|
if (!function_exists('tribe_get_start_date')) {
|
|
function tribe_get_start_date($event_id) {
|
|
return get_post_meta($event_id, '_EventStartDate', true);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_end_date')) {
|
|
function tribe_get_end_date($event_id) {
|
|
return get_post_meta($event_id, '_EventEndDate', true);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_cost')) {
|
|
function tribe_get_cost($event_id, $with_currency_symbol = false) {
|
|
$cost = get_post_meta($event_id, '_EventCost', true);
|
|
if ($with_currency_symbol) {
|
|
$symbol = get_post_meta($event_id, '_EventCurrencySymbol', true) ?: '$';
|
|
return $symbol . $cost;
|
|
}
|
|
return $cost;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_event_is_all_day')) {
|
|
function tribe_event_is_all_day($event_id) {
|
|
return get_post_meta($event_id, '_EventAllDay', true) === 'yes';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_is_recurring_event')) {
|
|
function tribe_is_recurring_event($event_id) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_timezone')) {
|
|
function tribe_get_timezone($event_id = null) {
|
|
return get_option('timezone_string') ?: 'UTC';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_venue_website_link')) {
|
|
function tribe_get_venue_website_link($venue_id) {
|
|
$url = get_post_meta($venue_id, '_VenueURL', true);
|
|
return $url ? sprintf('<a href="%s">%s</a>', esc_url($url), esc_url($url)) : '';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_organizer_website_link')) {
|
|
function tribe_get_organizer_website_link($organizer_id) {
|
|
$url = get_post_meta($organizer_id, '_OrganizerWebsite', true);
|
|
return $url ? sprintf('<a href="%s">%s</a>', esc_url($url), esc_url($url)) : '';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_venue')) {
|
|
function tribe_get_venue($venue_id) {
|
|
return get_post($venue_id);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_venue_details')) {
|
|
function tribe_get_venue_details($venue_id) {
|
|
return [
|
|
'name' => get_the_title($venue_id),
|
|
'address' => get_post_meta($venue_id, '_VenueAddress', true),
|
|
'city' => get_post_meta($venue_id, '_VenueCity', true),
|
|
'state' => get_post_meta($venue_id, '_VenueState', true),
|
|
'zip' => get_post_meta($venue_id, '_VenueZip', true),
|
|
'country' => get_post_meta($venue_id, '_VenueCountry', true),
|
|
'phone' => get_post_meta($venue_id, '_VenuePhone', true),
|
|
'website' => get_post_meta($venue_id, '_VenueURL', true)
|
|
];
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_organizer')) {
|
|
function tribe_get_organizer($organizer_id) {
|
|
return get_post($organizer_id);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('tribe_get_organizer_details')) {
|
|
function tribe_get_organizer_details($organizer_id) {
|
|
return [
|
|
'name' => get_the_title($organizer_id),
|
|
'phone' => get_post_meta($organizer_id, '_OrganizerPhone', true),
|
|
'email' => get_post_meta($organizer_id, '_OrganizerEmail', true),
|
|
'website' => get_post_meta($organizer_id, '_OrganizerWebsite', true)
|
|
];
|
|
}
|
|
} |