Skip to content

Commit

Permalink
CakeFixtureManager::load now calls CakeTestFixture::truncate
Browse files Browse the repository at this point in the history
  • Loading branch information
young-steveo committed Dec 7, 2013
1 parent 7cd370e commit f0036b3
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 0 deletions.
103 changes: 103 additions & 0 deletions lib/Cake/Test/Case/TestSuite/Fixture/CakeFixtureManagerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<?php
/**
* CakeFixtureManager file
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP Project
* @package Cake.Test.Case.TestSuite.Fixture
* @since CakePHP v 2.5
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/

App::uses('DboSource', 'Model/Datasource');
App::uses('CakeFixtureManager', 'TestSuite/Fixture');
App::uses('UuidFixture', 'Test/Fixture');

/**
* Test Case for CakeFixtureManager class
*
* @package Cake.Test.Case.TestSuite
*/
class CakeFixtureManagerTest extends CakeTestCase {

/**
* reset environment.
*
* @return void
*/
public function setUp() {
parent::setUp();
$this->fixtureManager = new CakeFixtureManager();
}

/**
* tearDown
*
* @return void
*/
public function tearDown() {
parent::tearDown();
unset($this->fixtureManager);
}

/**
* testLoadTruncatesTable
*
* @return void
*/
public function testLoadTruncatesTable() {
$MockFixture = $this->getMock('UuidFixture', array('truncate'));
$MockFixture
->expects($this->once())
->method('truncate')
->will($this->returnValue(true));

$fixtureManager = $this->fixtureManager;
$fixtureManagerReflection = new ReflectionClass($fixtureManager);

$_loadedProperty = $fixtureManagerReflection->getProperty('_loaded');
$_loadedProperty->setAccessible(true);
$_loadedProperty->setValue($fixtureManager, array('core.uuid' => $MockFixture));

$TestCase = $this->getMock('CakeTestCase');
$TestCase->fixtures = array('core.uuid');
$TestCase->autoFixtures = true;
$TestCase->dropTables = false;

$fixtureManager->load($TestCase);
}

/**
* testLoadSingleTruncatesTable
*
* @return void
*/
public function testLoadSingleTruncatesTable() {
$MockFixture = $this->getMock('UuidFixture', array('truncate'));
$MockFixture
->expects($this->once())
->method('truncate')
->will($this->returnValue(true));

$fixtureManager = $this->fixtureManager;
$fixtureManagerReflection = new ReflectionClass($fixtureManager);

$_fixtureMapProperty = $fixtureManagerReflection->getProperty('_fixtureMap');
$_fixtureMapProperty->setAccessible(true);
$_fixtureMapProperty->setValue($fixtureManager, array('UuidFixture' => $MockFixture));

$dboMethods = array_diff(get_class_methods('DboSource'), array('enabled'));
$dboMethods[] = 'connect';
$db = $this->getMock('DboSource', $dboMethods);
$db->config['prefix'] = '';

$fixtureManager->loadSingle('Uuid', $db, false);
}
}
1 change: 1 addition & 0 deletions lib/Cake/TestSuite/Fixture/CakeFixtureManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ public function load(CakeTestCase $test) {
$db = ConnectionManager::getDataSource($fixture->useDbConfig);
$db->begin();
$this->_setupTable($fixture, $db, $test->dropTables);
$fixture->truncate($db);
$fixture->insert($db);
$db->commit();
}
Expand Down

0 comments on commit f0036b3

Please sign in to comment.