From d1a7ad3369599f7746d59b190523a6a47df33f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Wed, 18 Mar 2026 14:15:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95:=20BackUrl=20currentPathQuic?= =?UTF-8?q?kFilter=20=E5=8F=A3=E5=BE=84=E6=8A=A4=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ilterShouldKeepContextAndClearPageTest.php | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 tests/Feature/BackUrlCurrentPathQuickFilterShouldKeepContextAndClearPageTest.php diff --git a/tests/Feature/BackUrlCurrentPathQuickFilterShouldKeepContextAndClearPageTest.php b/tests/Feature/BackUrlCurrentPathQuickFilterShouldKeepContextAndClearPageTest.php new file mode 100644 index 0000000..0761935 --- /dev/null +++ b/tests/Feature/BackUrlCurrentPathQuickFilterShouldKeepContextAndClearPageTest.php @@ -0,0 +1,63 @@ +path()/query() 固定下来,并直接返回 currentPathQuickFilter 的结果 + if (!Route::has('test.backurl.quickfilter')) { + Route::get('/__test/backurl/quickfilter', function () { + $safeBack = \App\Support\BackUrl::sanitizeForLinks((string) request()->query('back', '')); + + return response()->json([ + 'url' => \App\Support\BackUrl::currentPathQuickFilter( + ['merchant_id', 'plan_id', 'site_subscription_id', 'keyword', 'lead_id', 'created_from', 'created_to'], + [ + 'sync_status' => 'failed', + 'bmpa_failed_only' => null, + ], + $safeBack + ), + ]); + })->name('test.backurl.quickfilter'); + } + + $res = $this->get('/__test/backurl/quickfilter?' . http_build_query([ + 'merchant_id' => 1, + 'plan_id' => 2, + 'page' => 9, + 'bmpa_failed_only' => 1, + 'sync_status' => 'failed', + 'created_from' => '2026-03-01', + 'created_to' => '2026-03-18', + 'back' => '/admin', + ])); + + $res->assertOk(); + $data = $res->json(); + $url = (string) ($data['url'] ?? ''); + + // 1) page 被清理 + $this->assertStringNotContainsString('page=', $url); + + // 2) 只保留 context keys + overrides + back + $this->assertStringContainsString('/__test/backurl/quickfilter?', $url); + $this->assertStringContainsString('merchant_id=1', $url); + $this->assertStringContainsString('plan_id=2', $url); + $this->assertStringContainsString('created_from=2026-03-01', $url); + $this->assertStringContainsString('created_to=2026-03-18', $url); + $this->assertStringContainsString('sync_status=failed', $url); + $this->assertStringContainsString('back=%2Fadmin', $url); + + // 3) overrides 清理项生效 + $this->assertStringNotContainsString('bmpa_failed_only=1', $url); + } +}