Files
saasshop/tests/Feature/AdminPlatformOrderShowRefundGovernanceFormsShouldDisableOnSubmitTest.php

77 lines
2.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Tests\Feature;
use App\Models\Merchant;
use App\Models\Plan;
use App\Models\PlatformOrder;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class AdminPlatformOrderShowRefundGovernanceFormsShouldDisableOnSubmitTest extends TestCase
{
use RefreshDatabase;
protected function loginAsPlatformAdmin(): void
{
$this->seed();
$this->post('/admin/login', [
'email' => 'platform.admin@demo.local',
'password' => 'Platform@123456',
])->assertRedirect('/admin');
}
public function test_refund_governance_forms_should_disable_on_submit(): void
{
$this->loginAsPlatformAdmin();
$merchant = Merchant::query()->firstOrFail();
$plan = Plan::query()->create([
'code' => 'refund_gov_disable_submit_01',
'name' => '退款治理禁用提交测试',
'billing_cycle' => 'monthly',
'price' => 10,
'list_price' => 10,
'status' => 'active',
'sort' => 10,
'published_at' => now(),
]);
// 让 canMarkRefunded = true非 refunded 且 refund_total >= paid + tol
$order = PlatformOrder::query()->create([
'merchant_id' => $merchant->id,
'plan_id' => $plan->id,
'order_no' => 'PO_REFUND_GOV_DISABLE_SUBMIT_0001',
'order_type' => 'new_purchase',
'status' => 'activated',
'payment_status' => 'paid',
'plan_name' => $plan->name,
'billing_cycle' => $plan->billing_cycle,
'period_months' => 1,
'quantity' => 1,
'payable_amount' => 10,
'paid_amount' => 10,
'placed_at' => now(),
'paid_at' => now(),
'activated_at' => now(),
'meta' => [
'refund_summary' => [
'count' => 1,
'total_amount' => 10.01,
],
],
]);
$html = $this->get('/admin/platform-orders/' . $order->id)
->assertOk()
->getContent();
$this->assertIsString($html);
// 退款治理区块内的关键表单必须带 data-action="disable-on-submit",避免运营重复点击造成重复请求。
$this->assertStringContainsString('/admin/platform-orders/' . $order->id . '/mark-refunded', $html);
$this->assertStringContainsString('data-action="disable-on-submit"', $html);
}
}