summaryrefslogtreecommitdiff
path: root/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Test/Case/Utility/ClassRegistryTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Test/Case/Utility/ClassRegistryTest.php')
-rw-r--r--poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Test/Case/Utility/ClassRegistryTest.php349
1 files changed, 349 insertions, 0 deletions
diff --git a/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Test/Case/Utility/ClassRegistryTest.php b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Test/Case/Utility/ClassRegistryTest.php
new file mode 100644
index 0000000..eb20fce
--- /dev/null
+++ b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Test/Case/Utility/ClassRegistryTest.php
@@ -0,0 +1,349 @@
+<?php
+/**
+ * ClassRegistryTest file
+ *
+ * PHP 5
+ *
+ * CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
+ * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * Redistributions of files must retain the above copyright notice
+ *
+ * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
+ * @package Cake.Test.Case.Utility
+ * @since CakePHP(tm) v 1.2.0.5432
+ * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
+ */
+App::uses('ClassRegistry', 'Utility');
+
+/**
+ * ClassRegisterModel class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class ClassRegisterModel extends CakeTestModel {
+
+/**
+ * useTable property
+ *
+ * @var bool false
+ */
+ public $useTable = false;
+}
+
+/**
+ * RegisterArticle class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class RegisterArticle extends ClassRegisterModel {
+
+/**
+ * name property
+ *
+ * @var string 'RegisterArticle'
+ */
+ public $name = 'RegisterArticle';
+}
+
+/**
+ * RegisterArticleFeatured class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class RegisterArticleFeatured extends ClassRegisterModel {
+
+/**
+ * name property
+ *
+ * @var string 'RegisterArticleFeatured'
+ */
+ public $name = 'RegisterArticleFeatured';
+}
+
+/**
+ * RegisterArticleTag class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class RegisterArticleTag extends ClassRegisterModel {
+
+/**
+ * name property
+ *
+ * @var string 'RegisterArticleTag'
+ */
+ public $name = 'RegisterArticleTag';
+}
+
+/**
+ * RegistryPluginAppModel class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class RegistryPluginAppModel extends ClassRegisterModel {
+
+/**
+ * tablePrefix property
+ *
+ * @var string 'something_'
+ */
+ public $tablePrefix = 'something_';
+}
+
+/**
+ * TestRegistryPluginModel class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class TestRegistryPluginModel extends RegistryPluginAppModel {
+
+/**
+ * name property
+ *
+ * @var string 'TestRegistryPluginModel'
+ */
+ public $name = 'TestRegistryPluginModel';
+}
+
+/**
+ * RegisterCategory class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class RegisterCategory extends ClassRegisterModel {
+
+/**
+ * name property
+ *
+ * @var string 'RegisterCategory'
+ */
+ public $name = 'RegisterCategory';
+}
+/**
+ * RegisterPrefixedDs class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class RegisterPrefixedDs extends ClassRegisterModel {
+
+/**
+ * useDbConfig property
+ *
+ * @var string 'doesnotexist'
+ */
+ public $useDbConfig = 'doesnotexist';
+}
+
+/**
+ * Abstract class for testing ClassRegistry.
+ */
+abstract class ClassRegistryAbstractModel extends ClassRegisterModel {
+
+ public abstract function doSomething();
+
+}
+
+/**
+ * Interface for testing ClassRegistry
+ */
+interface ClassRegistryInterfaceTest {
+
+ public function doSomething();
+
+}
+
+/**
+ * ClassRegistryTest class
+ *
+ * @package Cake.Test.Case.Utility
+ */
+class ClassRegistryTest extends CakeTestCase {
+
+/**
+ * testAddModel method
+ *
+ * @return void
+ */
+ public function testAddModel() {
+ $Tag = ClassRegistry::init('RegisterArticleTag');
+ $this->assertTrue(is_a($Tag, 'RegisterArticleTag'));
+
+ $TagCopy = ClassRegistry::isKeySet('RegisterArticleTag');
+ $this->assertTrue($TagCopy);
+
+ $Tag->name = 'SomeNewName';
+
+ $TagCopy = ClassRegistry::getObject('RegisterArticleTag');
+
+ $this->assertTrue(is_a($TagCopy, 'RegisterArticleTag'));
+ $this->assertSame($Tag, $TagCopy);
+
+ $NewTag = ClassRegistry::init(array('class' => 'RegisterArticleTag', 'alias' => 'NewTag'));
+ $this->assertTrue(is_a($Tag, 'RegisterArticleTag'));
+
+ $NewTagCopy = ClassRegistry::init(array('class' => 'RegisterArticleTag', 'alias' => 'NewTag'));
+
+ $this->assertNotSame($Tag, $NewTag);
+ $this->assertSame($NewTag, $NewTagCopy);
+
+ $NewTag->name = 'SomeOtherName';
+ $this->assertNotSame($Tag, $NewTag);
+ $this->assertSame($NewTag, $NewTagCopy);
+
+ $Tag->name = 'SomeOtherName';
+ $this->assertNotSame($Tag, $NewTag);
+
+ $this->assertTrue($TagCopy->name === 'SomeOtherName');
+
+ $User = ClassRegistry::init(array('class' => 'RegisterUser', 'alias' => 'User', 'table' => false));
+ $this->assertTrue(is_a($User, 'AppModel'));
+
+ $UserCopy = ClassRegistry::init(array('class' => 'RegisterUser', 'alias' => 'User', 'table' => false));
+ $this->assertTrue(is_a($UserCopy, 'AppModel'));
+ $this->assertEquals($User, $UserCopy);
+
+ $Category = ClassRegistry::init(array('class' => 'RegisterCategory'));
+ $this->assertTrue(is_a($Category, 'RegisterCategory'));
+
+ $ParentCategory = ClassRegistry::init(array('class' => 'RegisterCategory', 'alias' => 'ParentCategory'));
+ $this->assertTrue(is_a($ParentCategory, 'RegisterCategory'));
+ $this->assertNotSame($Category, $ParentCategory);
+
+ $this->assertNotEquals($Category->alias, $ParentCategory->alias);
+ $this->assertEquals('RegisterCategory', $Category->alias);
+ $this->assertEquals('ParentCategory', $ParentCategory->alias);
+ }
+
+/**
+ * testClassRegistryFlush method
+ *
+ * @return void
+ */
+ public function testClassRegistryFlush() {
+ $Tag = ClassRegistry::init('RegisterArticleTag');
+
+ $ArticleTag = ClassRegistry::getObject('RegisterArticleTag');
+ $this->assertTrue(is_a($ArticleTag, 'RegisterArticleTag'));
+ ClassRegistry::flush();
+
+ $NoArticleTag = ClassRegistry::isKeySet('RegisterArticleTag');
+ $this->assertFalse($NoArticleTag);
+ $this->assertTrue(is_a($ArticleTag, 'RegisterArticleTag'));
+ }
+
+/**
+ * testAddMultipleModels method
+ *
+ * @return void
+ */
+ public function testAddMultipleModels() {
+ $Article = ClassRegistry::isKeySet('Article');
+ $this->assertFalse($Article);
+
+ $Featured = ClassRegistry::isKeySet('Featured');
+ $this->assertFalse($Featured);
+
+ $Tag = ClassRegistry::isKeySet('Tag');
+ $this->assertFalse($Tag);
+
+ $models = array(array('class' => 'RegisterArticle', 'alias' => 'Article'),
+ array('class' => 'RegisterArticleFeatured', 'alias' => 'Featured'),
+ array('class' => 'RegisterArticleTag', 'alias' => 'Tag'));
+
+ $added = ClassRegistry::init($models);
+ $this->assertTrue($added);
+
+ $Article = ClassRegistry::isKeySet('Article');
+ $this->assertTrue($Article);
+
+ $Featured = ClassRegistry::isKeySet('Featured');
+ $this->assertTrue($Featured);
+
+ $Tag = ClassRegistry::isKeySet('Tag');
+ $this->assertTrue($Tag);
+
+ $Article = ClassRegistry::getObject('Article');
+ $this->assertTrue(is_a($Article, 'RegisterArticle'));
+
+ $Featured = ClassRegistry::getObject('Featured');
+ $this->assertTrue(is_a($Featured, 'RegisterArticleFeatured'));
+
+ $Tag = ClassRegistry::getObject('Tag');
+ $this->assertTrue(is_a($Tag, 'RegisterArticleTag'));
+ }
+
+/**
+ * testPluginAppModel method
+ *
+ * @return void
+ */
+ public function testPluginAppModel() {
+ $TestRegistryPluginModel = ClassRegistry::isKeySet('TestRegistryPluginModel');
+ $this->assertFalse($TestRegistryPluginModel);
+
+ //Faking a plugin
+ CakePlugin::load('RegistryPlugin', array('path' => '/fake/path'));
+ $TestRegistryPluginModel = ClassRegistry::init('RegistryPlugin.TestRegistryPluginModel');
+ $this->assertTrue(is_a($TestRegistryPluginModel, 'TestRegistryPluginModel'));
+
+ $this->assertEquals('something_', $TestRegistryPluginModel->tablePrefix);
+
+ $PluginUser = ClassRegistry::init(array('class' => 'RegistryPlugin.RegisterUser', 'alias' => 'RegistryPluginUser', 'table' => false));
+ $this->assertTrue(is_a($PluginUser, 'RegistryPluginAppModel'));
+
+ $PluginUserCopy = ClassRegistry::getObject('RegistryPluginUser');
+ $this->assertTrue(is_a($PluginUserCopy, 'RegistryPluginAppModel'));
+ $this->assertSame($PluginUser, $PluginUserCopy);
+ CakePlugin::unload();
+ }
+
+/**
+ * Tests prefixed datasource names for test purposes
+ *
+ */
+ public function testPrefixedTestDatasource() {
+ ClassRegistry::config(array('testing' => true));
+ $Model = ClassRegistry::init('RegisterPrefixedDs');
+ $this->assertEquals('test', $Model->useDbConfig);
+ ClassRegistry::removeObject('RegisterPrefixedDs');
+
+ $testConfig = ConnectionManager::getDataSource('test')->config;
+ ConnectionManager::create('test_doesnotexist', $testConfig);
+
+ $Model = ClassRegistry::init('RegisterArticle');
+ $this->assertEquals('test', $Model->useDbConfig);
+ $Model = ClassRegistry::init('RegisterPrefixedDs');
+ $this->assertEquals('test_doesnotexist', $Model->useDbConfig);
+ }
+
+/**
+ * Tests that passing the string parameter to init() will return false if the model does not exists
+ *
+ */
+ public function testInitStrict() {
+ $this->assertFalse(ClassRegistry::init('NonExistent', true));
+ }
+
+/**
+ * Test that you cannot init() an abstract class. An exception will be raised.
+ *
+ * @expectedException CakeException
+ * @return void
+ */
+ public function testInitAbstractClass() {
+ ClassRegistry::init('ClassRegistryAbstractModel');
+ }
+
+/**
+ * Test that you cannot init() an abstract class. A exception will be raised.
+ *
+ * @expectedException CakeException
+ * @return void
+ */
+ public function testInitInterface() {
+ ClassRegistry::init('ClassRegistryInterfaceTest');
+ }
+}