From 84a496083fc324071014c282b1e2010642ced00b Mon Sep 17 00:00:00 2001 From: mark_story Date: Sat, 6 Jun 2009 20:03:04 -0400 Subject: [PATCH] Adding proper -plugin parameter handling Fixtures can now be baked into plugins. Adding test cases. --- cake/console/libs/tasks/fixture.php | 9 ++++---- .../cases/console/libs/tasks/fixture.test.php | 22 +++++++++++++++---- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/cake/console/libs/tasks/fixture.php b/cake/console/libs/tasks/fixture.php index 0562970410d..6acb4b43456 100644 --- a/cake/console/libs/tasks/fixture.php +++ b/cake/console/libs/tasks/fixture.php @@ -61,7 +61,8 @@ class FixtureTask extends Shell { * * @access public */ - function initialize() { + function __construct(&$dispatch) { + parent::__construct($dispatch); $this->path = $this->params['working'] . DS . 'tests' . DS . 'fixtures' . DS; if (!class_exists('CakeSchema')) { App::import('Model', 'Schema'); @@ -210,12 +211,10 @@ function bake($model, $useTable = false, $importOptions = array()) { function generateFixtureFile($model, $otherVars) { $defaults = array('table' => null, 'schema' => null, 'records' => null, 'import' => null, 'fields' => null); $vars = array_merge($defaults, $otherVars); - - //@todo fix plugin pathing. + $path = $this->path; if (isset($this->plugin)) { - $pluginPath = 'plugins' . DS . Inflector::underscore($this->plugin) . DS; - $path = APP . $pluginPath . 'tests' . DS . 'fixtures' . DS; + $path = $this->_pluginPath($this->plugin) . 'tests' . DS . 'fixtures' . DS; } $filename = Inflector::underscore($model) . '_fixture.php'; diff --git a/cake/tests/cases/console/libs/tasks/fixture.test.php b/cake/tests/cases/console/libs/tasks/fixture.test.php index f5f41f05911..6f5b3cdf9bc 100644 --- a/cake/tests/cases/console/libs/tasks/fixture.test.php +++ b/cake/tests/cases/console/libs/tasks/fixture.test.php @@ -92,12 +92,12 @@ function endTest() { * * @return void **/ - function testInitialize() { - $this->Task->params['working'] = '/my/path'; - $this->Task->initialize(); + function testConstruct() { + $this->Dispatch->params['working'] = '/my/path'; + $Task =& new FixtureTask($this->Dispatch); $expected = '/my/path/tests/fixtures/'; - $this->assertEqual($this->Task->path, $expected); + $this->assertEqual($Task->path, $expected); } /** * test import option array generation @@ -219,5 +219,19 @@ function testGenerateFixtureFile() { $this->Task->expectAt(1, 'createFile', array($filename, new PatternExpectation('/\<\?php(.*)\?\>/ms'))); $result = $this->Task->generateFixtureFile('Article', array()); } +/** + * test generating files into plugins. + * + * @return void + **/ + function testGeneratePluginFixtureFile() { + $this->Task->connection = 'test_suite'; + $this->Task->path = '/my/path/'; + $this->Task->plugin = 'TestFixture'; + $filename = APP . 'plugins' . DS . 'test_fixture' . DS . 'tests' . DS . 'fixtures' . DS . 'article_fixture.php'; + + $this->Task->expectAt(0, 'createFile', array($filename, new PatternExpectation('/Article/'))); + $result = $this->Task->generateFixtureFile('Article', array()); + } } ?> \ No newline at end of file