diff --git a/tests/php/ORM/MySQLSchemaManagerTest.php b/tests/php/ORM/MySQLSchemaManagerTest.php new file mode 100644 index 000000000..a9a256e48 --- /dev/null +++ b/tests/php/ORM/MySQLSchemaManagerTest.php @@ -0,0 +1,209 @@ +set('schema_use_int_width', null); + + $mysqlDBdummy = new MySQLDBDummy('8.0.16-standard'); + $mgr = new MySQLSchemaManager(); + $mgr->setDatabase($mysqlDBdummy); + + $this->assertEquals( + 'tinyint(1) unsigned not null', + $mgr->boolean([]), + 'mysql 8.0.16 boolean has width' + ); + + $this->assertEquals( + 'int(11) not null', + $mgr->int([]), + 'mysql 8.0.16 int has width' + ); + + $this->assertEquals( + 'bigint(20) not null', + $mgr->bigint([]), + 'mysql 8.0.16 bigint has width' + ); + + $this->assertEquals( + 'int(11) not null auto_increment', + $mgr->IdColumn([]), + 'mysql 8.0.16 IdColumn has width' + ); + } + + public function testMYSQL_8_0_17() + { + Config::forClass(MySQLSchemaManager::class)->set('schema_use_int_width', null); + + $mysqlDBdummy = new MySQLDBDummy('8.0.17'); + $mgr = new MySQLSchemaManager(); + $mgr->setDatabase($mysqlDBdummy); + + $this->assertEquals( + 'tinyint unsigned not null', + $mgr->boolean([]), + 'mysql 8.0.17 boolean has no width' + ); + + $this->assertEquals( + 'int not null', + $mgr->int([]), + 'mysql 8.0.17 int has no width' + ); + + $this->assertEquals( + 'bigint not null', + $mgr->bigint([]), + 'mysql 8.0.17 bigint has no width' + ); + + $this->assertEquals( + 'int not null auto_increment', + $mgr->IdColumn([]), + 'mysql 8.0.17 IdColumn has no width' + ); + } + + public function testMariaDB() + { + Config::forClass(MySQLSchemaManager::class)->set('schema_use_int_width', null); + + $mariaDBdummy = new MySQLDBDummy('10.4.7-MariaDB'); + $mgr = new MySQLSchemaManager(); + $mgr->setDatabase($mariaDBdummy); + + $this->assertEquals( + 'tinyint(1) unsigned not null', + $mgr->boolean([]), + 'mariadb boolean has width' + ); + + $this->assertEquals( + 'int(11) not null', + $mgr->int([]), + 'mariadb int has width' + ); + + $this->assertEquals( + 'bigint(20) not null', + $mgr->bigint([]), + 'mariadb bigint has width' + ); + + $this->assertEquals( + 'int(11) not null auto_increment', + $mgr->IdColumn([]), + 'mariadb IdColumn has width' + ); + } + + public function testMySQLForcedON() + { + Config::forClass(MySQLSchemaManager::class)->set('schema_use_int_width', true); + + $mysqlDBdummy = new MySQLDBDummy('8.0.17-standard'); + $mgr = new MySQLSchemaManager(); + $mgr->setDatabase($mysqlDBdummy); + + $this->assertEquals( + 'tinyint(1) unsigned not null', + $mgr->boolean([]), + 'mysql 8.0.17 boolean forced on has width' + ); + + $this->assertEquals( + 'int(11) not null', + $mgr->int([]), + 'mysql 8.0.17 int forced on has width' + ); + + $this->assertEquals( + 'bigint(20) not null', + $mgr->bigint([]), + 'mysql 8.0.17 bigint forced on has width' + ); + + $this->assertEquals( + 'int(11) not null auto_increment', + $mgr->IdColumn([]), + 'mysql 8.0.17 IdColumn forced on has width' + ); + } + + public function testMySQLForcedOFF() + { + Config::forClass(MySQLSchemaManager::class)->set('schema_use_int_width', false); + + $mysqlDBdummy = new MySQLDBDummy('8.0.16-standard'); + $mgr = new MySQLSchemaManager(); + $mgr->setDatabase($mysqlDBdummy); + + $this->assertEquals( + 'tinyint unsigned not null', + $mgr->boolean([]), + 'mysql 8.0.16 boolean forced off has no width' + ); + + $this->assertEquals( + 'int not null', + $mgr->int([]), + 'mysql 8.0.16 int forced off has no width' + ); + + $this->assertEquals( + 'bigint not null', + $mgr->bigint([]), + 'mysql 8.0.16 bigint forced off has no width' + ); + + $this->assertEquals( + 'int not null auto_increment', + $mgr->IdColumn([]), + 'mysql 8.0.16 IdColumn forced off has no width' + ); + } + + public function testMariaDBForcedOFF() + { + Config::forClass(MySQLSchemaManager::class)->set('schema_use_int_width', false); + + $mysqlDBdummy = new MySQLDBDummy('10.0.1-MariaDB'); + $mgr = new MySQLSchemaManager(); + $mgr->setDatabase($mysqlDBdummy); + + $this->assertEquals( + 'tinyint unsigned not null', + $mgr->boolean([]), + 'mariadb boolean forced off has no width' + ); + + $this->assertEquals( + 'int not null', + $mgr->int([]), + 'mariadb int forced off has no width' + ); + + $this->assertEquals( + 'bigint not null', + $mgr->bigint([]), + 'mariadb bigint forced off has no width' + ); + + $this->assertEquals( + 'int not null auto_increment', + $mgr->IdColumn([]), + 'mariadb IdColumn forced off has no width' + ); + } +} diff --git a/tests/php/ORM/MySQLSchemaManagerTest/MySQLDBDummy.php b/tests/php/ORM/MySQLSchemaManagerTest/MySQLDBDummy.php new file mode 100644 index 000000000..b6b03a47c --- /dev/null +++ b/tests/php/ORM/MySQLSchemaManagerTest/MySQLDBDummy.php @@ -0,0 +1,21 @@ +dbVersion = $version; + } + + public function getVersion() + { + return $this->dbVersion; + } +}