From 10f5ae22a9821898681309dd85571123b428b6b4 Mon Sep 17 00:00:00 2001 From: mark_story Date: Mon, 20 Jul 2009 00:59:18 -0400 Subject: [PATCH] Adding prompt for supplying custom conditions for fixture. --- cake/console/libs/tasks/fixture.php | 17 +++++++++++++++-- .../cases/console/libs/tasks/fixture.test.php | 8 ++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/cake/console/libs/tasks/fixture.php b/cake/console/libs/tasks/fixture.php index 75230dbf372..30ef7484417 100644 --- a/cake/console/libs/tasks/fixture.php +++ b/cake/console/libs/tasks/fixture.php @@ -52,6 +52,12 @@ class FixtureTask extends Shell { * @var string **/ var $connection = null; +/** + * Schema instance + * + * @var object + **/ + var $_Schema = null; /** * Override initialize * @@ -128,14 +134,21 @@ function __interactive() { **/ function importOptions($modelName) { $options = array(); - $doSchema = $this->in('Would you like to import schema for this fixture?', array('y', 'n'), 'n'); + $doSchema = $this->in(__('Would you like to import schema for this fixture?', true), array('y', 'n'), 'n'); if ($doSchema == 'y') { $options['schema'] = $modelName; } - $doRecords = $this->in('Would you like to import records for this fixture?', array('y', 'n'), 'n'); + $doRecords = $this->in(__('Would you like to use record importing for this fixture?', true), array('y', 'n'), 'n'); if ($doRecords == 'y') { $options['records'] = true; } + if ($doRecords == 'n') { + $prompt = sprintf(__("Would you like to build this fixture with data from %s's table?", true), $modelName); + $fromDb = $this->in($prompt, array('y', 'n'), 'n'); + if (strtolower($fromDb) == 'y') { + $options['fromTable'] = true; + } + } return $options; } /** diff --git a/cake/tests/cases/console/libs/tasks/fixture.test.php b/cake/tests/cases/console/libs/tasks/fixture.test.php index 2981ab88f2f..a44d4432ce5 100644 --- a/cake/tests/cases/console/libs/tasks/fixture.test.php +++ b/cake/tests/cases/console/libs/tasks/fixture.test.php @@ -112,10 +112,18 @@ function testImportOptions() { $this->Task->setReturnValueAt(2, 'in', 'n'); $this->Task->setReturnValueAt(3, 'in', 'n'); + $this->Task->setReturnValueAt(4, 'in', 'n'); $result = $this->Task->importOptions('Article'); $expected = array(); $this->assertEqual($result, $expected); + + $this->Task->setReturnValueAt(5, 'in', 'n'); + $this->Task->setReturnValueAt(6, 'in', 'n'); + $this->Task->setReturnValueAt(7, 'in', 'y'); + $result = $this->Task->importOptions('Article'); + $expected = array('fromTable' => true); + $this->assertEqual($result, $expected); } /** * test that execute passes runs bake depending with named model.