From 7d3590a175d87f36fc75267097bfa39d44d3d38e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Tue, 17 Mar 2026 04:01:14 +0800 Subject: [PATCH] tests(platform-orders): assert created-at quick links carry correct ranges --- ...eatedAtRangeQuickLinksShouldRenderTest.php | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/Feature/AdminPlatformOrderCreatedAtRangeQuickLinksShouldRenderTest.php b/tests/Feature/AdminPlatformOrderCreatedAtRangeQuickLinksShouldRenderTest.php index 3844c16..18cfddb 100644 --- a/tests/Feature/AdminPlatformOrderCreatedAtRangeQuickLinksShouldRenderTest.php +++ b/tests/Feature/AdminPlatformOrderCreatedAtRangeQuickLinksShouldRenderTest.php @@ -26,6 +26,8 @@ class AdminPlatformOrderCreatedAtRangeQuickLinksShouldRenderTest extends TestCas $res = $this->get('/admin/platform-orders?back=%2Fadmin&payment_status=paid'); $res->assertOk(); + $html = (string) $res->getContent(); + $res->assertSee('data-role="platform-orders-created-range-quick-links"', false); $res->assertSee('data-role="po-created-range-today"', false); @@ -39,5 +41,44 @@ class AdminPlatformOrderCreatedAtRangeQuickLinksShouldRenderTest extends TestCas // 应保留原有筛选上下文(例如 payment_status=paid) $res->assertSee('payment_status=paid', false); + + $today = now()->format('Y-m-d'); + $from7d = now()->subDays(6)->format('Y-m-d'); + $from30d = now()->subDays(29)->format('Y-m-d'); + + // 进一步护栏:断言 4 个快捷链接实际携带的 query 口径正确 + $extractHrefByRole = function (string $role) use ($html): string { + $m = []; + preg_match('/data-role="' . preg_quote($role, '/') . '"[^>]*href="([^"]+)"/i', $html, $m); + return isset($m[1]) ? html_entity_decode((string) $m[1]) : ''; + }; + + $todayHref = $extractHrefByRole('po-created-range-today'); + $this->assertNotSame('', $todayHref); + $this->assertStringContainsString('created_from=' . $today, $todayHref); + $this->assertStringContainsString('created_to=' . $today, $todayHref); + $this->assertStringContainsString('payment_status=paid', $todayHref); + $this->assertStringContainsString('back=%2Fadmin', $todayHref); + + $d7Href = $extractHrefByRole('po-created-range-7d'); + $this->assertNotSame('', $d7Href); + $this->assertStringContainsString('created_from=' . $from7d, $d7Href); + $this->assertStringContainsString('created_to=' . $today, $d7Href); + $this->assertStringContainsString('payment_status=paid', $d7Href); + $this->assertStringContainsString('back=%2Fadmin', $d7Href); + + $d30Href = $extractHrefByRole('po-created-range-30d'); + $this->assertNotSame('', $d30Href); + $this->assertStringContainsString('created_from=' . $from30d, $d30Href); + $this->assertStringContainsString('created_to=' . $today, $d30Href); + $this->assertStringContainsString('payment_status=paid', $d30Href); + $this->assertStringContainsString('back=%2Fadmin', $d30Href); + + $clearHref = $extractHrefByRole('po-created-range-clear'); + $this->assertNotSame('', $clearHref); + $this->assertStringNotContainsString('created_from=', $clearHref); + $this->assertStringNotContainsString('created_to=', $clearHref); + $this->assertStringContainsString('payment_status=paid', $clearHref); + $this->assertStringContainsString('back=%2Fadmin', $clearHref); } }