Skip to content

Commit a416f94

Browse files
authored
feat(upgrade): upgrade router specific namespace changes (#1550)
1 parent 97ceda7 commit a416f94

File tree

5 files changed

+76
-0
lines changed

5 files changed

+76
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Tempest\Upgrade\Tempest2;
4+
5+
use PhpParser\Node;
6+
use Rector\Rector\AbstractRector;
7+
8+
final class UpdateUriImportsRector extends AbstractRector
9+
{
10+
public function getNodeTypes(): array
11+
{
12+
return [
13+
Node\UseItem::class,
14+
];
15+
}
16+
17+
public function refactor(Node $node): ?int
18+
{
19+
if (! ($node instanceof Node\UseItem)) {
20+
return null;
21+
}
22+
23+
if ($node->name->toString() === 'Tempest\uri') {
24+
$node->name = new Node\Name('Tempest\Router\uri');
25+
}
26+
27+
if ($node->name->toString() === 'Tempest\is_current_uri') {
28+
$node->name = new Node\Name('Tempest\Router\is_current_uri');
29+
}
30+
31+
return null;
32+
}
33+
}

packages/upgrade/src/tempest2.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
<?php
22

33
use Rector\Config\RectorConfig;
4+
use Rector\Renaming\Rector\FuncCall\RenameFunctionRector;
45
use Rector\Renaming\Rector\Name\RenameClassRector;
56
use Rector\Renaming\Rector\PropertyFetch\RenamePropertyRector;
67
use Rector\Renaming\ValueObject\RenameProperty;
78
use Tempest\Upgrade\Tempest2\MigrationRector;
89
use Tempest\Upgrade\Tempest2\RemoveDatabaseMigrationImportRector;
910
use Tempest\Upgrade\Tempest2\RemoveIdImportRector;
11+
use Tempest\Upgrade\Tempest2\UpdateUriImportsRector;
1012

1113
return static function (RectorConfig $config): void {
1214
$config->importNames();
1315
$config->importShortClasses();
1416

1517
$config->rule(MigrationRector::class);
18+
$config->rule(UpdateUriImportsRector::class);
1619

1720
$config->ruleWithConfiguration(RenameClassRector::class, [
1821
'Tempest\Database\Id' => 'Tempest\Database\PrimaryKey',
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace Tempest\Upgrade\Tests\Tempest2\Fixtures;
4+
5+
use function Tempest\is_current_uri;
6+
7+
final class IsCurrentUriNamespaceChange
8+
{
9+
public function __invoke()
10+
{
11+
return is_current_uri(self::class);
12+
}
13+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
use function Tempest\uri;
4+
5+
final class UriNamespaceChange
6+
{
7+
public function __invoke()
8+
{
9+
return uri(self::class);
10+
}
11+
}

packages/upgrade/tests/Tempest2/Tempest2RectorTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,20 @@ public function test_database_id_rename(): void
3838
->assertNotContains('Id')
3939
->assertNotContains('Tempest\Database\Id');
4040
}
41+
42+
public function test_uri_namespace_change(): void
43+
{
44+
$this->rector
45+
->runFixture(__DIR__ . '/Fixtures/UriNamespaceChange.input.php')
46+
->assertContains('use function Tempest\Router\uri;')
47+
->assertNotContains('use function Tempest\uri;');
48+
}
49+
50+
public function test_is_current_uri_namespace_change(): void
51+
{
52+
$this->rector
53+
->runFixture(__DIR__ . '/Fixtures/IsCurrentUriNamespaceChange.input.php')
54+
->assertContains('use function Tempest\Router\is_current_uri;')
55+
->assertNotContains('use function Tempest\is_current_uri;');
56+
}
4157
}

0 commit comments

Comments
 (0)