originalEnvVersion = $_ENV['APP_VERSION'] ?? null; unset($_ENV['APP_VERSION'], $_SERVER['APP_VERSION']); putenv('APP_VERSION'); config()->set('app.version', '7.0.0-beta.1'); } protected function tearDown(): void { unset($_ENV['APP_VERSION'], $_SERVER['APP_VERSION']); if ($this->originalEnvVersion !== null) { $_ENV['APP_VERSION'] = $this->originalEnvVersion; $_SERVER['APP_VERSION'] = $this->originalEnvVersion; putenv('APP_VERSION='.$this->originalEnvVersion); } else { putenv('APP_VERSION'); } parent::tearDown(); } public function test_incompatible_required_version_throws_with_module_payload(): void { try { CoreVersionChecker::validateExtension('>=7.5.0', 'sirsoft-ecommerce', 'module'); $this->fail('CoreVersionMismatchException 이 발생해야 합니다.'); } catch (CoreVersionMismatchException $e) { $payload = $e->getPayload(); $this->assertSame('module', $payload['extension_type']); $this->assertSame('sirsoft-ecommerce', $payload['identifier']); $this->assertSame('>=7.5.0', $payload['required_core_version']); $this->assertSame('7.0.0-beta.1', $payload['current_core_version']); } } public function test_compatible_when_required_constraint_satisfied(): void { config()->set('app.version', '7.0.0'); $this->assertTrue(CoreVersionChecker::isCompatible('>=7.0.0')); } public function test_null_required_version_skips_validation(): void { $this->assertTrue(CoreVersionChecker::isCompatible(null)); } }