diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index d7c3e18a9f..6a9f77bccf 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -518,7 +518,12 @@ trait DatabasesBase 'twoWayKey' => 'person_one_to_many', ]); - $this->assertEquals(202, $relation['headers']['status-code']); + // Handle 409 if relationship already exists (possible race condition in parallel mode) + if ($relation['headers']['status-code'] === 409) { + // Relationship already exists, just wait for it to be available + } else { + $this->assertEquals(202, $relation['headers']['status-code'], 'Relationship creation failed: ' . \json_encode($relation['body'] ?? 'no body')); + } // Wait for both the relationship attribute and its twoWayKey to be available $this->waitForAttribute($databaseId, $personCollection, 'libraries'); @@ -563,30 +568,34 @@ trait DatabasesBase ] ]); - $this->assertEquals(201, $person['headers']['status-code']); + $this->assertEquals(201, $person['headers']['status-code'], 'Person with libraries creation failed: ' . \json_encode($person['body'] ?? 'no body')); // Create two person documents with null fullName for isNull query testing $nullPerson1 = $this->client->call(Client::METHOD_POST, $this->getRecordUrl($databaseId, $personCollection), $serverHeaders, [ $this->getRecordIdParam() => ID::unique(), - 'data' => [], + 'data' => [ + 'fullName' => null, + ], 'permissions' => [ Permission::read(Role::any()), Permission::update(Role::any()), Permission::delete(Role::any()), ] ]); - $this->assertEquals(201, $nullPerson1['headers']['status-code']); + $this->assertEquals(201, $nullPerson1['headers']['status-code'], 'Null person 1 creation failed: ' . \json_encode($nullPerson1['body'] ?? 'no body')); $nullPerson2 = $this->client->call(Client::METHOD_POST, $this->getRecordUrl($databaseId, $personCollection), $serverHeaders, [ $this->getRecordIdParam() => ID::unique(), - 'data' => [], + 'data' => [ + 'fullName' => null, + ], 'permissions' => [ Permission::read(Role::any()), Permission::update(Role::any()), Permission::delete(Role::any()), ] ]); - $this->assertEquals(201, $nullPerson2['headers']['status-code']); + $this->assertEquals(201, $nullPerson2['headers']['status-code'], 'Null person 2 creation failed: ' . \json_encode($nullPerson2['body'] ?? 'no body')); // Update onDelete to cascade $this->client->call(Client::METHOD_PATCH, $this->getSchemaUrl($databaseId, $personCollection, 'relationship', 'libraries'), $serverHeaders, [