Skip to content

Commit dc258a0

Browse files
authored
Merge pull request #3 from cawolf/fix-1-reveal
Fixes #1: added ->reveal()
2 parents 3c4a9fc + 9ca2626 commit dc258a0

File tree

4 files changed

+29
-5
lines changed

4 files changed

+29
-5
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ Place your cursor in the empty constructor argument list of a subject under test
8484
{
8585
$this->logger = $this->prophesize(LoggerInterface::class);
8686
$this->router = $this->prophesize(RouterInterface::class);
87-
$this->subject = new Subject($this->logger, $this->router);
87+
$this->subject = new Subject($this->logger->reveal(), $this->router->reveal());
8888
}
8989
9090
public function testBusinessLogic()

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ apply plugin: 'org.jetbrains.intellij'
1010
apply plugin: 'java'
1111

1212
group 'de.cawolf'
13-
version '1.0.1'
13+
version '1.0.2'
1414

1515
sourceCompatibility = 1.8
1616

src/main/kotlin/de/cawolf/quickmock/intention/service/AddArguments.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,37 @@ package de.cawolf.quickmock.intention.service
22

33
import com.intellij.openapi.project.Project
44
import com.intellij.psi.PsiElement
5+
import com.intellij.psi.PsiFile
6+
import com.intellij.psi.PsiFileFactory
57
import com.intellij.psi.tree.IElementType
6-
import com.jetbrains.php.lang.psi.PhpPsiElementFactory
8+
import com.jetbrains.php.lang.PhpFileType
79
import com.jetbrains.php.lang.psi.elements.Parameter
10+
import com.jetbrains.php.lang.psi.visitors.PhpElementVisitor
811

912
class AddArguments {
1013
fun invoke(psiElementAtCursor: PsiElement, parameter: MutableList<Parameter>, project: Project) {
1114
val parameterListType = IElementType.enumerate { it -> it.toString() == "Parameter list" }.first()
12-
val joinedParameterNames = parameter.joinToString { it -> "\$this->" + it.name }
13-
val newParameterList = PhpPsiElementFactory.createFromText(project, parameterListType, "f($joinedParameterNames);")
15+
val joinedParameterNames = parameter.joinToString { it -> "\$this->" + it.name + "->reveal()" }
16+
val newParameterList = createFirstFromText(project, parameterListType, "f($joinedParameterNames);")
1417
psiElementAtCursor.prevSibling.replace(newParameterList)
1518
}
19+
20+
private fun createFirstFromText(p: Project, elementType: IElementType, text: String): PsiElement {
21+
var ret = arrayOf<PsiElement>()
22+
createDummyFile(p, text).accept(object : PhpElementVisitor() {
23+
override fun visitElement(element: PsiElement?) {
24+
val node = element!!.node
25+
if (node != null && node.elementType === elementType) {
26+
ret += element
27+
}
28+
29+
element.acceptChildren(this)
30+
}
31+
})
32+
return ret[0]
33+
}
34+
35+
private fun createDummyFile(p: Project, fileText: String): PsiFile =
36+
PsiFileFactory.getInstance(p).createFileFromText("DUMMY__." + PhpFileType.INSTANCE.defaultExtension, PhpFileType.INSTANCE, "<?php\n$fileText", System.currentTimeMillis(), false)
37+
1638
}

src/main/resources/META-INF/plugin.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
<change-notes><![CDATA[
1111
<dl>
12+
<dt>1.0.2</dt>
13+
<dd>added "->reveal()" to constructor arguments (issue #1)</dd>
1214
<dt>1.0.1</dt>
1315
<dd>added gradle publishing support</dd>
1416
<dt>1.0</dt>

0 commit comments

Comments
 (0)