diff --git a/tests/Feature/AdminPlanIndexEditLinkContainsBackToSelfWithoutBackTest.php b/tests/Feature/AdminPlanIndexEditLinkContainsBackToSelfWithoutBackTest.php new file mode 100644 index 0000000..1b98393 --- /dev/null +++ b/tests/Feature/AdminPlanIndexEditLinkContainsBackToSelfWithoutBackTest.php @@ -0,0 +1,63 @@ +seed(); + + $this->post('/admin/login', [ + 'email' => 'platform.admin@demo.local', + 'password' => 'Platform@123456', + ])->assertRedirect('/admin'); + } + + public function test_edit_link_should_carry_back_to_index_self_without_back_and_should_not_nest_back(): void + { + $this->loginAsPlatformAdmin(); + + $plan = Plan::query()->create([ + 'code' => 'plan_edit_link_back_test', + 'name' => '套餐编辑链接 back 测试', + 'billing_cycle' => 'monthly', + 'price' => 99, + 'list_price' => 99, + 'status' => 'active', + 'sort' => 1, + 'published_at' => now(), + ]); + + // 模拟:套餐列表页本身带 back(例如从别的模块跳转过来),避免 edit 链接把 back 再嵌套进去 + $currentUrl = '/admin/plans?' . Arr::query([ + 'status' => 'active', + 'billing_cycle' => 'monthly', + 'back' => '/admin', + ]); + + $res = $this->get($currentUrl); + $res->assertOk(); + + $selfWithoutBack = '/admin/plans?' . Arr::query([ + 'status' => 'active', + 'billing_cycle' => 'monthly', + ]); + + $expectedEditUrl = '/admin/plans/' . $plan->id . '/edit?' . Arr::query([ + 'back' => $selfWithoutBack, + ]); + + $res->assertSee($expectedEditUrl, false); + + // 防 back 嵌套:不应出现 back=...back=... 的编码片段 + $res->assertDontSee('back%3D', false); + } +}