From dc3bf922d9715bfd1b2105be04a9aabc84a1d7d4 Mon Sep 17 00:00:00 2001 From: wei <> Date: Thu, 12 Apr 2007 08:05:03 +0000 Subject: Refactor and add TTableGateway, System.Data.Common, System.Data.DataGateway --- .../features/protected/pages/ClientScripts.page | 6 + .../features/protected/pages/MyJavascriptLib.php | 32 +++ .../features/protected/pages/TestComp.php | 20 ++ .../protected/pages/myscripts/packages.php | 10 + .../ActiveRecord/RecordEventTestCase.php | 33 +++ .../DbCommon/CommandBuilderMysqlTest.php | 19 ++ .../DbCommon/CommandBuilderPgsqlTest.php | 77 ++++++ tests/simple_unit/DbCommon/MysqlColumnTest.php | 270 +++++++++++++++++++++ tests/simple_unit/DbCommon/PgsqlColumnTest.php | 147 +++++++++++ .../I18N/MysqlMessageSourceTestCase.php | 43 ++++ tests/simple_unit/SqlMap/queryForListLimitTest.php | 32 +++ tests/simple_unit/TableGateway/BaseGatewayTest.php | 94 +++++++ tests/simple_unit/TableGateway/CountTest.php | 16 ++ tests/simple_unit/TableGateway/DeleteByPkTest.php | 52 ++++ tests/simple_unit/TableGateway/MagicCallTest.php | 31 +++ .../TableGateway/TableGatewayPgsqlTest.php | 56 +++++ tests/simple_unit/TableGateway/TestFindByPk.php | 48 ++++ 17 files changed, 986 insertions(+) create mode 100644 tests/FunctionalTests/features/protected/pages/ClientScripts.page create mode 100644 tests/FunctionalTests/features/protected/pages/MyJavascriptLib.php create mode 100644 tests/FunctionalTests/features/protected/pages/TestComp.php create mode 100644 tests/FunctionalTests/features/protected/pages/myscripts/packages.php create mode 100644 tests/simple_unit/ActiveRecord/RecordEventTestCase.php create mode 100644 tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php create mode 100644 tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php create mode 100644 tests/simple_unit/DbCommon/MysqlColumnTest.php create mode 100644 tests/simple_unit/DbCommon/PgsqlColumnTest.php create mode 100644 tests/simple_unit/I18N/MysqlMessageSourceTestCase.php create mode 100644 tests/simple_unit/SqlMap/queryForListLimitTest.php create mode 100644 tests/simple_unit/TableGateway/BaseGatewayTest.php create mode 100644 tests/simple_unit/TableGateway/CountTest.php create mode 100644 tests/simple_unit/TableGateway/DeleteByPkTest.php create mode 100644 tests/simple_unit/TableGateway/MagicCallTest.php create mode 100644 tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php create mode 100644 tests/simple_unit/TableGateway/TestFindByPk.php (limited to 'tests') diff --git a/tests/FunctionalTests/features/protected/pages/ClientScripts.page b/tests/FunctionalTests/features/protected/pages/ClientScripts.page new file mode 100644 index 00000000..18aca48b --- /dev/null +++ b/tests/FunctionalTests/features/protected/pages/ClientScripts.page @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tests/FunctionalTests/features/protected/pages/MyJavascriptLib.php b/tests/FunctionalTests/features/protected/pages/MyJavascriptLib.php new file mode 100644 index 00000000..964b48a5 --- /dev/null +++ b/tests/FunctionalTests/features/protected/pages/MyJavascriptLib.php @@ -0,0 +1,32 @@ +_manager = $owner->getClientScript(); + $owner->onPreRenderComplete = array($this, 'registerScriptLoader'); + } + + public static function registerPackage(TControl $control, $name) + { + static $instance; + if($instance===null) + $instance=new self($control->getPage()); + $instance->_packages[$name]=true; + } + + protected function registerScriptLoader() + { + $dir = dirname(__FILE__).'/myscripts'; //contains my javascript files + $scripts = array_keys($this->_packages); + $url = $this->_manager->registerJavascriptPackages($dir, $scripts); + $this->_manager->registerScriptFile($url,$url); + } +} + +?> \ No newline at end of file diff --git a/tests/FunctionalTests/features/protected/pages/TestComp.php b/tests/FunctionalTests/features/protected/pages/TestComp.php new file mode 100644 index 00000000..f9d02c77 --- /dev/null +++ b/tests/FunctionalTests/features/protected/pages/TestComp.php @@ -0,0 +1,20 @@ +_class=$value; + } + + public function onPreRender($param) + { + parent::onPreRender($param); + MyJavascriptLib::registerPackage($this,$this->_class); + } +} + +?> \ No newline at end of file diff --git a/tests/FunctionalTests/features/protected/pages/myscripts/packages.php b/tests/FunctionalTests/features/protected/pages/myscripts/packages.php new file mode 100644 index 00000000..41561a71 --- /dev/null +++ b/tests/FunctionalTests/features/protected/pages/myscripts/packages.php @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/tests/simple_unit/ActiveRecord/RecordEventTestCase.php b/tests/simple_unit/ActiveRecord/RecordEventTestCase.php new file mode 100644 index 00000000..c669bb72 --- /dev/null +++ b/tests/simple_unit/ActiveRecord/RecordEventTestCase.php @@ -0,0 +1,33 @@ +setDbConnection($conn); + } + + function testFindByPk() + { + $user1 = UserRecord::finder()->findByPk('admin'); + $this->assertNotNull($user1); + } + + function test_same_data_returns_same_object() + { + $criteria = new TActiveRecordCriteria('username = ?', 'admin'); + $criteria->OnSelect = array($this, 'logger'); + $user1 = UserRecord::finder()->find($criteria); + //var_dump($user1); + } + + function logger($sender, $param) + { + var_dump($param->Command->Text); + } +} + +?> \ No newline at end of file diff --git a/tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php b/tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php new file mode 100644 index 00000000..500d5277 --- /dev/null +++ b/tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php @@ -0,0 +1,19 @@ +mysql_meta_data()->getTableInfo("tests.table1"); + } +} + +?> \ No newline at end of file diff --git a/tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php b/tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php new file mode 100644 index 00000000..8bf2848e --- /dev/null +++ b/tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php @@ -0,0 +1,77 @@ +pgsql_meta_data()->createCommandBuilder('address'); + $address=array( + 'username' => 'Username', + 'phone' => 121987, + 'field1_boolean' => true, + 'field2_date' => '1213', + 'field3_double' => 121.1, + 'field4_integer' => 345, + 'field6_time' => time(), + 'field7_timestamp' => time(), + 'field8_money' => '121.12', + 'field9_numeric' => 984.22, + 'int_fk1'=>1, + 'int_fk2'=>1, + ); + $insert = $builder->createInsertCommand($address); + $sql = 'INSERT INTO public.address("username", "phone", "field1_boolean", "field2_date", "field3_double", "field4_integer", "field6_time", "field7_timestamp", "field8_money", "field9_numeric", "int_fk1", "int_fk2") VALUES (:username, :phone, :field1_boolean, :field2_date, :field3_double, :field4_integer, :field6_time, :field7_timestamp, :field8_money, :field9_numeric, :int_fk1, :int_fk2)'; + $this->assertEqual($sql, $insert->Text); + } + + function test_update_command() + { + $builder = $this->pgsql_meta_data()->createCommandBuilder('address'); + $data = array( + 'phone' => 9809, + 'int_fk1' => 1212, + ); + $update = $builder->createUpdateCommand($data, '1'); + $sql = 'UPDATE public.address SET "phone" = :phone, "int_fk1" = :int_fk1 WHERE 1'; + $this->assertEqual($sql, $update->Text); + } + + function test_delete_command() + { + $builder = $this->pgsql_meta_data()->createCommandBuilder('address'); + $where = 'phone is NULL'; + $delete = $builder->createDeleteCommand($where); + $sql = 'DELETE FROM public.address WHERE phone is NULL'; + $this->assertEqual($sql, $delete->Text); + } + + function test_select_limit() + { + $meta = $this->pgsql_meta_data(); + $builder = $meta->createCommandBuilder('address'); + $query = 'SELECT * FROM '.$meta->getTableInfo('address')->getTableFullName(); + + $limit = $builder->createLimitCondition($query, 1); + $expect = $query.' LIMIT 1'; + $this->assertEqual($expect, $limit); + + $limit = $builder->createLimitCondition($query, -1, 10); + $expect = $query.' OFFSET 10'; + $this->assertEqual($expect, $limit); + + $limit = $builder->createLimitCondition($query, 2, 3); + $expect = $query.' LIMIT 2 OFFSET 3'; + $this->assertEqual($expect, $limit); + } +} + +?> \ No newline at end of file diff --git a/tests/simple_unit/DbCommon/MysqlColumnTest.php b/tests/simple_unit/DbCommon/MysqlColumnTest.php new file mode 100644 index 00000000..d8bb8194 --- /dev/null +++ b/tests/simple_unit/DbCommon/MysqlColumnTest.php @@ -0,0 +1,270 @@ +create_meta_data()->getTableInfo('table1'); + $this->assertEqual(count($table->getColumns()), 18); + + $columns['id'] = array( + 'ColumnName' => '`id`', + 'ColumnSize' => 10, + 'ColumnIndex' => 0, + 'DbType' => 'int unsigned', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => true, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => true, + ); + + $columns['name'] = array( + 'ColumnName' => '`name`', + 'ColumnSize' => 45, + 'ColumnIndex' => 1, + 'DbType' => 'varchar', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => true, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field1'] = array( + 'ColumnName' => '`field1`', + 'ColumnSize' => 4, + 'ColumnIndex' => 2, + 'DbType' => 'tinyint', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field2_text'] = array( + 'ColumnName' => '`field2_text`', + 'ColumnSize' => null, + 'ColumnIndex' => 3, + 'DbType' => 'text', + 'AllowNull' => true, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field3_date'] = array( + 'ColumnName' => '`field3_date`', + 'ColumnSize' => null, + 'ColumnIndex' => 4, + 'DbType' => 'date', + 'AllowNull' => true, + 'DefaultValue' => '2007-02-25', + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field4_float'] = array( + 'ColumnName' => '`field4_float`', + 'ColumnSize' => null, + 'ColumnIndex' => 5, + 'DbType' => 'float', + 'AllowNull' => false, + 'DefaultValue' => 10, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field5_float'] = array( + 'ColumnName' => '`field5_float`', + 'ColumnSize' => null, + 'ColumnIndex' => 6, + 'DbType' => 'float', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => 5, + 'NumericScale' => 4, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field6_double'] = array( + 'ColumnName' => '`field6_double`', + 'ColumnSize' => null, + 'ColumnIndex' => 7, + 'DbType' => 'double', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field7_datetime'] = array( + 'ColumnName' => '`field7_datetime`', + 'ColumnSize' => null, + 'ColumnIndex' => 8, + 'DbType' => 'datetime', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field8_timestamp'] = array( + 'ColumnName' => '`field8_timestamp`', + 'ColumnSize' => null, + 'ColumnIndex' => 9, + 'DbType' => 'timestamp', + 'AllowNull' => true, + 'DefaultValue' => 'CURRENT_TIMESTAMP', + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field9_time'] = array( + 'ColumnName' => '`field9_time`', + 'ColumnSize' => null, + 'ColumnIndex' => 10, + 'DbType' => 'time', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field10_year'] = array( + 'ColumnName' => '`field10_year`', + 'ColumnSize' => 4, + 'ColumnIndex' => 11, + 'DbType' => 'year', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + ); + + $columns['field11_enum'] = array( + 'ColumnName' => '`field11_enum`', + 'ColumnSize' => null, + 'ColumnIndex' => 12, + 'DbType' => 'enum', + 'AllowNull' => false, + 'DefaultValue' => 'one', + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + 'DbTypeValues' => array('one', 'two', 'three'), + ); + + $columns['field12_SET'] = array( + 'ColumnName' => '`field12_SET`', + 'ColumnSize' => null, + 'ColumnIndex' => 13, + 'DbType' => 'set', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + 'AutoIncrement' => false, + 'DbTypeValues' => array('blue', 'red', 'green'), + ); + + $this->assertColumn($columns, $table); + + $this->assertNull($table->getSchemaName()); + $this->assertEqual('table1', $table->getTableName()); + $this->assertEqual(array('id', 'name'), $table->getPrimaryKeys()); + $this->assertEqual(array('fk3'), $table->getUniqueKeys()); + } + + function assertColumn($columns, $table) + { + foreach($columns as $id=>$asserts) + { + $column = $table->Columns[$id]; + foreach($asserts as $property=>$assert) + { + $ofAssert= var_export($assert,true); + $value = $column->{$property}; + $ofValue = var_export($value, true); + $this->assertEqual($value, $assert, + "Column [{$id}] {$property} value {$ofValue} did not match {$ofAssert}"); + } + } + } +} + +?> \ No newline at end of file diff --git a/tests/simple_unit/DbCommon/PgsqlColumnTest.php b/tests/simple_unit/DbCommon/PgsqlColumnTest.php new file mode 100644 index 00000000..0f633725 --- /dev/null +++ b/tests/simple_unit/DbCommon/PgsqlColumnTest.php @@ -0,0 +1,147 @@ +create_meta_data()->getTableInfo('public.address'); + $this->assertEqual(count($table->getColumns()), 14); + + $columns['id'] = array( + 'ColumnName' => '"id"', + 'ColumnSize' => null, + 'ColumnIndex' => 0, + 'DbType' => 'integer', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => true, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => 'public.address_id_seq', + ); + + $columns['username'] = array( + 'ColumnName' => '"username"', + 'ColumnSize' => 128, + 'ColumnIndex' => 1, + 'DbType' => 'character varying', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => true, + 'SequenceName' => null, + ); + + $columns['phone'] = array( + 'ColumnName' => '"phone"', + 'ColumnSize' => 40, + 'ColumnIndex' => 2, + 'DbType' => 'character', + 'AllowNull' => false, + 'DefaultValue' => "'hello'::bpchar", + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => true, + 'SequenceName' => null, + ); + + $columns['field1_boolean'] = array( + 'ColumnName' => '"field1_boolean"', + 'ColumnSize' => null, + 'ColumnIndex' => 3, + 'DbType' => 'boolean', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + ); + + $columns['field4_integer'] = array( + 'ColumnName' => '"field4_integer"', + 'ColumnSize' => null, + 'ColumnIndex' => 6, + 'DbType' => 'integer', + 'AllowNull' => false, + 'DefaultValue' => "1", + 'NumericPrecision' => null, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => true, + 'IsUnique' => false, + 'SequenceName' => null, + ); + + $columns['field7_timestamp'] = array( + 'ColumnName' => '"field7_timestamp"', + 'ColumnSize' => 2, + 'ColumnIndex' => 9, + 'DbType' => 'timestamp without time zone', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => 6, + 'NumericScale' => null, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + ); + + $columns['field9_numeric'] = array( + 'ColumnName' => '"field9_numeric"', + 'ColumnSize' => 393220, + 'ColumnIndex' => 11, + 'DbType' => 'numeric', + 'AllowNull' => false, + 'DefaultValue' => TDbTableColumn::UNDEFINED_VALUE, + 'NumericPrecision' => 6, + 'NumericScale' => 4, + 'IsPrimaryKey' => false, + 'IsForeignKey' => false, + 'IsUnique' => false, + 'SequenceName' => null, + ); + $this->assertColumn($columns, $table); + + $this->assertEqual('public', $table->getSchemaName()); + $this->assertEqual('address', $table->getTableName()); + $this->assertEqual(array('id'), $table->getPrimaryKeys()); + $this->assertEqual(array('username', 'phone'), $table->getUniqueKeys()); + } + + function assertColumn($columns, $table) + { + foreach($columns as $id=>$asserts) + { + $column = $table->Columns[$id]; + foreach($asserts as $property=>$assert) + { + $ofAssert= var_export($assert,true); + $value = $column->{$property}; + $ofValue = var_export($value, true); + $this->assertEqual($value, $assert, + "Column [{$id}] {$property} value {$ofValue} did not match {$ofAssert}"); + } + } + } +} + +?> \ No newline at end of file diff --git a/tests/simple_unit/I18N/MysqlMessageSourceTestCase.php b/tests/simple_unit/I18N/MysqlMessageSourceTestCase.php new file mode 100644 index 00000000..9f48d499 --- /dev/null +++ b/tests/simple_unit/I18N/MysqlMessageSourceTestCase.php @@ -0,0 +1,43 @@ +_source===null) + { + $this->_source = new MessageSource_MySQL('mysq://prado:prado@localhost/i18n_test'); + $this->_source->setCulture('en_AU'); + } + return $this->_source; + } + + function test_source() + { + $source = $this->get_source(); + $this->assertEqual(3, count($source->catalogues())); + } + + function test_load_source() + { + $source = $this->get_source(); + $this->assertTrue($source->load()); + } + + function test_message_format() + { + $formatter = new MessageFormat($this->get_source()); + var_dump($formatter->format('Hello')); + var_dump($formatter->format('Goodbye')); + //$this->assertEqual($formatter->format('Hello'),'G\'day Mate!'); + + //$this->assertEqual($formatter->format('Goodbye'), 'Goodbye'); + } +} + +?> \ No newline at end of file diff --git a/tests/simple_unit/SqlMap/queryForListLimitTest.php b/tests/simple_unit/SqlMap/queryForListLimitTest.php new file mode 100644 index 00000000..ceacbcdc --- /dev/null +++ b/tests/simple_unit/SqlMap/queryForListLimitTest.php @@ -0,0 +1,32 @@ +initSqlMap(); + + //force autoload + new Account; + } + + function resetDatabase() + { + $this->initScript('account-init.sql'); + } + + function test_accounts_limit_2() + { + $list1 = $this->sqlmap->queryForList('GetAllAccountsAsArrayListViaResultClass', null, null, 2); + //var_dump($list1); + } +} + +?> \ No newline at end of file diff --git a/tests/simple_unit/TableGateway/BaseGatewayTest.php b/tests/simple_unit/TableGateway/BaseGatewayTest.php new file mode 100644 index 00000000..825f2d0e --- /dev/null +++ b/tests/simple_unit/TableGateway/BaseGatewayTest.php @@ -0,0 +1,94 @@ +gateway1===null) + { + $conn = new TDbConnection('pgsql:host=localhost;dbname=test', 'test','test'); + $this->gateway1 = new TTableGateway('address', $conn); + } + return $this->gateway1; + } + + /** + * @return TTableGateway + */ + function getGateway2() + { + if($this->gateway2===null) + { + $conn = new TDbConnection('pgsql:host=localhost;dbname=test', 'test','test'); + $this->gateway2 = new TTableGateway('department_sections', $conn); + } + return $this->gateway2; + } + + function setup() + { + $this->delete_all(); + } + + function add_record1() + { + $result = $this->getGateway()->insert($this->get_record1()); + $this->assertTrue(intval($result) > 0); + } + function add_record2() + { + $result = $this->getGateway()->insert($this->get_record2()); + $this->assertTrue(intval($result) > 0); + } + function get_record1() + { + return array( + 'username' => 'Username', + 'phone' => 121987, + 'field1_boolean' => true, + 'field2_date' => '2007-12-25', + 'field3_double' => 121.1, + 'field4_integer' => 3, + 'field5_text' => 'asdasd', + 'field6_time' => '12:40:00', + 'field7_timestamp' => 'NOW', + 'field8_money' => '$121.12', + 'field9_numeric' => 98.2232, + 'int_fk1'=>1, + 'int_fk2'=>1, + ); + } + + + function get_record2() + { + return array( + 'username' => 'record2', + 'phone' => 45233, + 'field1_boolean' => false, + 'field2_date' => '2004-10-05', + 'field3_double' => 1221.1, + 'field4_integer' => 2, + 'field5_text' => 'hello world', + 'field6_time' => '22:40:00', + 'field7_timestamp' => 'NOW', + 'field8_money' => '$1121.12', + 'field9_numeric' => 8.2213, + 'int_fk1'=>1, + 'int_fk2'=>1, + ); + } + function delete_all() + { + $this->getGateway()->deleteAll('true'); + } +} +?> \ No newline at end of file diff --git a/tests/simple_unit/TableGateway/CountTest.php b/tests/simple_unit/TableGateway/CountTest.php new file mode 100644 index 00000000..56ffb19b --- /dev/null +++ b/tests/simple_unit/TableGateway/CountTest.php @@ -0,0 +1,16 @@ +getGateway2()->count(); + $this->assertEqual(44,$result); + + $result = $this->getGateway2()->count('department_id = ?', 1); + $this->assertEqual(4, $result); + } +} +?> \ No newline at end of file diff --git a/tests/simple_unit/TableGateway/DeleteByPkTest.php b/tests/simple_unit/TableGateway/DeleteByPkTest.php new file mode 100644 index 00000000..120b63e9 --- /dev/null +++ b/tests/simple_unit/TableGateway/DeleteByPkTest.php @@ -0,0 +1,52 @@ +add_record1(); + $id = $this->getGateway()->getLastInsertId(); + $deleted = $this->getGateway()->deleteByPk($id); + + $this->assertEqual(1, $deleted); + } + + function test_delete_by_multiple_pk() + { + $this->add_record1(); + $id1 = $this->getGateway()->getLastInsertId(); + $this->add_record2(); + $id2 = $this->getGateway()->getLastInsertId(); + + $deleted = $this->getGateway()->deleteByPk($id1, $id2); + + $this->assertEqual(2, $deleted); + } + + function test_delete_by_multiple_pk2() + { + $this->add_record1(); + $id1 = $this->getGateway()->getLastInsertId(); + $this->add_record2(); + $id2 = $this->getGateway()->getLastInsertId(); + + $deleted = $this->getGateway()->deleteByPk(array($id1, $id2)); + + $this->assertEqual(2, $deleted); + } + + function test_delete_by_multiple_pk3() + { + $this->add_record1(); + $id1 = $this->getGateway()->getLastInsertId(); + $this->add_record2(); + $id2 = $this->getGateway()->getLastInsertId(); + + $deleted = $this->getGateway()->deleteByPk(array(array($id1), array($id2))); + + $this->assertEqual(2, $deleted); + } +} +?> \ No newline at end of file diff --git a/tests/simple_unit/TableGateway/MagicCallTest.php b/tests/simple_unit/TableGateway/MagicCallTest.php new file mode 100644 index 00000000..c0df313d --- /dev/null +++ b/tests/simple_unit/TableGateway/MagicCallTest.php @@ -0,0 +1,31 @@ +add_record1(); $this->add_record2(); + + $result = $this->getGateway()->findByUsername("record2"); + $this->assertEqual($result['username'], 'record2'); + } + + function test_combined_and_or() + { + $this->add_record1(); $this->add_record2(); + + $result = $this->getGateway()->findAllByUsername_OR_phone('Username', '45233')->readAll(); + $this->assertEqual(2, count($result)); + } + + function test_no_result() + { + $this->add_record1(); $this->add_record2(); + $result = $this->getGateway()->findAllByUsername_and_phone('Username', '45233')->readAll(); + + $this->assertEqual(0, count($result)); + } +} +?> \ No newline at end of file diff --git a/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php b/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php new file mode 100644 index 00000000..973e8d21 --- /dev/null +++ b/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php @@ -0,0 +1,56 @@ +add_record1(); + $address = array('username' => 'tester 1', 'field5_text'=>null); + $result = $this->getGateway()->update($address, 'username = ?', 'Username'); + $this->assertTrue($result); + + $test = $this->getGateway()->find('username = ?', 'tester 1'); + unset($test['id']); + $expect = $this->get_record1(); + $expect['username'] = 'tester 1'; + $expect['field5_text'] = null; + unset($expect['field7_timestamp']); unset($test['field7_timestamp']); + $this->assertEqual($expect, $test); + + $this->assertTrue($this->getGateway()->deleteAll('username = ?', 'tester 1')); + } + + function test_update_named() + { + $this->add_record1(); + $address = array('username' => 'tester 1', 'field5_text'=>null); + $result = $this->getGateway()->update($address, 'username = :name', array(':name'=>'Username')); + $this->assertTrue($result); + + $test = $this->getGateway()->find('username = :name', array(':name'=>'tester 1')); + unset($test['id']); + $expect = $this->get_record1(); + $expect['username'] = 'tester 1'; + $expect['field5_text'] = null; + unset($expect['field7_timestamp']); unset($test['field7_timestamp']); + $this->assertEqual($expect, $test); + + $this->assertTrue($this->getGateway()->deleteAll('username = :name', array(':name'=>'tester 1'))); + } + + function test_find_all() + { + $this->add_record1(); + $this->add_record2(); + + $results = $this->getGateway()->findAll('true')->readAll(); + $this->assertEqual(count($results), 2); + + $result = $this->getGateway()->findBySql('SELECT username FROM address WHERE phone = ?', '45233')->read(); + $this->assertEqual($result['username'], 'record2'); + } + +} +?> \ No newline at end of file diff --git a/tests/simple_unit/TableGateway/TestFindByPk.php b/tests/simple_unit/TableGateway/TestFindByPk.php new file mode 100644 index 00000000..b9a25edf --- /dev/null +++ b/tests/simple_unit/TableGateway/TestFindByPk.php @@ -0,0 +1,48 @@ +add_record1(); + $id = $this->getGateway()->getLastInsertId(); + $result = $this->getGateway()->findByPk($id); + + $record1 = $this->get_record1(); + + //clean and ignore some fields + unset($result['id']); + unset($result['field7_timestamp']); + unset($record1['field7_timestamp']); + $result['phone'] = intval($result['phone']); + $result['field9_numeric'] = floatval($result['field9_numeric']); + + $this->assertEqual($record1, $result); + } + + function test_composite_key() + { + $gateway = $this->getGateway2(); + + $result = $gateway->findByPk(1,1); + $expect = array("department_id" => 1, "section_id" => 1, "order" => 0); + $this->assertEqual($expect, $result); + } + + function test_find_all_keys() + { + $gateway = $this->getGateway2(); + + $result = $gateway->findAllByPks(array(1,1), array(3,13))->readAll(); + + $expect = array( + array("department_id" => 1, "section_id" => 1, "order" => 0), + array("department_id" => 3, "section_id" => 13, "order" => 0)); + + $this->assertEqual($expect, $result); + + } +} +?> \ No newline at end of file -- cgit v1.2.3