Browse Source

Fix fixture manager vendor/plugin edge case

Jad Bitar 11 years ago
parent
commit
5c90686539

+ 1 - 0
composer.json

@@ -42,6 +42,7 @@
 	"autoload-dev": {
 	"autoload-dev": {
 		"psr-4": {
 		"psr-4": {
 			"Cake\\Test\\": "tests",
 			"Cake\\Test\\": "tests",
+			"Company\\TestPluginThree\\Test\\": "tests/test_app/Plugin/Company/TestPluginThree/tests",
 			"TestApp\\": "tests/test_app/TestApp",
 			"TestApp\\": "tests/test_app/TestApp",
 			"TestPlugin\\": "tests/test_app/Plugin/TestPlugin/src",
 			"TestPlugin\\": "tests/test_app/Plugin/TestPlugin/src",
 			"TestPlugin\\Test\\": "tests/test_app/Plugin/TestPlugin/tests",
 			"TestPlugin\\Test\\": "tests/test_app/Plugin/TestPlugin/tests",

+ 4 - 6
src/TestSuite/Fixture/FixtureManager.php

@@ -150,12 +150,10 @@ class FixtureManager
             } elseif ($type === 'app') {
             } elseif ($type === 'app') {
                 $baseNamespace = Configure::read('App.namespace');
                 $baseNamespace = Configure::read('App.namespace');
             } elseif ($type === 'plugin') {
             } elseif ($type === 'plugin') {
-                if (strlen($additionalPath)) {
-                    list($plugin, $additionalPath) = explode('.', $additionalPath);
-                } else {
-                    list($plugin, $name) = explode('.', $name);
-                }
-                $baseNamespace = Inflector::camelize(str_replace('\\', '\ ', $plugin));
+                list($plugin, $name) = explode('.', $pathName);
+                $path = implode('\\', explode('/', $plugin));
+                $baseNamespace = Inflector::camelize(str_replace('\\', '\ ', $path));
+                $additionalPath = null;
             } else {
             } else {
                 $name = $fixture;
                 $name = $fixture;
             }
             }

+ 19 - 0
tests/TestCase/TestSuite/FixtureManagerTest.php

@@ -72,4 +72,23 @@ class FixtureManagerTest extends TestCase
             $fixtures['plugin.test_plugin.articles']
             $fixtures['plugin.test_plugin.articles']
         );
         );
     }
     }
+
+    /**
+    * Test loading app fixtures.
+    *
+    * @return void
+    */
+    public function testFixturizeCustom()
+    {
+        $test = $this->getMock('Cake\TestSuite\TestCase');
+        $test->fixtures = ['plugin.Company/TestPluginThree.articles'];
+        $this->manager->fixturize($test);
+        $fixtures = $this->manager->loaded();
+        $this->assertCount(1, $fixtures);
+        $this->assertArrayHasKey('plugin.Company/TestPluginThree.articles', $fixtures);
+        $this->assertInstanceOf(
+            'Company\TestPluginThree\Test\Fixture\ArticlesFixture',
+            $fixtures['plugin.Company/TestPluginThree.articles']
+        );
+    }
 }
 }