Skip to content

Commit 8984e1a

Browse files
author
Vitaliy
authored
Merge pull request #236 from serhiyzhovnir/issue-201-Cover-Plugin-Class-generator
#issue-201 Covered Plugin Class generator
2 parents f1cf7d2 + d84693b commit 8984e1a

File tree

3 files changed

+121
-0
lines changed

3 files changed

+121
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
4+
namespace Foo\Bar\Plugin;
5+
6+
7+
use Foo\Bar\Service\SimpleService;
8+
9+
class TestPlugin
10+
{
11+
12+
/**
13+
* @param \Foo\Bar\Service\SimpleService $subject
14+
* @param int $param1
15+
* @param string $param2
16+
* @return array
17+
*/
18+
public function beforeExecute(\Foo\Bar\Service\SimpleService $subject, int $param1, string $param2)
19+
{
20+
// TODO: Implement plugin method.
21+
return [$param1, $param2];
22+
}
23+
24+
/**
25+
* @param \Foo\Bar\Service\SimpleService $subject
26+
* @param callable $proceed
27+
* @param int $param1
28+
* @param string $param2
29+
*/
30+
public function aroundExecute(\Foo\Bar\Service\SimpleService $subject, callable $proceed, int $param1, string $param2)
31+
{
32+
// TODO: Implement plugin method.
33+
return $proceed($param1, $param2);
34+
}
35+
36+
/**
37+
* @param \Foo\Bar\Service\SimpleService $subject
38+
* @param $result
39+
* @param int $param1
40+
* @param string $param2
41+
*/
42+
public function afterExecute(\Foo\Bar\Service\SimpleService $subject, $result, int $param1, string $param2)
43+
{
44+
// TODO: Implement plugin method.
45+
return $result;
46+
}
47+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
namespace Foo\Bar\Service;
3+
4+
class SimpleService
5+
{
6+
public function execute(int $param1, string $param2)
7+
{
8+
9+
}
10+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.actions.generation.generator;
6+
7+
import com.intellij.openapi.project.Project;
8+
import com.intellij.psi.PsiFile;
9+
import com.jetbrains.php.lang.psi.elements.Method;
10+
import com.jetbrains.php.lang.psi.elements.PhpClass;
11+
import com.magento.idea.magento2plugin.actions.generation.data.PluginFileData;
12+
import com.magento.idea.magento2plugin.magento.files.Plugin;
13+
import com.magento.idea.magento2plugin.util.GetPhpClassByFQN;
14+
15+
public class PluginClassGeneratorTest extends BaseGeneratorTestCase {
16+
private static final String targetClassFnq = "Foo\\Bar\\Service\\SimpleService";
17+
private static final String targetMethodName = "execute";
18+
private static final String module = "Foo_Bar";
19+
private static final String pluginNamespace = "Foo\\Bar\\Plugin";
20+
private static final String pluginFqn = "Foo\\Bar\\Plugin\\TestPlugin";
21+
private static final String pluginClassName = "TestPlugin";
22+
private static final String pluginDir = "Plugin";
23+
24+
public void testGeneratePluginClassFile()
25+
{
26+
PsiFile pluginClassFile;
27+
addPluginToTargetClass(Plugin.PluginType.before.toString());
28+
addPluginToTargetClass(Plugin.PluginType.around.toString());
29+
pluginClassFile = addPluginToTargetClass(Plugin.PluginType.after.toString());
30+
31+
String filePath = this.getFixturePath(pluginClassName.concat(".php"));
32+
PsiFile expectedFile = myFixture.configureByFile(filePath);
33+
34+
assertGeneratedFileIsCorrect(
35+
expectedFile,
36+
"src/app/code/Foo/Bar/Plugin",
37+
pluginClassFile
38+
);
39+
}
40+
41+
private PsiFile addPluginToTargetClass(String pluginType)
42+
{
43+
Project project = myFixture.getProject();
44+
PhpClass targetClass = GetPhpClassByFQN.getInstance(project).execute(targetClassFnq);
45+
Method targetMethod = targetClass.findMethodByName(targetMethodName);
46+
47+
PluginFileData pluginClass = new PluginFileData(
48+
pluginDir,
49+
pluginClassName,
50+
pluginType,
51+
module,
52+
targetClass,
53+
targetMethod,
54+
pluginFqn,
55+
pluginNamespace
56+
);
57+
PluginClassGenerator pluginClassGenerator = new PluginClassGenerator(
58+
pluginClass,
59+
project
60+
);
61+
62+
return pluginClassGenerator.generate("test");
63+
}
64+
}

0 commit comments

Comments
 (0)