Files
wordpress-theme-aksrt/tests/widget-system/runtime-assets-behavior-harness.php
kate522andClaude Opus 5 35bb96e82f refactor: rename the theme brand and every identifier from AKSRT to Jio
Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.

Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
  cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
  window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)

Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
  so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
  (dropped 3 stale entries, added the 17 missing ones)

Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
  get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
  when it is empty

Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.

Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-11-01 20:05:04 +08:00

98 lines
4.5 KiB
PHP

<?php
/** Exercise ScriptsPart1c's _win runtime version with an isolated asset tree. */
declare(strict_types=1);
define('ABSPATH', __DIR__ . DIRECTORY_SEPARATOR);
define('JIO_VERSION', 'theme-fallback');
define('JIO_URI', 'https://example.test/theme');
$GLOBALS['runtime_asset_fixture_root'] = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'jio-runtime-assets-' . bin2hex(random_bytes(6));
$GLOBALS['runtime_asset_localized'] = [];
mkdir($GLOBALS['runtime_asset_fixture_root'] . '/assets/js/runtime', 0777, true);
function get_template_directory(): string { return $GLOBALS['runtime_asset_fixture_root']; }
function get_template_directory_uri(): string { return 'https://example.test/theme'; }
function wp_enqueue_script(...$args): void { unset($args); }
function wp_enqueue_style(...$args): void { unset($args); }
function wp_register_script(...$args): void { unset($args); }
function wp_register_style(...$args): void { unset($args); }
function wp_localize_script(string $handle, string $object_name, array $data): bool {
$GLOBALS['runtime_asset_localized'][$handle][$object_name] = $data;
return true;
}
function __($text, $domain = null): string { return (string) $text; }
function sanitize_key($value): string { return preg_replace('/[^a-z0-9_-]/', '', strtolower((string) $value)) ?? ''; }
function home_url(string $path = '/'): string { return 'https://example.test' . $path; }
function admin_url(string $path = ''): string { return 'https://example.test/wp-admin/' . $path; }
function wp_login_url(): string { return 'https://example.test/login'; }
function wp_registration_url(): string { return 'https://example.test/register'; }
function wp_lostpassword_url(): string { return 'https://example.test/lost-password'; }
function rest_url(string $path = ''): string { return 'https://example.test/wp-json/' . $path; }
function esc_url_raw($url): string { return (string) $url; }
function get_allowed_mime_types(): array { return ['jpg|jpeg' => 'image/jpeg']; }
function wp_create_nonce(string $action): string { return 'nonce-' . $action; }
function get_query_var(string $name, $default = '') { return $default; }
function is_user_logged_in(): bool { return false; }
function get_current_user_id(): int { return 0; }
function wp_max_upload_size(): int { return 1048576; }
function is_page_template(string $template = ''): bool { return false; }
function jio_is_lazy(string $scope): bool { return false; }
function jio_get_lazy_thumb(string $size = ''): string { return 'https://example.test/lazy.svg'; }
function jio_get_default_avatar_url(): string { return 'https://example.test/avatar.png'; }
require dirname(__DIR__, 2) . '/src/Core/ScriptsPart1c.php';
class RuntimeAssetBehaviorHarness {
use \Jio\Core\ScriptsPart1c;
public function enqueue(): void {
$this->enqueue_public_fonts_js_and_data('https://example.test/theme', 'jio-public', [], false, false, false, false, JIO_VERSION, []);
}
private function resolve_frontend_routes(): array {
return ['orders' => '/orders', 'resources' => '/resources'];
}
}
function write_runtime_file(string $relative, int $mtime): void {
$path = get_template_directory() . '/assets/js/runtime/' . $relative;
if (!is_dir(dirname($path))) mkdir(dirname($path), 0777, true);
file_put_contents($path, '// ' . $relative);
touch($path, $mtime);
clearstatcache(true, $path);
}
function latest_runtime_version(): string {
$GLOBALS['runtime_asset_localized'] = [];
(new RuntimeAssetBehaviorHarness())->enqueue();
return (string) $GLOBALS['runtime_asset_localized']['loader_js']['_win']['ver'];
}
$baseTime = time() - 600;
write_runtime_file('main.js', $baseTime + 10);
write_runtime_file('main.min.js', $baseTime + 30);
write_runtime_file('imgbox.js', $baseTime + 20);
$versions = [latest_runtime_version()];
write_runtime_file('main.min.js', $baseTime + 40);
$versions[] = latest_runtime_version();
write_runtime_file('comment-tools.js', $baseTime + 50);
$versions[] = latest_runtime_version();
foreach (glob(get_template_directory() . '/assets/js/runtime/*.js') ?: [] as $file) unlink($file);
$versions[] = latest_runtime_version();
foreach (glob(get_template_directory() . '/assets/js/runtime/*') ?: [] as $file) {
if (is_dir($file)) rmdir($file);
}
rmdir(get_template_directory() . '/assets/js/runtime');
rmdir(get_template_directory() . '/assets/js');
rmdir(get_template_directory() . '/assets');
rmdir(get_template_directory());
echo json_encode([
'versions' => $versions,
'expected' => [(string) ($baseTime + 30), (string) ($baseTime + 40), (string) ($baseTime + 50), JIO_VERSION],
], JSON_THROW_ON_ERROR);