Add provider dropdown and per-project Gitea base URL to metabox
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../admin/metabox.php';
|
||||
|
||||
/**
|
||||
* @covers \projects_portfolio_save_meta_box
|
||||
*/
|
||||
class Metabox_Test extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
protected function setUp(): void {
|
||||
\Brain\Monkey\setUp();
|
||||
}
|
||||
|
||||
protected function tearDown(): void {
|
||||
$_POST = [];
|
||||
\Brain\Monkey\tearDown();
|
||||
}
|
||||
|
||||
/** @var array<string,string> */
|
||||
private array $saved = [];
|
||||
|
||||
protected function setUpSaveStubs(): void {
|
||||
$this->saved = [];
|
||||
\Brain\Monkey\Functions\stubs( [
|
||||
'update_post_meta' => function ( $post_id, $key, $value ) {
|
||||
$this->saved[ $key ] = $value;
|
||||
return true;
|
||||
},
|
||||
'wp_verify_nonce' => function () { return true; },
|
||||
'wp_nonce_field' => function () { /* noop */ },
|
||||
] );
|
||||
}
|
||||
|
||||
public function test_save_persists_provider_and_repo_url(): void {
|
||||
$this->setUpSaveStubs();
|
||||
$_POST['projects_portfolio_meta_box_nonce'] = 'nonce';
|
||||
$_POST['projects_portfolio_provider'] = 'gitea';
|
||||
$_POST['projects_portfolio_repo_url'] = 'https://codeberg.org/owner/repo';
|
||||
$_POST['projects_portfolio_gitea_base_url'] = 'https://codeberg.org';
|
||||
|
||||
projects_portfolio_save_meta_box( 42 );
|
||||
|
||||
$this->assertSame( 'gitea', $this->saved['_projects_portfolio_provider'] );
|
||||
$this->assertSame( 'https://codeberg.org/owner/repo', $this->saved['_projects_portfolio_repo_url'] );
|
||||
$this->assertSame( 'https://codeberg.org', $this->saved['_projects_portfolio_gitea_base_url'] );
|
||||
}
|
||||
|
||||
public function test_lazy_migration_from_legacy_url(): void {
|
||||
$existing = [
|
||||
'_projects_portfolio_provider' => '',
|
||||
'_projects_portfolio_repo_url' => '',
|
||||
'_projects_portfolio_github_url' => 'https://github.com/owner/repo',
|
||||
];
|
||||
\Brain\Monkey\Functions\stubs( [
|
||||
'get_post_meta' => function ( $post_id, $key, $single = false ) use ( &$existing ) {
|
||||
return $existing[ $key ] ?? '';
|
||||
},
|
||||
'update_post_meta' => function ( $post_id, $key, $value ) use ( &$existing ) {
|
||||
$existing[ $key ] = $value;
|
||||
return true;
|
||||
},
|
||||
'wp_verify_nonce' => function () { return true; },
|
||||
'wp_nonce_field' => function () { /* noop */ },
|
||||
] );
|
||||
|
||||
// No $_POST provider/repo_url. Lazy migration should fire.
|
||||
$_POST['projects_portfolio_meta_box_nonce'] = 'nonce';
|
||||
|
||||
projects_portfolio_save_meta_box( 1 );
|
||||
|
||||
$this->assertSame( 'github', $existing['_projects_portfolio_provider'] );
|
||||
$this->assertSame( 'https://github.com/owner/repo', $existing['_projects_portfolio_repo_url'] );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user