Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

<?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);
        }
}