]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add a test for primary keys 31513/head
authorJoas Schilling <coding@schilljs.com>
Thu, 10 Mar 2022 13:04:04 +0000 (14:04 +0100)
committerJoas Schilling <coding@schilljs.com>
Thu, 10 Mar 2022 13:04:04 +0000 (14:04 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
tests/lib/DB/MigrationsTest.php

index 507f3d0e228f9975ac0be41ef7a3ced79c6fb458..f22de8c5e6ec108dd09a3ddfa9aa640c0bdc71e5 100644 (file)
@@ -246,6 +246,8 @@ class MigrationsTest extends \Test\TestCase {
                        ->method('getName')
                        ->willReturn(\str_repeat('a', 30));
 
+               $primaryKey = $this->createMock(Index::class);
+
                $table->expects($this->once())
                        ->method('getColumns')
                        ->willReturn([$column]);
@@ -257,7 +259,7 @@ class MigrationsTest extends \Test\TestCase {
                        ->willReturn([$foreignKey]);
                $table->expects($this->once())
                        ->method('getPrimaryKey')
-                       ->willReturn(null);
+                       ->willReturn($primaryKey);
 
                $schema = $this->createMock(Schema::class);
                $schema->expects($this->once())
@@ -607,6 +609,46 @@ class MigrationsTest extends \Test\TestCase {
        }
 
 
+       public function testEnsureOracleConstraintsNoPrimaryKey() {
+               $this->expectException(\InvalidArgumentException::class);
+
+               $table = $this->createMock(Table::class);
+               $table->expects($this->atLeastOnce())
+                       ->method('getName')
+                       ->willReturn(\str_repeat('a', 30));
+               $table->expects($this->once())
+                       ->method('getColumns')
+                       ->willReturn([]);
+               $table->expects($this->once())
+                       ->method('getIndexes')
+                       ->willReturn([]);
+               $table->expects($this->once())
+                       ->method('getForeignKeys')
+                       ->willReturn([]);
+               $table->expects($this->once())
+                       ->method('getPrimaryKey')
+                       ->willReturn(null);
+
+               $schema = $this->createMock(Schema::class);
+               $schema->expects($this->once())
+                       ->method('getTables')
+                       ->willReturn([$table]);
+               $schema->expects($this->once())
+                       ->method('getSequences')
+                       ->willReturn([]);
+
+               $sourceSchema = $this->createMock(Schema::class);
+               $sourceSchema->expects($this->any())
+                       ->method('getTable')
+                       ->willThrowException(new SchemaException());
+               $sourceSchema->expects($this->any())
+                       ->method('hasSequence')
+                       ->willReturn(false);
+
+               self::invokePrivate($this->migrationService, 'ensureOracleConstraints', [$sourceSchema, $schema, 3]);
+       }
+
+
        public function testEnsureOracleConstraintsTooLongSequenceName() {
                $this->expectException(\InvalidArgumentException::class);