save_pay_meta($post_id, $data, 7, $settings); } } final class FrontSubmitPayTest extends TestCase { private FrontSubmitPayHarness $submit; protected function setUp(): void { $GLOBALS['aksrt_test_post_meta'] = []; $this->submit = new FrontSubmitPayHarness(); } public function test_manual_cash_price_only_requires_enabled_vip_level(): void { $result = $this->submit->save(101, [ 'pay_enabled' => '1', 'aksrt_pay' => [ 'price' => '10.00', 'vip1_price' => '8.00', ], ], $this->settings(true, false)); self::assertTrue($result['success']); $meta = $GLOBALS['aksrt_test_post_meta'][101][DomainModel::PAY_META_KEY]; self::assertSame('8.00', $meta['vip1_price']); self::assertSame('0.00', $meta['vip2_price']); } public function test_manual_points_price_only_requires_enabled_vip_level(): void { $result = $this->submit->save(102, [ 'pay_enabled' => '1', 'aksrt_pay' => [ 'pay_modo' => 'points', 'points_price' => '100', 'vip2_points' => '50', ], ], $this->settings(false, true)); self::assertTrue($result['success']); $meta = $GLOBALS['aksrt_test_post_meta'][102][DomainModel::PAY_META_KEY]; self::assertSame(0, $meta['vip1_points']); self::assertSame(50, $meta['vip2_points']); } public function test_manual_price_rejects_missing_enabled_vip_level(): void { $result = $this->submit->save(103, [ 'pay_enabled' => '1', 'aksrt_pay' => ['price' => '10.00'], ], $this->settings(true, false)); self::assertFalse($result['success']); self::assertSame('请设置正确的会员价格', $result['message']); } public function test_manual_price_does_not_require_disabled_vip_levels(): void { $result = $this->submit->save(104, [ 'pay_enabled' => '1', 'aksrt_pay' => ['price' => '10.00'], ], $this->settings(false, false)); self::assertTrue($result['success']); $meta = $GLOBALS['aksrt_test_post_meta'][104][DomainModel::PAY_META_KEY]; self::assertSame('0.00', $meta['vip1_price']); self::assertSame('0.00', $meta['vip2_price']); } public function test_download_resource_modal_fields_are_sanitized_as_one_payload(): void { $downloads = DomainModel::sanitize_downloads([ [ 'url' => 'https://example.com/file.zip', 'label' => '镜像下载', 'extract_code' => ' 提取码:1234 ', 'copy_key' => '提取码', 'copy_val' => ' 1234 ', 'class' => 'jb-blue', ], ]); self::assertCount(1, $downloads); self::assertSame('镜像下载', $downloads[0]['label']); self::assertSame('提取码:1234', $downloads[0]['extract_code']); self::assertSame('提取码', $downloads[0]['copy_key']); self::assertSame('1234', $downloads[0]['copy_val']); self::assertSame('jb-blue', $downloads[0]['class']); } private function settings(bool $vip1_enabled, bool $vip2_enabled): array { return [ 'pay_free_s' => true, 'pay_price_min' => '0.00', 'pay_price_max' => '100.00', 'pay_vip_price_s' => true, 'pay_vip_1_enabled' => $vip1_enabled, 'pay_vip_2_enabled' => $vip2_enabled, 'pay_vip_1_discount' => 80, 'pay_vip_2_discount' => 50, ]; } }