Files
breadcrumb-the-shire/tests/Http/RequestContextTest.php
fs 141f0a0155 refactor: extract shared code from bin/ scripts and remove legacy scheduler runner
- Extract ModuleManifestLoader for standalone manifest loading (used by
  module-deactivate and ValidateCommand)
- Extract SqlStatementParser, ModuleMigrationRepository, and
  ModuleMigrationService from bin/module-migrate.php to enforce strict
  layering (SQL in repository, orchestration in service)
- Delete bin/scheduler-run.php (fully superseded by bin/console scheduler:run)
- Update docs and test fixtures to reference bin/console

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 13:45:16 +01:00

54 lines
1.4 KiB
PHP

<?php
namespace MintyPHP\Tests\Http;
use MintyPHP\Http\RequestContext;
use PHPUnit\Framework\TestCase;
class RequestContextTest extends TestCase
{
private array $serverBackup = [];
protected function setUp(): void
{
$this->serverBackup = $_SERVER;
RequestContext::resetForTests();
}
protected function tearDown(): void
{
$_SERVER = $this->serverBackup;
RequestContext::resetForTests();
}
public function testItGeneratesStableRequestIdPerRequest(): void
{
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['REQUEST_URI'] = '/admin/users?x=1';
RequestContext::start();
$first = RequestContext::id();
$second = RequestContext::id();
$this->assertSame($first, $second);
$this->assertMatchesRegularExpression('/^[a-f0-9-]{36}$/', $first);
}
public function testItAppliesOverridesForChannelAndPath(): void
{
$_SERVER['REQUEST_METHOD'] = 'POST';
$_SERVER['REQUEST_URI'] = '/admin/settings';
RequestContext::start([
'channel' => 'scheduler',
'path' => 'bin/console',
]);
$context = RequestContext::context();
$this->assertSame('scheduler', $context['channel']);
$this->assertSame('bin/console', $context['path']);
$this->assertSame('POST', $context['method']);
}
}