mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Merge pull request #8695 from cakephp/issue-8693
Use import options when generating fixtures
This commit is contained in:
commit
c72ac14dc0
2 changed files with 91 additions and 11 deletions
|
@ -125,7 +125,8 @@ class FixtureTask extends BakeTask {
|
|||
return $this->all();
|
||||
}
|
||||
$model = $this->_modelName($this->args[0]);
|
||||
$this->bake($model);
|
||||
$importOptions = $this->importOptions($model);
|
||||
$this->bake($model, false, $importOptions);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -177,24 +178,29 @@ class FixtureTask extends BakeTask {
|
|||
*/
|
||||
public function importOptions($modelName) {
|
||||
$options = array();
|
||||
$plugin = '';
|
||||
if (isset($this->params['plugin'])) {
|
||||
$plugin = $this->params['plugin'] . '.';
|
||||
}
|
||||
|
||||
if (!empty($this->params['schema'])) {
|
||||
$options['schema'] = $modelName;
|
||||
} else {
|
||||
$options['schema'] = $plugin . $modelName;
|
||||
} elseif ($this->interactive) {
|
||||
$doSchema = $this->in(__d('cake_console', 'Would you like to import schema for this fixture?'), array('y', 'n'), 'n');
|
||||
if ($doSchema === 'y') {
|
||||
$options['schema'] = $modelName;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($this->params['records'])) {
|
||||
$doRecords = 'y';
|
||||
} else {
|
||||
$options['fromTable'] = true;
|
||||
} elseif ($this->interactive) {
|
||||
$doRecords = $this->in(__d('cake_console', 'Would you like to use record importing for this fixture?'), array('y', 'n'), 'n');
|
||||
if ($doRecords === 'y') {
|
||||
$options['records'] = true;
|
||||
}
|
||||
}
|
||||
if ($doRecords === 'y') {
|
||||
$options['records'] = true;
|
||||
}
|
||||
if ($doRecords === 'n') {
|
||||
if (!isset($options['records']) && $this->interactive) {
|
||||
$prompt = __d('cake_console', "Would you like to build this fixture with data from %s's table?", $modelName);
|
||||
$fromTable = $this->in($prompt, array('y', 'n'), 'n');
|
||||
if (strtolower($fromTable) === 'y') {
|
||||
|
|
|
@ -98,6 +98,7 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
public function testImportOptionsSchemaRecords() {
|
||||
$this->Task->interactive = true;
|
||||
$this->Task->expects($this->at(0))->method('in')->will($this->returnValue('y'));
|
||||
$this->Task->expects($this->at(1))->method('in')->will($this->returnValue('y'));
|
||||
|
||||
|
@ -112,6 +113,7 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
public function testImportOptionsNothing() {
|
||||
$this->Task->interactive = true;
|
||||
$this->Task->expects($this->at(0))->method('in')->will($this->returnValue('n'));
|
||||
$this->Task->expects($this->at(1))->method('in')->will($this->returnValue('n'));
|
||||
$this->Task->expects($this->at(2))->method('in')->will($this->returnValue('n'));
|
||||
|
@ -130,7 +132,20 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
$this->Task->params = array('schema' => true, 'records' => true);
|
||||
|
||||
$result = $this->Task->importOptions('Article');
|
||||
$expected = array('schema' => 'Article', 'records' => true);
|
||||
$expected = array('schema' => 'Article', 'fromTable' => true);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* test importOptions with overwriting CLI options
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testImportOptionsWithCommandLineOptionsPlugin() {
|
||||
$this->Task->params = array('schema' => true, 'records' => true, 'plugin' => 'TestPlugin');
|
||||
|
||||
$result = $this->Task->importOptions('Article');
|
||||
$expected = array('schema' => 'TestPlugin.Article', 'fromTable' => true);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
|
@ -140,6 +155,7 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
public function testImportOptionsWithSchema() {
|
||||
$this->Task->interactive = true;
|
||||
$this->Task->params = array('schema' => true);
|
||||
$this->Task->expects($this->at(0))->method('in')->will($this->returnValue('n'));
|
||||
$this->Task->expects($this->at(1))->method('in')->will($this->returnValue('n'));
|
||||
|
@ -155,11 +171,12 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
public function testImportOptionsWithRecords() {
|
||||
$this->Task->interactive = true;
|
||||
$this->Task->params = array('records' => true);
|
||||
$this->Task->expects($this->at(0))->method('in')->will($this->returnValue('n'));
|
||||
|
||||
$result = $this->Task->importOptions('Article');
|
||||
$expected = array('records' => true);
|
||||
$expected = array('fromTable' => true);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
|
@ -169,6 +186,7 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
public function testImportOptionsTable() {
|
||||
$this->Task->interactive = true;
|
||||
$this->Task->expects($this->at(0))->method('in')->will($this->returnValue('n'));
|
||||
$this->Task->expects($this->at(1))->method('in')->will($this->returnValue('n'));
|
||||
$this->Task->expects($this->at(2))->method('in')->will($this->returnValue('y'));
|
||||
|
@ -244,6 +262,62 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
$this->assertContains("'body' => 'Body \"value\"'", $result, 'Data has bad escaping');
|
||||
}
|
||||
|
||||
/**
|
||||
* test that execute includes import options
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testExecuteWithImportSchema() {
|
||||
$this->Task->connection = 'test';
|
||||
$this->Task->path = '/my/path/';
|
||||
$this->Task->args = array('article');
|
||||
$this->Task->params = array(
|
||||
'schema' => true,
|
||||
'records' => false,
|
||||
);
|
||||
$filename = '/my/path/ArticleFixture.php';
|
||||
|
||||
$this->Task->expects($this->never())
|
||||
->method('in');
|
||||
|
||||
$this->Task->expects($this->at(0))
|
||||
->method('createFile')
|
||||
->with($filename, $this->logicalAnd(
|
||||
$this->stringContains('class ArticleFixture'),
|
||||
$this->stringContains("\$import = array('model' => 'Article'")
|
||||
));
|
||||
|
||||
$this->Task->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* test that execute includes import options
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testExecuteWithImportRecords() {
|
||||
$this->Task->connection = 'test';
|
||||
$this->Task->path = '/my/path/';
|
||||
$this->Task->args = array('article');
|
||||
$this->Task->params = array(
|
||||
'schema' => true,
|
||||
'records' => true,
|
||||
);
|
||||
$filename = '/my/path/ArticleFixture.php';
|
||||
|
||||
$this->Task->expects($this->never())
|
||||
->method('in');
|
||||
|
||||
$this->Task->expects($this->at(0))
|
||||
->method('createFile')
|
||||
->with($filename, $this->logicalAnd(
|
||||
$this->stringContains('class ArticleFixture'),
|
||||
$this->stringContains("\$import = array('model' => 'Article', 'connection' => 'test')")
|
||||
));
|
||||
|
||||
$this->Task->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* test that execute passes runs bake depending with named model.
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue