diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2021-04-19 08:57:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-19 08:57:41 +0200 |
commit | 751be29c73d226a87ffbea20d70910794eeb0237 (patch) | |
tree | fa835690f99835e93f99c4940d7475020697865f /tests | |
parent | 8c82dd37b4cd023e3a5b8ee492800134e4544f4a (diff) | |
parent | 1670d004529e5e17e0028394c4696baee21e2a53 (diff) | |
download | nextcloud-server-751be29c73d226a87ffbea20d70910794eeb0237.tar.gz nextcloud-server-751be29c73d226a87ffbea20d70910794eeb0237.zip |
Merge pull request #26555 from nextcloud/techdebt/noid/run-migrator-tests-on-OCI
Run migrator tests on OCI
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/DB/MigratorTest.php | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/tests/lib/DB/MigratorTest.php b/tests/lib/DB/MigratorTest.php index 1d2afaa405e..114cf03d7be 100644 --- a/tests/lib/DB/MigratorTest.php +++ b/tests/lib/DB/MigratorTest.php @@ -10,6 +10,7 @@ namespace Test\DB; use Doctrine\DBAL\Exception; +use Doctrine\DBAL\ParameterType; use Doctrine\DBAL\Platforms\MySQLPlatform; use Doctrine\DBAL\Platforms\OraclePlatform; use Doctrine\DBAL\Platforms\PostgreSQL94Platform; @@ -21,6 +22,7 @@ use OC\DB\MySQLMigrator; use OC\DB\OracleMigrator; use OC\DB\PostgreSqlMigrator; use OC\DB\SQLiteMigrator; +use OCP\DB\Types; use OCP\IConfig; /** @@ -52,9 +54,6 @@ class MigratorTest extends \Test\TestCase { $this->config = \OC::$server->getConfig(); $this->connection = \OC::$server->get(\OC\DB\Connection::class); - if ($this->connection->getDatabasePlatform() instanceof OraclePlatform) { - $this->markTestSkipped('DB migration tests are not supported on OCI'); - } $this->tableName = $this->getUniqueTableName(); $this->tableNameTmp = $this->getUniqueTableName(); @@ -257,4 +256,51 @@ class MigratorTest extends \Test\TestCase { $this->assertTrue($startSchema->getTable($this->tableNameTmp)->hasForeignKey($fkName)); } + + public function dataNotNullEmptyValuesFailOracle(): array { + return [ + [ParameterType::BOOLEAN, true, Types::BOOLEAN, false], + [ParameterType::BOOLEAN, false, Types::BOOLEAN, true], + + [ParameterType::STRING, 'foo', Types::STRING, false], + [ParameterType::STRING, '', Types::STRING, true], + + [ParameterType::INTEGER, 1234, Types::INTEGER, false], + [ParameterType::INTEGER, 0, Types::INTEGER, false], // Integer 0 is not stored as Null and therefor works + ]; + } + + /** + * @dataProvider dataNotNullEmptyValuesFailOracle + * + * @param int $parameterType + * @param bool|int|string $value + * @param string $columnType + * @param bool $oracleThrows + */ + public function testNotNullEmptyValuesFailOracle(int $parameterType, $value, string $columnType, bool $oracleThrows): void { + $startSchema = new Schema([], [], $this->getSchemaConfig()); + $table = $startSchema->createTable($this->tableName); + $table->addColumn('id', Types::BIGINT); + $table->addColumn('will_it_blend', $columnType, [ + 'notnull' => true, + ]); + $table->addIndex(['id'], $this->tableName . '_id'); + + $migrator = $this->getMigrator(); + $migrator->migrate($startSchema); + + if ($oracleThrows && $this->connection->getDatabasePlatform() instanceof OraclePlatform) { + // Oracle can not store false|empty string in notnull columns + $this->expectException(\Doctrine\DBAL\Exception\NotNullConstraintViolationException::class); + } + + $this->connection->insert( + $this->tableName, + ['id' => 1, 'will_it_blend' => $value], + ['id' => ParameterType::INTEGER, 'will_it_blend' => $parameterType], + ); + + $this->addToAssertionCount(1); + } } |