Skip to content

Commit fe0f3b2

Browse files
gturpin-devbrendt
andauthored
fix(generation): ClassManipulator now make replacements before simplifies classnames (#876)
Co-authored-by: Brent Roose <[email protected]>
1 parent 31213bc commit fe0f3b2

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

src/Tempest/Generation/src/ManipulatesPhpClasses.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,14 +184,16 @@ public function print(): string
184184
$namespace = $file->addNamespace($this->namespace);
185185
$namespace->add($this->classType);
186186

187-
$this->simplifyClassNames($file);
188-
187+
$file = $this->simplifyClassNames($file);
189188
$code = $printer->printFile($file);
190189

191190
foreach ($this->manipulations as $manipulation) {
192191
$code = (string) $manipulation(str($code));
193192
}
194193

195-
return $code;
194+
$updatedFile = $file->fromCode($code);
195+
$updatedFile = $this->simplifyClassNames($updatedFile);
196+
197+
return $printer->printFile($updatedFile);
196198
}
197199
}

src/Tempest/Generation/tests/ClassManipulatorTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66

77
use PHPUnit\Framework\Attributes\Test;
88
use Tempest\Generation\ClassManipulator;
9+
use Tempest\Generation\Tests\Fixtures\ClassWithDummyStringToBeReplacedByFqcn;
910
use Tempest\Generation\Tests\Fixtures\ClassWithMethodParameterAttributes;
1011
use Tempest\Generation\Tests\Fixtures\ClassWithTraitInAnotherNamespace;
1112
use Tempest\Generation\Tests\Fixtures\CreateMigrationsTable;
1213
use Tempest\Generation\Tests\Fixtures\Database\MigrationModel;
14+
use Tempest\Generation\Tests\Fixtures\SampleNamespace\DummyFqcn;
1315
use Tempest\Generation\Tests\Fixtures\TestAttribute;
1416
use Tempest\Generation\Tests\Fixtures\WelcomeController;
1517
use Tempest\Support\StringHelper;
@@ -179,4 +181,13 @@ public function simplifies_method_parameter_attributes(): void
179181

180182
$this->assertMatchesSnapshot($class->print());
181183
}
184+
185+
#[Test]
186+
public function make_replacements_before_converting_fqcn(): void
187+
{
188+
$class = new ClassManipulator(ClassWithDummyStringToBeReplacedByFqcn::class);
189+
$class->manipulate(fn (StringHelper $string) => $string->replace("'fqcn-to-be-replaced'", sprintf('%s::class', DummyFqcn::class)));
190+
191+
$this->assertMatchesSnapshot($class->print());
192+
}
182193
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tempest\Generation\Tests\Fixtures;
6+
7+
final class ClassWithDummyStringToBeReplacedByFqcn
8+
{
9+
public function dummy(): string
10+
{
11+
return 'fqcn-to-be-replaced';
12+
}
13+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tempest\Generation\Tests\Fixtures\SampleNamespace;
6+
7+
final class DummyFqcn
8+
{
9+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace Tempest\Generation\Tests\Fixtures;
4+
5+
use Tempest\Generation\Tests\Fixtures\Tempest\Generation\Tests\Fixtures\SampleNamespace\DummyFqcn;
6+
7+
final class ClassWithDummyStringToBeReplacedByFqcn
8+
{
9+
public function dummy(): string
10+
{
11+
return DummyFqcn::class;
12+
}
13+
}

0 commit comments

Comments
 (0)