chore: init saasshop repo + sql migrations runner + gitee go

This commit is contained in:
萝卜
2026-03-10 11:31:02 +00:00
commit 50f15cdea8
210 changed files with 29534 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
<?php
namespace Tests\Feature;
use App\Models\Plan;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class AdminPlanTest 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_platform_admin_can_open_plans_page(): void
{
$this->loginAsPlatformAdmin();
$this->get('/admin/plans')
->assertOk()
->assertSee('套餐管理')
->assertSee('筛选条件')
->assertSee('套餐列表');
}
public function test_guest_cannot_open_plans_page(): void
{
$this->get('/admin/plans')->assertRedirect('/admin/login');
}
public function test_plans_page_can_filter_by_status_and_billing_cycle(): void
{
$this->loginAsPlatformAdmin();
Plan::query()->create([
'code' => 'basic_monthly',
'name' => '基础版(月付)',
'billing_cycle' => 'monthly',
'price' => 99,
'list_price' => 99,
'status' => 'active',
'sort' => 20,
'description' => '适合起步商家',
'published_at' => now(),
]);
Plan::query()->create([
'code' => 'enterprise_yearly_draft',
'name' => '企业版(年付草稿)',
'billing_cycle' => 'yearly',
'price' => 2999,
'list_price' => 3999,
'status' => 'draft',
'sort' => 30,
'description' => '仅供内部评审',
'published_at' => null,
]);
$this->get('/admin/plans?status=active&billing_cycle=monthly')
->assertOk()
->assertSee('基础版(月付)')
->assertDontSee('企业版(年付草稿)')
->assertSee('月付');
// 发布状态筛选(按 published_at基础版已发布企业版未发布
$this->get('/admin/plans?published=published')
->assertOk()
->assertSee('基础版(月付)')
->assertDontSee('企业版(年付草稿)');
$this->get('/admin/plans?published=unpublished')
->assertOk()
->assertSee('企业版(年付草稿)')
->assertDontSee('基础版(月付)');
}
public function test_platform_admin_can_create_plan(): void
{
$this->loginAsPlatformAdmin();
$this->get('/admin/plans/create')
->assertOk()
->assertSee('新建套餐')
->assertSee('套餐名称');
$this->post('/admin/plans', [
'code' => 'pro_monthly_form',
'name' => '专业版(月付)',
'billing_cycle' => 'monthly',
'price' => 199,
'list_price' => 299,
'status' => 'active',
'sort' => 5,
'description' => '主要面向成长型站点',
'published_at' => now()->format('Y-m-d H:i:s'),
])->assertRedirect('/admin/plans');
$this->get('/admin/plans')
->assertSee('专业版(月付)')
->assertSee('主要面向成长型站点');
}
public function test_platform_admin_can_update_plan(): void
{
$this->loginAsPlatformAdmin();
$plan = Plan::query()->create([
'code' => 'update_test',
'name' => '更新前套餐',
'billing_cycle' => 'monthly',
'price' => 50,
'list_price' => 80,
'status' => 'draft',
'sort' => 11,
]);
$this->get('/admin/plans/' . $plan->id . '/edit')
->assertOk()
->assertSee('编辑套餐');
$this->post('/admin/plans/' . $plan->id, [
'code' => 'update_test',
'name' => '更新后套餐',
'billing_cycle' => 'monthly',
'price' => 66,
'list_price' => 88,
'status' => 'active',
'sort' => 10,
'description' => '通过编辑表单更新',
])->assertRedirect('/admin/plans');
$this->get('/admin/plans')
->assertSee('更新后套餐')
->assertSee('¥66.00');
}
}