Files
saasshop/tests/Feature/AdminPlatformOrderIndexReceiptRefundCountLinksContainBackTest.php

89 lines
2.9 KiB
PHP
Raw 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 Illuminate\Support\Arr;
use Tests\TestCase;
class AdminPlatformOrderIndexReceiptRefundCountLinksContainBackTest 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_receipt_and_refund_count_links_should_carry_back_and_anchor(): void
{
$this->loginAsPlatformAdmin();
$merchant = Merchant::query()->firstOrFail();
$plan = Plan::query()->create([
'code' => 'po_index_receipt_refund_count_back_plan',
'name' => '平台订单列表回执/退款数 back 链接测试套餐',
'billing_cycle' => 'monthly',
'price' => 10,
'list_price' => 10,
'status' => 'active',
'sort' => 10,
'published_at' => now(),
]);
$order = PlatformOrder::query()->create([
'merchant_id' => $merchant->id,
'plan_id' => $plan->id,
'order_no' => 'PO_INDEX_RC_BACK_0001',
'order_type' => 'new_purchase',
'status' => 'pending',
'payment_status' => 'unpaid',
'plan_name' => $plan->name,
'billing_cycle' => $plan->billing_cycle,
'period_months' => 1,
'quantity' => 1,
'payable_amount' => 10,
'paid_amount' => 0,
'placed_at' => now(),
'meta' => [
'payment_receipts' => [
['amount' => 10, 'paid_at' => now()->toDateTimeString(), 'channel' => 'offline', 'note' => 'test'],
],
'refund_receipts' => [
['amount' => 1, 'refunded_at' => now()->toDateTimeString(), 'channel' => 'offline', 'note' => 'test'],
],
],
]);
// 列表页带 back模拟从其它页跳回本页生成 selfWithoutBack 时会去掉 back
$res = $this->get('/admin/platform-orders?status=pending&back=' . urlencode('/admin/plans'));
$res->assertOk();
$indexSelfWithoutBack = '/admin/platform-orders?' . Arr::query([
'status' => 'pending',
]);
$receiptLink = '/admin/platform-orders/' . $order->id . '?' . Arr::query([
'back' => $indexSelfWithoutBack,
]) . '#payment-receipts';
$refundLink = '/admin/platform-orders/' . $order->id . '?' . Arr::query([
'back' => $indexSelfWithoutBack,
]) . '#refund-receipts';
$res->assertSee($receiptLink, false);
$res->assertSee($refundLink, false);
// 不允许 back 嵌套
$res->assertDontSee('back%3D', false);
}
}