From 9cd3b197a6c3170caf780248a5543e3afcd0a90d Mon Sep 17 00:00:00 2001 From: __ <__@__> Date: Thu, 25 Jan 2024 00:22:26 +0100 Subject: [PATCH] `ClassName::fromString()`: trim leading namespace separator --- lib/Domain/ClassName.php | 2 +- tests/Integration/Simple/SimpleClassToFileTest.php | 9 +++++++++ tests/Unit/ClassNameTest.php | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/Domain/ClassName.php b/lib/Domain/ClassName.php index b1e37aee..1d55e1e2 100644 --- a/lib/Domain/ClassName.php +++ b/lib/Domain/ClassName.php @@ -22,7 +22,7 @@ public function __toString() public static function fromString(string $string): self { $new = new self(); - $new->fullyQualifiedName = $string; + $new->fullyQualifiedName = ltrim($string, self::DEFAULT_NAMESPACE_SEPARATOR); return $new; } diff --git a/tests/Integration/Simple/SimpleClassToFileTest.php b/tests/Integration/Simple/SimpleClassToFileTest.php index a3b07381..6f5922e1 100644 --- a/tests/Integration/Simple/SimpleClassToFileTest.php +++ b/tests/Integration/Simple/SimpleClassToFileTest.php @@ -30,6 +30,15 @@ public function testClassToFile(): void ]), $candidates); } + public function testAbsoluteClassNameToFile(): void + { + $candidates = $this->classToFile->classToFileCandidates(ClassName::fromString('\\Acme\\Foobar')); + + $this->assertEquals(FilePathCandidates::fromFilePaths([ + FilePath::fromString(__DIR__ . '/../../Workspace/lib/Foobar.php') + ]), $candidates); + } + public function testClassToFileInvalid(): void { $candidates = $this->classToFile->classToFileCandidates( diff --git a/tests/Unit/ClassNameTest.php b/tests/Unit/ClassNameTest.php index 6d85ddc4..e9eed364 100644 --- a/tests/Unit/ClassNameTest.php +++ b/tests/Unit/ClassNameTest.php @@ -24,6 +24,11 @@ public function provideBeginsWith() 'Foobar', true, ], + [ + '\\Foobar\\BarFoo', + 'Foobar\\BarFoo', + true, + ], [ 'Foobar\\BarFoo', 'Foobar\\BarFoo',