@@ -14,6 +14,7 @@ class InstallerTest extends \PHPUnit_Framework_TestCase
14
14
*/
15
15
protected $ object ;
16
16
17
+ /** @var Composer */
17
18
protected $ composer ;
18
19
protected $ config ;
19
20
protected $ vendorDir ;
@@ -110,26 +111,16 @@ public function testSupports()
110
111
}
111
112
112
113
/**
113
- * @covers MagentoHackathon\Composer\Magento\Installer::getParser
114
+ * @dataProvider parserTypeProvider
114
115
*/
115
- public function testGetModmanParser ( )
116
+ public function testGetParser ( $ packageExtra , $ expectedClass , $ composerExtra , $ packageName , $ prepareCallback )
116
117
{
117
- // getParser returns a modman parser by default, if map isn't set
118
- $ package = $ this ->createPackageMock (array ('map ' => null ));
119
-
120
- touch ($ this ->vendorDir . DIRECTORY_SEPARATOR . 'modman ' );
121
-
122
- $ this ->assertInstanceOf ('MagentoHackathon\Composer\Magento\ModmanParser ' , $ this ->object ->getParser ($ package ));
123
- }
124
-
125
- /**
126
- * @covers MagentoHackathon\Composer\Magento\Installer::getParser
127
- */
128
- public function testGetMapParser ()
129
- {
130
- $ package = $ this ->createPackageMock (array ('map ' => array ('test ' => 'test ' )));
131
-
132
- $ this ->assertInstanceOf ('MagentoHackathon\Composer\Magento\MapParser ' , $ this ->object ->getParser ($ package ));
118
+ $ composerExtra = array_merge ( $ composerExtra , $ this ->composer ->getPackage ()->getExtra () );
119
+ $ this ->composer ->setPackage ($ this ->createPackageMock ($ composerExtra ));
120
+
121
+ $ package = $ this ->createPackageMock ( $ packageExtra , $ packageName );
122
+ $ prepareCallback ($ this ->vendorDir );
123
+ $ this ->assertInstanceOf ($ expectedClass , $ this ->object ->getParser ($ package ));
133
124
}
134
125
135
126
public function deployMethodProvider ()
@@ -178,4 +169,68 @@ public function deployMethodProvider()
178
169
),
179
170
);
180
171
}
172
+
173
+ public function parserTypeProvider ()
174
+ {
175
+ $ mapOverwrite = array (
176
+ 'example/test2 ' => array ('test ' => 'test2 ' ),
177
+ 'example/test3 ' => array ('test ' => 'test3 ' ),
178
+ );
179
+ return array (
180
+ array (
181
+ 'packageExtra ' => array ('map ' => array ('test ' => 'test ' )),
182
+ 'expectedClass ' => 'MagentoHackathon\Composer\Magento\MapParser ' ,
183
+ 'composerExtra ' => array ( 'magento-map-overwrite ' => $ mapOverwrite ),
184
+ 'packageName ' => 'example/test1 ' ,
185
+ 'prepareCallback ' => function ($ vendorDir ){
186
+
187
+ },
188
+ ),
189
+ array (
190
+ 'packageExtra ' => array ('map ' => null ),
191
+ 'expectedClass ' => 'MagentoHackathon\Composer\Magento\ModmanParser ' ,
192
+ 'composerExtra ' => array ( 'magento-map-overwrite ' => $ mapOverwrite ),
193
+ 'packageName ' => 'example/test1 ' ,
194
+ 'prepareCallback ' => function ($ vendorDir ){
195
+ touch ($ vendorDir . DIRECTORY_SEPARATOR . 'modman ' );
196
+ },
197
+ ),
198
+ array (
199
+ 'packageExtra ' => array ('map ' => null , 'package-xml ' => 'package.xml ' ),
200
+ 'expectedClass ' => 'MagentoHackathon\Composer\Magento\PackageXmlParser ' ,
201
+ 'composerExtra ' => array ( 'magento-map-overwrite ' => $ mapOverwrite ),
202
+ 'packageName ' => 'example/test1 ' ,
203
+ 'prepareCallback ' => function ($ vendorDir ){
204
+ touch ($ vendorDir . DIRECTORY_SEPARATOR . 'package.xml ' );
205
+ },
206
+ ),
207
+ array (
208
+ 'packageExtra ' => array ('map ' => array ('test ' => 'test ' )),
209
+ 'expectedClass ' => 'MagentoHackathon\Composer\Magento\MapParser ' ,
210
+ 'composerExtra ' => array ( 'magento-map-overwrite ' => $ mapOverwrite ),
211
+ 'packageName ' => 'example/test1 ' ,
212
+ 'prepareCallback ' => function ($ vendorDir ){
213
+
214
+ },
215
+ ),
216
+ array (
217
+ 'packageExtra ' => array ('map ' => null ),
218
+ 'expectedClass ' => 'MagentoHackathon\Composer\Magento\ModmanParser ' ,
219
+ 'composerExtra ' => array ( 'magento-map-overwrite ' => $ mapOverwrite ),
220
+ 'packageName ' => 'example/test1 ' ,
221
+ 'prepareCallback ' => function ($ vendorDir ){
222
+ touch ($ vendorDir . DIRECTORY_SEPARATOR . 'modman ' );
223
+ },
224
+ ),
225
+ array (
226
+ 'packageExtra ' => array ('map ' => null ),
227
+ 'expectedClass ' => 'MagentoHackathon\Composer\Magento\MapParser ' ,
228
+ 'composerExtra ' => array ( 'magento-map-overwrite ' => $ mapOverwrite ),
229
+ 'packageName ' => 'example/test2 ' ,
230
+ 'prepareCallback ' => function ($ vendorDir ){
231
+ touch ($ vendorDir . DIRECTORY_SEPARATOR . 'modman ' );
232
+ },
233
+ ),
234
+ );
235
+ }
181
236
}
0 commit comments