Skip to content

Commit d84693b

Browse files
authored
Merge branch '1.0.1-develop' into issue-201-Cover-Plugin-Class-generator
2 parents 4649ff1 + f1cf7d2 commit d84693b

File tree

7 files changed

+196
-2
lines changed

7 files changed

+196
-2
lines changed

src/com/magento/idea/magento2plugin/actions/generation/data/ObserverFileData.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
15
package com.magento.idea.magento2plugin.actions.generation.data;
26

37
public class ObserverFileData {
@@ -13,14 +17,14 @@ public ObserverFileData(
1317
String observerClassName,
1418
String observerModule,
1519
String targetEvent,
16-
String pluginClassFqn,
20+
String observerClassFqn,
1721
String namespace
1822
) {
1923
this.observerDirectory = observerDirectory;
2024
this.observerClassName = observerClassName;
2125
this.observerModule = observerModule;
2226
this.targetEvent = targetEvent;
23-
this.observerClassFqn = pluginClassFqn;
27+
this.observerClassFqn = observerClassFqn;
2428
this.namespace = namespace;
2529
}
2630

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
4+
namespace Foo\Bar\Observer;
5+
6+
use Magento\Framework\Event\ObserverInterface;
7+
use Magento\Framework\Event\Observer;
8+
9+
class TestObserver implements ObserverInterface
10+
{
11+
/**
12+
* Observer for test_event
13+
*
14+
* @param Observer $observer
15+
* @return void
16+
*/
17+
public function execute(Observer $observer)
18+
{
19+
$event = $observer->getEvent();
20+
// TODO: Implement observer method.
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
4+
<event name="test_event">
5+
<observer name="test_observer" instance="Foo\Bar\Observer\Test\TestEventObserver"/>
6+
</event>
7+
<event name="test_event_2">
8+
<observer name="test_observer_2" instance="Foo\Bar\Observer\Test\TestEventObserverTwo"/>
9+
</event>
10+
</config>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
4+
<event name="test_event">
5+
<observer name="test_observer" instance="Foo\Bar\Observer\Test\TestEventObserver"/>
6+
</event>
7+
</config>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
4+
<event name="test_event">
5+
<observer name="test_observer" instance="Foo\Bar\Observer\Test\TestEventObserver"/>
6+
</event>
7+
</config>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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.magento.idea.magento2plugin.actions.generation.data.ObserverFileData;
10+
11+
public class ObserverClassGeneratorTest extends BaseGeneratorTestCase {
12+
13+
public void testGenerateObserverClass()
14+
{
15+
Project project = myFixture.getProject();
16+
ObserverFileData observerData = new ObserverFileData(
17+
"Observer",
18+
"TestObserver",
19+
"Foo_Bar",
20+
"test_event",
21+
"Foo\\Bar\\Observer\\TestObserver",
22+
"Foo\\Bar\\Observer"
23+
);
24+
ObserverClassGenerator observerClassGenerator = new ObserverClassGenerator(
25+
observerData,
26+
project
27+
);
28+
PsiFile observerClassFile = observerClassGenerator.generate("test");
29+
30+
String filePath = this.getFixturePath("TestObserver.php");
31+
PsiFile expectedFile = myFixture.configureByFile(filePath);
32+
33+
assertGeneratedFileIsCorrect(
34+
expectedFile,
35+
"src/app/code/Foo/Bar/Observer",
36+
observerClassFile
37+
);
38+
}
39+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
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.magento.idea.magento2plugin.actions.generation.data.ObserverEventsXmlData;
10+
import com.magento.idea.magento2plugin.magento.files.ModuleEventsXml;
11+
import com.magento.idea.magento2plugin.magento.packages.File;
12+
import com.magento.idea.magento2plugin.magento.packages.Package;
13+
14+
public class ObserverEventsXmlGeneratorTest extends BaseGeneratorTestCase {
15+
private static final String moduleName = "Foo_Bar";
16+
private static final String moduleDir = "src/app/code/Foo/Bar/";
17+
18+
public void testGenerateEventsXmlInBaseAreaFile() {
19+
String filePath = this.getFixturePath(ModuleEventsXml.FILE_NAME);
20+
PsiFile expectedFile = myFixture.configureByFile(filePath);
21+
Project project = myFixture.getProject();
22+
String area = Package.Areas.base.toString();
23+
PsiFile eventsXml = addEventToEventsXml(
24+
project,
25+
area,
26+
"test_event",
27+
"test_observer",
28+
"Foo\\Bar\\Observer\\Test\\TestEventObserver"
29+
);
30+
31+
assertGeneratedFileIsCorrect(
32+
expectedFile,
33+
moduleDir + Package.MODULE_BASE_AREA_DIR,
34+
eventsXml
35+
);
36+
}
37+
38+
public void testGenerateEventsXmlInAdminhtmlAreaFile() {
39+
String filePath = this.getFixturePath(ModuleEventsXml.FILE_NAME);
40+
PsiFile expectedFile = myFixture.configureByFile(filePath);
41+
Project project = myFixture.getProject();
42+
String area = Package.Areas.adminhtml.toString();
43+
PsiFile eventsXml = addEventToEventsXml(
44+
project,
45+
area,
46+
"test_event",
47+
"test_observer",
48+
"Foo\\Bar\\Observer\\Test\\TestEventObserver"
49+
);
50+
51+
assertGeneratedFileIsCorrect(
52+
expectedFile,
53+
moduleDir + Package.MODULE_BASE_AREA_DIR + File.separator + area,
54+
eventsXml
55+
);
56+
}
57+
58+
public void testAddTwoObserversToOneEventsXml() {
59+
String filePath = this.getFixturePath(ModuleEventsXml.FILE_NAME);
60+
PsiFile expectedFile = myFixture.configureByFile(filePath);
61+
Project project = myFixture.getProject();
62+
addEventToEventsXml(
63+
project,
64+
Package.Areas.frontend.toString(),
65+
"test_event",
66+
"test_observer",
67+
"Foo\\Bar\\Observer\\Test\\TestEventObserver"
68+
);
69+
PsiFile eventsXml = addEventToEventsXml(
70+
project,
71+
Package.Areas.frontend.toString(),
72+
"test_event_2",
73+
"test_observer_2",
74+
"Foo\\Bar\\Observer\\Test\\TestEventObserverTwo"
75+
);
76+
77+
assertGeneratedFileIsCorrect(
78+
expectedFile,
79+
moduleDir + Package.MODULE_BASE_AREA_DIR + File.separator + Package.Areas.frontend.toString(),
80+
eventsXml
81+
);
82+
}
83+
84+
private PsiFile addEventToEventsXml(
85+
Project project,
86+
String area,
87+
String eventName,
88+
String observerName,
89+
String observerClassFqn
90+
) {
91+
ObserverEventsXmlData observerEventsXmlData = new ObserverEventsXmlData(
92+
area,
93+
moduleName,
94+
eventName,
95+
observerName,
96+
observerClassFqn
97+
);
98+
ObserverEventsXmlGenerator observerEventsXmlGenerator = new ObserverEventsXmlGenerator(
99+
observerEventsXmlData,
100+
project
101+
);
102+
103+
return observerEventsXmlGenerator.generate("test");
104+
}
105+
}

0 commit comments

Comments
 (0)