diff --git a/tests/Import/PgsqlTestCase.php b/tests/Import/PgsqlTestCase.php index 0146b7337..29db771cf 100644 --- a/tests/Import/PgsqlTestCase.php +++ b/tests/Import/PgsqlTestCase.php @@ -30,5 +30,139 @@ * @since 1.0 * @version $Revision$ */ -class Doctrine_Import_Pgsql_TestCase extends Doctrine_UnitTestCase { +class Doctrine_Import_Pgsql_TestCase extends Doctrine_UnitTestCase +{ + public function testListSequencesExecutesSql() + { + $this->import->listSequences('table'); + + $this->assertEqual($this->adapter->pop(), "SELECT + relname + FROM + pg_class + WHERE relkind = 'S' AND relnamespace IN + (SELECT oid FROM pg_namespace + WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema')"); + } + public function testListTableColumnsExecutesSql() + { + $this->import->listTableColumns('table'); + + $this->assertEqual($this->adapter->pop(), "SELECT + a.attnum, + a.attname AS field, + t.typname AS type, + format_type(a.atttypid, a.atttypmod) AS complete_type, + a.attnotnull AS isnotnull, + (SELECT 't' + FROM pg_index + WHERE c.oid = pg_index.indrelid + AND pg_index.indkey[0] = a.attnum + AND pg_index.indisprimary = 't' + ) AS pri, + (SELECT pg_attrdef.adsrc + FROM pg_attrdef + WHERE c.oid = pg_attrdef.adrelid + AND pg_attrdef.adnum=a.attnum + ) AS default + FROM pg_attribute a, pg_class c, pg_type t + WHERE c.relname = 'table' + AND a.attnum > 0 + AND a.attrelid = c.oid + AND a.atttypid = t.oid + ORDER BY a.attnum"); + } + public function testListTableIndexesExecutesSql() + { + $this->import->listTableIndexes('table'); + + $this->assertEqual($this->adapter->pop(), "SELECT + relname + FROM + pg_class + WHERE oid IN ( + SELECT indexrelid + FROM pg_index, pg_class + WHERE pg_class.relname = 'table' + AND pg_class.oid=pg_index.indrelid + AND indisunique != 't' + AND indisprimary != 't' + )"); + } + public function testListTablesExecutesSql() + { + $this->import->listTables(); + + $q = "SELECT + c.relname AS table_name + FROM pg_class c, pg_user u + WHERE c.relowner = u.usesysid + AND c.relkind = 'r' + AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname) + AND c.relname !~ '^(pg_|sql_)' + UNION + SELECT c.relname AS table_name + FROM pg_class c + WHERE c.relkind = 'r' + AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname) + AND NOT EXISTS (SELECT 1 FROM pg_user WHERE usesysid = c.relowner) + AND c.relname !~ '^pg_'"; + $this->assertEqual($this->adapter->pop(), $q); + } + public function testListDatabasesExecutesSql() + { + $this->import->listDatabases(); + + $q = 'SELECT datname FROM pg_database'; + $this->assertEqual($this->adapter->pop(), $q); + } + public function testListUsersExecutesSql() + { + $this->import->listUsers(); + + $q = 'SELECT usename FROM pg_user'; + $this->assertEqual($this->adapter->pop(), $q); + } + public function testListViewsExecutesSql() + { + $this->import->listViews(); + + $q = 'SELECT viewname FROM pg_views'; + $this->assertEqual($this->adapter->pop(), $q); + } + public function testListFunctionsExecutesSql() + { + $this->import->listFunctions(); + + $q = "SELECT + proname + FROM + pg_proc pr, + pg_type tp + WHERE + tp.oid = pr.prorettype + AND pr.proisagg = FALSE + AND tp.typname <> 'trigger' + AND pr.pronamespace IN + (SELECT oid FROM pg_namespace + WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema'"; + $this->assertEqual($this->adapter->pop(), $q); + } + public function testListTableConstraintsExecutesSql() + { + $this->import->listTableConstraints('table'); + + $q = "SELECT + relname + FROM + pg_class + WHERE oid IN ( + SELECT indexrelid + FROM pg_index, pg_class + WHERE pg_class.relname = 'table' + AND pg_class.oid = pg_index.indrelid + AND (indisunique = 't' OR indisprimary = 't') + )"; + $this->assertEqual($this->adapter->pop(), $q); + } }