Skip to content
This repository was archived by the owner on Jul 12, 2020. It is now read-only.

Commit 36bd3f9

Browse files
committed
Unit test for RenameLocalVariable
1 parent 7d07f9d commit 36bd3f9

File tree

4 files changed

+34
-13
lines changed

4 files changed

+34
-13
lines changed

phpunit.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,10 @@
1515
<directory>src/test</directory>
1616
</testsuite>
1717
</testsuites>
18+
19+
<filter>
20+
<whitelist>
21+
<directory>src/main</directory>
22+
</whitelist>
23+
</filter>
1824
</phpunit>

src/main/QafooLabs/Refactoring/Application/RenameLocalVariable.php

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,31 +42,37 @@ public function refactor(File $file, $line, $oldName, $newName)
4242
$newName = ltrim($newName, '$');
4343

4444
$methodRange = $this->findMethodRange($file, $line);
45-
$declaredVariables = $this->variableScanner->scanForVariables($file, $methodRange);
45+
$definedVariables = $this->variableScanner->scanForVariables($file, $methodRange);
4646

47-
if ( ! isset($declaredVariables->localVariables[$oldName]) &&
48-
! isset($declaredVariables->assignments[$oldName])) {
47+
if ( ! isset($definedVariables->localVariables[$oldName]) &&
48+
! isset($definedVariables->assignments[$oldName])) {
4949

5050
return;
5151
}
5252

5353
$buffer = $this->editor->openBuffer($file);
5454

55-
if (isset($declaredVariables->localVariables[$oldName])) {
56-
foreach ($declaredVariables->localVariables[$oldName] as $line) {
57-
$buffer->replaceString($line, '$' . $oldName, '$' . $newName);
58-
}
59-
}
55+
$this->replaceString($buffer, $definedVariables->localVariables, $oldName, $newName);
56+
$this->replaceString($buffer, $definedVariables->assignments, $oldName, $newName);
57+
58+
$this->editor->save();
59+
}
6060

61-
if (isset($declaredVariables->assignments[$oldName])) {
62-
foreach ($declaredVariables->assignments[$oldName] as $line) {
61+
private function replaceString($buffer, array $variables, $oldName, $newName)
62+
{
63+
if (isset($variables[$oldName])) {
64+
foreach ($variables[$oldName] as $line) {
6365
$buffer->replaceString($line, '$' . $oldName, '$' . $newName);
6466
}
6567
}
66-
67-
$this->editor->save();
6868
}
6969

70+
/**
71+
* @param File $file
72+
* @param integer $line
73+
*
74+
* @return LineRange
75+
*/
7076
private function findMethodRange(File $file, $line)
7177
{
7278
$range = LineRange::fromSingleLine($line);

src/main/QafooLabs/Refactoring/Domain/Model/DefinedVariables.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class DefinedVariables extends ValueObject
2626
*/
2727
protected $assignments;
2828

29-
public function __construct(array $localVariables, array $assignments)
29+
public function __construct(array $localVariables = array(), array $assignments = array())
3030
{
3131
$this->localVariables = $localVariables;
3232
$this->assignments = $assignments;

src/test/QafooLabs/Refactoring/Application/RenameLocalVariableTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace QafooLabs\Refactoring\Application;
44

55
use QafooLabs\Refactoring\Domain\Model\File;
6+
use QafooLabs\Refactoring\Domain\Model\DefinedVariables;
67
use QafooLabs\Refactoring\Adapters\PHPParser\ParserVariableScanner;
78
use QafooLabs\Refactoring\Adapters\TokenReflection\StaticCodeAnalysis;
89
use QafooLabs\Refactoring\Adapters\Patches\PatchEditor;
@@ -14,6 +15,12 @@ public function testRenameLocalVariable()
1415
$scanner = \Phake::mock('QafooLabs\Refactoring\Domain\Services\VariableScanner');
1516
$codeAnalysis = \Phake::mock('QafooLabs\Refactoring\Domain\Services\CodeAnalysis');
1617
$editor = \Phake::mock('QafooLabs\Refactoring\Domain\Services\Editor');
18+
$buffer = \Phake::mock('QafooLabs\Refactoring\Domain\Model\EditorBuffer');
19+
20+
\Phake::when($scanner)->scanForVariables(\Phake::anyParameters())->thenReturn(
21+
new DefinedVariables(array('helloWorld' => array(6)))
22+
);
23+
\Phake::when($editor)->openBuffer(\Phake::anyParameters())->thenReturn($buffer);
1724

1825
$refactoring = new RenameLocalVariable($scanner, $codeAnalysis, $editor);
1926

@@ -28,5 +35,7 @@ public function main()
2835
}
2936
PHP
3037
), 6, '$helloWorld', '$var');
38+
39+
\Phake::verify($buffer)->replaceString(6, '$helloWorld', '$var');
3140
}
3241
}

0 commit comments

Comments
 (0)