CaiWuXiTong/tests/Unit/Http/Middleware/SystemSettingsCreateMiddlewareTest.php

62 lines
1.9 KiB
PHP

<?php
namespace Tests\Unit\Http\Middleware;
use App\Http\Middleware\RedirectIfHitModuleSubscription;
use App\Http\Middleware\RedirectIfHitPlanLimits;
use Illuminate\Http\Request;
use Illuminate\Routing\Route;
use PHPUnit\Framework\TestCase;
use RuntimeException;
use Symfony\Component\HttpFoundation\Response;
class SystemSettingsCreateMiddlewareTest extends TestCase
{
public function test_system_settings_create_route_bypasses_plan_limits(): void
{
$middleware = new class extends RedirectIfHitPlanLimits
{
public function getUserLimitOfPlan(): object
{
throw new RuntimeException('系统设置不应检查云端套餐限制。');
}
};
$response = $middleware->handle(
$this->systemSettingsCreateRequest(),
fn () => new Response('next')
);
$this->assertSame('next', $response->getContent());
}
public function test_system_settings_create_route_bypasses_module_subscription(): void
{
$middleware = new class extends RedirectIfHitModuleSubscription
{
public function getModulesLimitOfSubscription(): object
{
throw new RuntimeException('系统设置不应检查云端模块订阅。');
}
};
$response = $middleware->handle(
$this->systemSettingsCreateRequest(),
fn () => new Response('next')
);
$this->assertSame('next', $response->getContent());
}
private function systemSettingsCreateRequest(): Request
{
$request = Request::create('/1/system-settings/databases/create', 'GET');
$route = new Route('GET', '{company_id}/system-settings/databases/create', fn () => null);
$route->name('system-settings.databases.create');
$route->bind($request);
$request->setRouteResolver(fn () => $route);
return $request;
}
}