From 12c4c7e88a1ace74ecc81892313f9bff83596d12 Mon Sep 17 00:00:00 2001 From: kenjis Date: Sun, 21 Jan 2024 08:51:27 +0900 Subject: [PATCH] test: add test for getFieldData() for Postgre --- .../Live/Postgre/GetFieldDataTest.php | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 tests/system/Database/Live/Postgre/GetFieldDataTest.php diff --git a/tests/system/Database/Live/Postgre/GetFieldDataTest.php b/tests/system/Database/Live/Postgre/GetFieldDataTest.php new file mode 100644 index 000000000000..64caac6126b3 --- /dev/null +++ b/tests/system/Database/Live/Postgre/GetFieldDataTest.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace CodeIgniter\Database\Live\Postgre; + +use CodeIgniter\Database\Live\AbstractGetFieldDataTest; +use Config\Database; + +/** + * @group DatabaseLive + * + * @internal + */ +final class GetFieldDataTest extends AbstractGetFieldDataTest +{ + protected function createForge(): void + { + if ($this->db->DBDriver !== 'Postgre') { + $this->markTestSkipped('This test is only for Postgre.'); + } + + $this->forge = Database::forge($this->db); + } + + public function testGetFieldData(): void + { + $fields = $this->db->getFieldData('test1'); + + $this->assertJsonStringEqualsJsonString( + json_encode([ + (object) [ + 'name' => 'id', + 'type' => 'integer', + 'max_length' => '32', + 'default' => "nextval('db_test1_id_seq'::regclass)", // The default value is not defined. + // 'primary_key' => 1, + 'nullable' => false, + ], + (object) [ + 'name' => 'text_not_null', + 'type' => 'character varying', + 'max_length' => '64', + 'default' => null, // The default value is not defined. + // 'primary_key' => 0, + 'nullable' => false, + ], + (object) [ + 'name' => 'text_null', + 'type' => 'character varying', + 'max_length' => '64', + 'default' => null, // The default value is not defined. + // 'primary_key' => 0, + 'nullable' => true, + ], + (object) [ + 'name' => 'int_default_0', + 'type' => 'integer', + 'max_length' => '32', + 'default' => '0', // int 0 + // 'primary_key' => 0, + 'nullable' => false, + ], + (object) [ + 'name' => 'text_default_null', + 'type' => 'character varying', + 'max_length' => '64', + 'default' => 'NULL::character varying', // NULL value + // 'primary_key' => 0, + 'nullable' => true, + ], + (object) [ + 'name' => 'text_default_text_null', + 'type' => 'character varying', + 'max_length' => '64', + 'default' => "'null'::character varying", // string "null" + // 'primary_key' => 0, + 'nullable' => false, + ], + (object) [ + 'name' => 'text_default_abc', + 'type' => 'character varying', + 'max_length' => '64', + 'default' => "'abc'::character varying", // string "abc" + // 'primary_key' => 0, + 'nullable' => false, + ], + ]), + json_encode($fields) + ); + } +}