propel /test/testsuite/generator/builder/om/GeneratedObjectArrayColumnTypeTest.php

Language PHP Lines 131
MD5 Hash f92926c015e2dbe93e1e72a311ad7b21
Repository https://github.com/mattleff/propel.git View Raw File View Project SPDX
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php

/**
 * This file is part of the Propel package.
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @license    MIT License
 */

require_once 'PHPUnit/Framework.php';
require_once dirname(__FILE__) . '/../../../../../generator/lib/util/PropelQuickBuilder.php';
require_once dirname(__FILE__) . '/../../../../../runtime/lib/Propel.php';

/**
 * Tests the generated objects for array column types accessor & mutator
 *
 * @author     Francois Zaninotto
 * @package    generator.builder.om
 */
class GeneratedObjectArrayColumnTypeTest extends PHPUnit_Framework_TestCase
{
	public function setUp()
	{
		if (!class_exists('ComplexColumnTypeEntity2')) {
			$schema = <<<EOF
<database name="generated_object_complex_type_test_2">
	<table name="complex_column_type_entity_2">
		<column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
		<column name="tags" type="ARRAY" />
		<column name="value_set" type="ARRAY" />
	</table>
</database>
EOF;
			PropelQuickBuilder::buildSchema($schema);
		}
	}
	
	public function testActiveRecordMethods()
	{
		$this->assertTrue(method_exists('ComplexColumnTypeEntity2', 'getTags'));
		$this->assertTrue(method_exists('ComplexColumnTypeEntity2', 'hasTag'));
		$this->assertTrue(method_exists('ComplexColumnTypeEntity2', 'setTags'));
		$this->assertTrue(method_exists('ComplexColumnTypeEntity2', 'addTag'));
		$this->assertTrue(method_exists('ComplexColumnTypeEntity2', 'removeTag'));
		// only plural column names get a tester, an adder, and a remover method
		$this->assertTrue(method_exists('ComplexColumnTypeEntity2', 'getValueSet'));
		$this->assertFalse(method_exists('ComplexColumnTypeEntity2', 'hasValueSet'));
		$this->assertTrue(method_exists('ComplexColumnTypeEntity2', 'setValueSet'));
		$this->assertFalse(method_exists('ComplexColumnTypeEntity2', 'addValueSet'));
		$this->assertFalse(method_exists('ComplexColumnTypeEntity2', 'removeValueSet'));
	}
	
	public function testGetterDefaultValue()
	{
		$e = new ComplexColumnTypeEntity2();
		$this->assertEquals(array(), $e->getTags(), 'array columns return an empty array by default');
	}
	
	public function testSetterArrayValue()
	{
		$e = new ComplexColumnTypeEntity2();
		$value = array('foo', 1234);
		$e->setTags($value);
		$this->assertEquals($value, $e->getTags(), 'array columns can store arrays');
	}
	
	public function testSetterResetValue()
	{
		$e = new ComplexColumnTypeEntity2();
		$value = array('foo', 1234);
		$e->setTags($value);
		$e->setTags(array());
		$this->assertEquals(array(), $e->getTags(), 'object columns can be reset');
	}
	
	public function testTester()
	{
		$e = new ComplexColumnTypeEntity2();
		$this->assertFalse($e->hasTag('foo'));
		$this->assertFalse($e->hasTag(1234));
		$value = array('foo', 1234);
		$e->setTags($value);
		$this->assertTrue($e->hasTag('foo'));
		$this->assertTrue($e->hasTag(1234));
		$this->assertFalse($e->hasTag('bar'));
		$this->assertFalse($e->hasTag(12));
	}
	
	public function testAdder()
	{
		$e = new ComplexColumnTypeEntity2();
		$e->addTag('foo');
		$this->assertEquals(array('foo'), $e->getTags());
		$e->addTag(1234);
		$this->assertEquals(array('foo', 1234), $e->getTags());
		$e->addTag('foo');
		$this->assertEquals(array('foo', 1234, 'foo'), $e->getTags());
		$e->setTags(array(12, 34));
		$e->addTag('foo');
		$this->assertEquals(array(12, 34, 'foo'), $e->getTags());
	}

	public function testRemover()
	{
		$e = new ComplexColumnTypeEntity2();
		$e->removeTag('foo');
		$this->assertEquals(array(), $e->getTags());
		$e->setTags(array('foo', 1234));
		$e->removeTag('foo');
		$this->assertEquals(array(1234), $e->getTags());
		$e->removeTag(1234);
		$this->assertEquals(array(), $e->getTags());
		$e->setTags(array(12, 34, 1234));
		$e->removeTag('foo');
		$this->assertEquals(array(12, 34, 1234), $e->getTags());
		$e->removeTag('1234');
		$this->assertEquals(array(12, 34), $e->getTags());
	}
	
	public function testValueIsPersisted()
	{
		$e = new ComplexColumnTypeEntity2();
		$value = array('foo', 1234);
		$e->setTags($value);
		$e->save();
		ComplexColumnTypeEntity2Peer::clearInstancePool();
		$e = ComplexColumnTypeEntity2Query::create()->findOne();
		$this->assertEquals($value, $e->getTags(), 'array columns are persisted');
	}
}
Back to Top