diff --git a/tests/e2e/Adapter/MirrorTest.php b/tests/e2e/Adapter/MirrorTest.php index 31bf3f3b6..1bb609ed3 100644 --- a/tests/e2e/Adapter/MirrorTest.php +++ b/tests/e2e/Adapter/MirrorTest.php @@ -112,7 +112,7 @@ public function testGetMirrorSource(): void $database = $this->getDatabase(); $source = $database->getSource(); $this->assertInstanceOf(Database::class, $source); - $this->assertEquals(self::$source, $source); + $this->assertSame(self::$source, $source); } /** @@ -124,7 +124,7 @@ public function testGetMirrorDestination(): void $database = $this->getDatabase(); $destination = $database->getDestination(); $this->assertInstanceOf(Database::class, $destination); - $this->assertEquals(self::$destination, $destination); + $this->assertSame(self::$destination, $destination); } /** @@ -170,12 +170,12 @@ public function testUpdateMirroredCollection(): void ); // Asset both databases have updated the collection - $this->assertEquals( + $this->assertSame( [Permission::read(Role::users())], $database->getSource()->getCollection('testUpdateMirroredCollection')->getPermissions() ); - $this->assertEquals( + $this->assertSame( [Permission::read(Role::users())], $database->getDestination()->getCollection('testUpdateMirroredCollection')->getPermissions() ); @@ -224,12 +224,12 @@ public function testCreateMirroredDocument(): void ])); // Assert document is created in both databases - $this->assertEquals( + $this->assertSame( $document, $database->getSource()->getDocument('testCreateMirroredDocument', $document->getId()) ); - $this->assertEquals( + $this->assertSame( $document, $database->getDestination()->getDocument('testCreateMirroredDocument', $document->getId()) ); @@ -273,12 +273,12 @@ public function testUpdateMirroredDocument(): void ); // Assert document is updated in both databases - $this->assertEquals( + $this->assertSame( $document, $database->getSource()->getDocument('testUpdateMirroredDocument', $document->getId()) ); - $this->assertEquals( + $this->assertSame( $document, $database->getDestination()->getDocument('testUpdateMirroredDocument', $document->getId()) ); diff --git a/tests/e2e/Adapter/MongoDBTest.php b/tests/e2e/Adapter/MongoDBTest.php index 1c7eb9237..c3bc2e725 100644 --- a/tests/e2e/Adapter/MongoDBTest.php +++ b/tests/e2e/Adapter/MongoDBTest.php @@ -73,9 +73,9 @@ public function testCreateExistsDelete(): void { // Mongo creates databases on the fly, so exists would always pass. So we override this test to remove the exists check. $this->assertNotNull($this->getDatabase()->create()); - $this->assertEquals(true, $this->getDatabase()->delete($this->testDatabase)); - $this->assertEquals(true, $this->getDatabase()->create()); - $this->assertEquals($this->getDatabase(), $this->getDatabase()->setDatabase($this->testDatabase)); + $this->assertSame(true, $this->getDatabase()->delete($this->testDatabase)); + $this->assertSame(true, $this->getDatabase()->create()); + $this->assertSame($this->getDatabase(), $this->getDatabase()->setDatabase($this->testDatabase)); } public function testRenameAttribute(): void diff --git a/tests/e2e/Adapter/Schemaless/MongoDBTest.php b/tests/e2e/Adapter/Schemaless/MongoDBTest.php index 04ebd79f9..31a6dc175 100644 --- a/tests/e2e/Adapter/Schemaless/MongoDBTest.php +++ b/tests/e2e/Adapter/Schemaless/MongoDBTest.php @@ -75,9 +75,9 @@ public function testCreateExistsDelete(): void { // Mongo creates databases on the fly, so exists would always pass. So we override this test to remove the exists check. $this->assertNotNull(static::getDatabase()->create()); - $this->assertEquals(true, $this->getDatabase()->delete($this->testDatabase)); - $this->assertEquals(true, $this->getDatabase()->create()); - $this->assertEquals($this->getDatabase(), $this->getDatabase()->setDatabase($this->testDatabase)); + $this->assertSame(true, $this->getDatabase()->delete($this->testDatabase)); + $this->assertSame(true, $this->getDatabase()->create()); + $this->assertSame($this->getDatabase(), $this->getDatabase()->setDatabase($this->testDatabase)); } public function testRenameAttribute(): void diff --git a/tests/e2e/Adapter/Scopes/AttributeTests.php b/tests/e2e/Adapter/Scopes/AttributeTests.php index f62c94fe8..1074e7434 100644 --- a/tests/e2e/Adapter/Scopes/AttributeTests.php +++ b/tests/e2e/Adapter/Scopes/AttributeTests.php @@ -62,87 +62,87 @@ public function testCreateDeleteAttribute(): void $database->createCollection('attributes'); - $this->assertEquals(true, $database->createAttribute('attributes', 'string1', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'string2', Database::VAR_STRING, 16382 + 1, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'string3', Database::VAR_STRING, 65535 + 1, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'string4', Database::VAR_STRING, 16777215 + 1, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'integer', Database::VAR_INTEGER, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'bigint', Database::VAR_INTEGER, 8, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'float', Database::VAR_FLOAT, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'boolean', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'id', Database::VAR_ID, 0, true)); - - $this->assertEquals(true, $database->createIndex('attributes', 'id_index', Database::INDEX_KEY, ['id'])); - $this->assertEquals(true, $database->createIndex('attributes', 'string1_index', Database::INDEX_KEY, ['string1'])); - $this->assertEquals(true, $database->createIndex('attributes', 'string2_index', Database::INDEX_KEY, ['string2'], [255])); - $this->assertEquals(true, $database->createIndex('attributes', 'multi_index', Database::INDEX_KEY, ['string1', 'string2', 'string3'], [128, 128, 128])); + $this->assertSame(true, $database->createAttribute('attributes', 'string1', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'string2', Database::VAR_STRING, 16382 + 1, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'string3', Database::VAR_STRING, 65535 + 1, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'string4', Database::VAR_STRING, 16777215 + 1, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'integer', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'bigint', Database::VAR_INTEGER, 8, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'float', Database::VAR_FLOAT, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'boolean', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'id', Database::VAR_ID, 0, true)); + + $this->assertSame(true, $database->createIndex('attributes', 'id_index', Database::INDEX_KEY, ['id'])); + $this->assertSame(true, $database->createIndex('attributes', 'string1_index', Database::INDEX_KEY, ['string1'])); + $this->assertSame(true, $database->createIndex('attributes', 'string2_index', Database::INDEX_KEY, ['string2'], [255])); + $this->assertSame(true, $database->createIndex('attributes', 'multi_index', Database::INDEX_KEY, ['string1', 'string2', 'string3'], [128, 128, 128])); $collection = $database->getCollection('attributes'); $this->assertCount(9, $collection->getAttribute('attributes')); $this->assertCount(4, $collection->getAttribute('indexes')); // Array - $this->assertEquals(true, $database->createAttribute('attributes', 'string_list', Database::VAR_STRING, 128, true, null, true, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'integer_list', Database::VAR_INTEGER, 0, true, null, true, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'float_list', Database::VAR_FLOAT, 0, true, null, true, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'boolean_list', Database::VAR_BOOLEAN, 0, true, null, true, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'string_list', Database::VAR_STRING, 128, true, null, true, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'integer_list', Database::VAR_INTEGER, 0, true, null, true, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'float_list', Database::VAR_FLOAT, 0, true, null, true, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'boolean_list', Database::VAR_BOOLEAN, 0, true, null, true, true)); $collection = $database->getCollection('attributes'); $this->assertCount(13, $collection->getAttribute('attributes')); // Default values - $this->assertEquals(true, $database->createAttribute('attributes', 'string_default', Database::VAR_STRING, 256, false, 'test')); - $this->assertEquals(true, $database->createAttribute('attributes', 'integer_default', Database::VAR_INTEGER, 0, false, 1)); - $this->assertEquals(true, $database->createAttribute('attributes', 'float_default', Database::VAR_FLOAT, 0, false, 1.5)); - $this->assertEquals(true, $database->createAttribute('attributes', 'boolean_default', Database::VAR_BOOLEAN, 0, false, false)); - $this->assertEquals(true, $database->createAttribute('attributes', 'datetime_default', Database::VAR_DATETIME, 0, false, '2000-06-12T14:12:55.000+00:00', true, false, null, [], ['datetime'])); + $this->assertSame(true, $database->createAttribute('attributes', 'string_default', Database::VAR_STRING, 256, false, 'test')); + $this->assertSame(true, $database->createAttribute('attributes', 'integer_default', Database::VAR_INTEGER, 0, false, 1)); + $this->assertSame(true, $database->createAttribute('attributes', 'float_default', Database::VAR_FLOAT, 0, false, 1.5)); + $this->assertSame(true, $database->createAttribute('attributes', 'boolean_default', Database::VAR_BOOLEAN, 0, false, false)); + $this->assertSame(true, $database->createAttribute('attributes', 'datetime_default', Database::VAR_DATETIME, 0, false, '2000-06-12T14:12:55.000+00:00', true, false, null, [], ['datetime'])); $collection = $database->getCollection('attributes'); $this->assertCount(18, $collection->getAttribute('attributes')); // Delete - $this->assertEquals(true, $database->deleteAttribute('attributes', 'string1')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'string2')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'string3')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'string4')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'integer')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'bigint')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'float')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'boolean')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'id')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'string1')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'string2')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'string3')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'string4')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'integer')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'bigint')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'float')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'boolean')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'id')); $collection = $database->getCollection('attributes'); $this->assertCount(9, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); // Delete Array - $this->assertEquals(true, $database->deleteAttribute('attributes', 'string_list')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'integer_list')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'float_list')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'boolean_list')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'string_list')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'integer_list')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'float_list')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'boolean_list')); $collection = $database->getCollection('attributes'); $this->assertCount(5, $collection->getAttribute('attributes')); // Delete default - $this->assertEquals(true, $database->deleteAttribute('attributes', 'string_default')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'integer_default')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'float_default')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'boolean_default')); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'datetime_default')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'string_default')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'integer_default')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'float_default')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'boolean_default')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'datetime_default')); $collection = $database->getCollection('attributes'); $this->assertCount(0, $collection->getAttribute('attributes')); // Test for custom chars in ID - $this->assertEquals(true, $database->createAttribute('attributes', 'as_5dasdasdas', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'as5dasdasdas_', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', '.as5dasdasdas', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', '-as5dasdasdas', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'as-5dasdasdas', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'as5dasdasdas-', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', 'socialAccountForYoutubeSubscribersss', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('attributes', '5f058a89258075f058a89258075f058t9214', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'as_5dasdasdas', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'as5dasdasdas_', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', '.as5dasdasdas', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', '-as5dasdasdas', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'as-5dasdasdas', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'as5dasdasdas-', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'socialAccountForYoutubeSubscribersss', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('attributes', '5f058a89258075f058a89258075f058t9214', Database::VAR_BOOLEAN, 0, true)); // Test non-shared tables duplicates throw duplicate $database->createAttribute('attributes', 'duplicate', Database::VAR_STRING, 128, true); @@ -154,17 +154,17 @@ public function testCreateDeleteAttribute(): void } // Test delete attribute when column does not exist - $this->assertEquals(true, $database->createAttribute('attributes', 'string1', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'string1', Database::VAR_STRING, 128, true)); sleep(1); - $this->assertEquals(true, $this->deleteColumn('attributes', 'string1')); + $this->assertSame(true, $this->deleteColumn('attributes', 'string1')); $collection = $database->getCollection('attributes'); $attributes = $collection->getAttribute('attributes'); $attribute = end($attributes); - $this->assertEquals('string1', $attribute->getId()); + $this->assertSame('string1', $attribute->getId()); - $this->assertEquals(true, $database->deleteAttribute('attributes', 'string1')); + $this->assertSame(true, $database->deleteAttribute('attributes', 'string1')); $collection = $database->getCollection('attributes'); $attributes = $collection->getAttribute('attributes'); @@ -183,7 +183,7 @@ public function testInvalidDefaultValues(string $type, mixed $default): void $database = $this->getDatabase(); $this->expectException(\Exception::class); - $this->assertEquals(false, $database->createAttribute('attributes', 'bad_default', $type, 256, true, $default)); + $this->assertSame(false, $database->createAttribute('attributes', 'bad_default', $type, 256, true, $default)); } /** * @depends testInvalidDefaultValues @@ -193,9 +193,9 @@ public function testAttributeCaseInsensitivity(): void /** @var Database $database */ $database = $this->getDatabase(); - $this->assertEquals(true, $database->createAttribute('attributes', 'caseSensitive', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'caseSensitive', Database::VAR_STRING, 128, true)); $this->expectException(DuplicateException::class); - $this->assertEquals(true, $database->createAttribute('attributes', 'CaseSensitive', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('attributes', 'CaseSensitive', Database::VAR_STRING, 128, true)); } public function testAttributeKeyWithSymbols(): void @@ -205,7 +205,7 @@ public function testAttributeKeyWithSymbols(): void $database->createCollection('attributesWithKeys'); - $this->assertEquals(true, $database->createAttribute('attributesWithKeys', 'key_with.sym$bols', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('attributesWithKeys', 'key_with.sym$bols', Database::VAR_STRING, 128, true)); $document = $database->createDocument('attributesWithKeys', new Document([ 'key_with.sym$bols' => 'value', @@ -214,11 +214,11 @@ public function testAttributeKeyWithSymbols(): void ] ])); - $this->assertEquals('value', $document->getAttribute('key_with.sym$bols')); + $this->assertSame('value', $document->getAttribute('key_with.sym$bols')); $document = $database->getDocument('attributesWithKeys', $document->getId()); - $this->assertEquals('value', $document->getAttribute('key_with.sym$bols')); + $this->assertSame('value', $document->getAttribute('key_with.sym$bols')); } public function testAttributeNamesWithDots(): void @@ -281,7 +281,7 @@ public function testAttributeNamesWithDots(): void Query::select(['*']), ]); - $this->assertEquals('Bill clinton', $documents[0]['dots.name']); + $this->assertSame('Bill clinton', $documents[0]['dots.name']); } @@ -333,7 +333,7 @@ public function testUpdateAttributeDefault(): void ])); $this->assertIsNumeric($doc->getAttribute('inStock')); - $this->assertEquals(100, $doc->getAttribute('inStock')); + $this->assertSame(100, $doc->getAttribute('inStock')); $database->updateAttributeDefault('flowers', 'inStock', null); } @@ -366,20 +366,20 @@ public function testRenameAttribute(): void $this->assertTrue($attribute); $colors = $database->getCollection('colors'); - $this->assertEquals('hex', $colors->getAttribute('attributes')[1]['$id']); - $this->assertEquals('verbose', $colors->getAttribute('attributes')[0]['$id']); + $this->assertSame('hex', $colors->getAttribute('attributes')[1]['$id']); + $this->assertSame('verbose', $colors->getAttribute('attributes')[0]['$id']); $this->assertCount(2, $colors->getAttribute('attributes')); // Attribute in index is renamed automatically on adapter-level. What we need to check is if metadata is properly updated - $this->assertEquals('verbose', $colors->getAttribute('indexes')[0]->getAttribute("attributes")[0]); + $this->assertSame('verbose', $colors->getAttribute('indexes')[0]->getAttribute("attributes")[0]); $this->assertCount(1, $colors->getAttribute('indexes')); // Document should be there if adapter migrated properly $document = $database->findOne('colors'); $this->assertFalse($document->isEmpty()); - $this->assertEquals('black', $document->getAttribute('verbose')); - $this->assertEquals('#000000', $document->getAttribute('hex')); - $this->assertEquals(null, $document->getAttribute('name')); + $this->assertSame('black', $document->getAttribute('verbose')); + $this->assertSame('#000000', $document->getAttribute('hex')); + $this->assertSame(null, $document->getAttribute('name')); } @@ -434,15 +434,15 @@ public function testUpdateAttributeFilter(): void ])); $this->assertIsString($doc->getAttribute('cartModel')); - $this->assertEquals('{"color":"string","size":"number"}', $doc->getAttribute('cartModel')); + $this->assertSame('{"color":"string","size":"number"}', $doc->getAttribute('cartModel')); $database->updateAttributeFilters('flowers', 'cartModel', ['json']); $doc = $database->getDocument('flowers', $doc->getId()); $this->assertIsArray($doc->getAttribute('cartModel')); $this->assertCount(2, $doc->getAttribute('cartModel')); - $this->assertEquals('string', $doc->getAttribute('cartModel')['color']); - $this->assertEquals('number', $doc->getAttribute('cartModel')['size']); + $this->assertSame('string', $doc->getAttribute('cartModel')['color']); + $this->assertSame('number', $doc->getAttribute('cartModel')['size']); } /** @@ -475,7 +475,7 @@ public function testUpdateAttributeFormat(): void ])); $this->assertIsNumeric($doc->getAttribute('price')); - $this->assertEquals(500, $doc->getAttribute('price')); + $this->assertSame(500, $doc->getAttribute('price')); Structure::addFormat('priceRange', function ($attribute) { $min = $attribute['formatOptions']['min']; @@ -523,134 +523,134 @@ public function testUpdateAttributeStructure(): void // price attribute $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(null, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals('priceRange', $attribute['format']); - $this->assertEquals(['min' => 1, 'max' => 10000], $attribute['formatOptions']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(null, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(false, $attribute['required']); + $this->assertSame('priceRange', $attribute['format']); + $this->assertSame(['min' => 1, 'max' => 10000], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', default: 100); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('integer', $attribute['type']); - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(100, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals('priceRange', $attribute['format']); - $this->assertEquals(['min' => 1, 'max' => 10000], $attribute['formatOptions']); + $this->assertSame('integer', $attribute['type']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(100, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(false, $attribute['required']); + $this->assertSame('priceRange', $attribute['format']); + $this->assertSame(['min' => 1, 'max' => 10000], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', format: 'priceRangeNew'); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('integer', $attribute['type']); - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(100, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals('priceRangeNew', $attribute['format']); - $this->assertEquals(['min' => 1, 'max' => 10000], $attribute['formatOptions']); + $this->assertSame('integer', $attribute['type']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(100, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(false, $attribute['required']); + $this->assertSame('priceRangeNew', $attribute['format']); + $this->assertSame(['min' => 1, 'max' => 10000], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', format: ''); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('integer', $attribute['type']); - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(100, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals('', $attribute['format']); - $this->assertEquals(['min' => 1, 'max' => 10000], $attribute['formatOptions']); + $this->assertSame('integer', $attribute['type']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(100, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(false, $attribute['required']); + $this->assertSame('', $attribute['format']); + $this->assertSame(['min' => 1, 'max' => 10000], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', formatOptions: ['min' => 1, 'max' => 999]); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('integer', $attribute['type']); - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(100, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals('', $attribute['format']); - $this->assertEquals(['min' => 1, 'max' => 999], $attribute['formatOptions']); + $this->assertSame('integer', $attribute['type']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(100, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(false, $attribute['required']); + $this->assertSame('', $attribute['format']); + $this->assertSame(['min' => 1, 'max' => 999], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', formatOptions: []); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('integer', $attribute['type']); - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(100, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals('', $attribute['format']); - $this->assertEquals([], $attribute['formatOptions']); + $this->assertSame('integer', $attribute['type']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(100, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(false, $attribute['required']); + $this->assertSame('', $attribute['format']); + $this->assertSame([], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', signed: false); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('integer', $attribute['type']); - $this->assertEquals(false, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(100, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals('', $attribute['format']); - $this->assertEquals([], $attribute['formatOptions']); + $this->assertSame('integer', $attribute['type']); + $this->assertSame(false, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(100, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(false, $attribute['required']); + $this->assertSame('', $attribute['format']); + $this->assertSame([], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', required: true); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('integer', $attribute['type']); - $this->assertEquals(false, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(null, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(true, $attribute['required']); - $this->assertEquals('', $attribute['format']); - $this->assertEquals([], $attribute['formatOptions']); + $this->assertSame('integer', $attribute['type']); + $this->assertSame(false, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(null, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(true, $attribute['required']); + $this->assertSame('', $attribute['format']); + $this->assertSame([], $attribute['formatOptions']); $database->updateAttribute('flowers', 'price', type: Database::VAR_STRING, size: Database::LENGTH_KEY, format: ''); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[4]; - $this->assertEquals('string', $attribute['type']); - $this->assertEquals(false, $attribute['signed']); - $this->assertEquals(255, $attribute['size']); - $this->assertEquals(null, $attribute['default']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals(true, $attribute['required']); - $this->assertEquals('', $attribute['format']); - $this->assertEquals([], $collection->getAttribute('attributes')[4]['formatOptions']); + $this->assertSame('string', $attribute['type']); + $this->assertSame(false, $attribute['signed']); + $this->assertSame(255, $attribute['size']); + $this->assertSame(null, $attribute['default']); + $this->assertSame(false, $attribute['array']); + $this->assertSame(true, $attribute['required']); + $this->assertSame('', $attribute['format']); + $this->assertSame([], $collection->getAttribute('attributes')[4]['formatOptions']); // Date attribute $attribute = $collection->getAttribute('attributes')[2]; - $this->assertEquals('date', $attribute['key']); - $this->assertEquals('string', $attribute['type']); - $this->assertEquals(null, $attribute['default']); + $this->assertSame('date', $attribute['key']); + $this->assertSame('string', $attribute['type']); + $this->assertSame(null, $attribute['default']); $database->updateAttribute('flowers', 'date', type: Database::VAR_DATETIME, size: 0, filters: ['datetime']); $collection = $database->getCollection('flowers'); $attribute = $collection->getAttribute('attributes')[2]; - $this->assertEquals('datetime', $attribute['type']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(null, $attribute['default']); - $this->assertEquals(false, $attribute['required']); - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(false, $attribute['array']); - $this->assertEquals('', $attribute['format']); - $this->assertEquals([], $attribute['formatOptions']); + $this->assertSame('datetime', $attribute['type']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(null, $attribute['default']); + $this->assertSame(false, $attribute['required']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(false, $attribute['array']); + $this->assertSame('', $attribute['format']); + $this->assertSame([], $attribute['formatOptions']); $doc = $database->getDocument('flowers', 'LiliPriced'); $this->assertIsString($doc->getAttribute('price')); - $this->assertEquals('500', $doc->getAttribute('price')); + $this->assertSame('500', $doc->getAttribute('price')); $doc = $database->getDocument('flowers', 'flowerWithDate'); - $this->assertEquals('2000-06-12T14:12:55.000+00:00', $doc->getAttribute('date')); + $this->assertSame('2000-06-12T14:12:55.000+00:00', $doc->getAttribute('date')); } public function testUpdateAttributeRename(): void @@ -665,7 +665,7 @@ public function testUpdateAttributeRename(): void $database->createCollection('rename_test'); - $this->assertEquals(true, $database->createAttribute('rename_test', 'rename_me', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('rename_test', 'rename_me', Database::VAR_STRING, 128, true)); $doc = $database->createDocument('rename_test', new Document([ '$permissions' => [ @@ -677,7 +677,7 @@ public function testUpdateAttributeRename(): void 'rename_me' => 'string' ])); - $this->assertEquals('string', $doc->getAttribute('rename_me')); + $this->assertSame('string', $doc->getAttribute('rename_me')); // Create an index to check later $database->createIndex('rename_test', 'renameIndexes', Database::INDEX_KEY, ['rename_me'], [], [Database::ORDER_DESC, Database::ORDER_DESC]); @@ -691,7 +691,7 @@ public function testUpdateAttributeRename(): void $doc = $database->getDocument('rename_test', $doc->getId()); // Check the attribute was correctly renamed - $this->assertEquals('string', $doc->getAttribute('renamed')); + $this->assertSame('string', $doc->getAttribute('renamed')); $this->assertArrayNotHasKey('rename_me', $doc); // Check we can update the document with the new key @@ -699,13 +699,13 @@ public function testUpdateAttributeRename(): void $database->updateDocument('rename_test', $doc->getId(), $doc); $doc = $database->getDocument('rename_test', $doc->getId()); - $this->assertEquals('string2', $doc->getAttribute('renamed')); + $this->assertSame('string2', $doc->getAttribute('renamed')); // Check collection $collection = $database->getCollection('rename_test'); - $this->assertEquals('renamed', $collection->getAttribute('attributes')[0]['key']); - $this->assertEquals('renamed', $collection->getAttribute('attributes')[0]['$id']); - $this->assertEquals('renamed', $collection->getAttribute('indexes')[0]['attributes'][0]); + $this->assertSame('renamed', $collection->getAttribute('attributes')[0]['key']); + $this->assertSame('renamed', $collection->getAttribute('attributes')[0]['$id']); + $this->assertSame('renamed', $collection->getAttribute('indexes')[0]['attributes'][0]); $supportsIdenticalIndexes = $database->getAdapter()->getSupportForIdenticalIndexes(); @@ -731,24 +731,24 @@ public function testUpdateAttributeRename(): void $collection = $database->getCollection('rename_test'); - $this->assertEquals('renamed', $collection->getAttribute('attributes')[0]['key']); - $this->assertEquals('renamed', $collection->getAttribute('attributes')[0]['$id']); - $this->assertEquals('renamed', $collection->getAttribute('indexes')[0]['attributes'][0]); + $this->assertSame('renamed', $collection->getAttribute('attributes')[0]['key']); + $this->assertSame('renamed', $collection->getAttribute('attributes')[0]['$id']); + $this->assertSame('renamed', $collection->getAttribute('indexes')[0]['attributes'][0]); $doc = $database->getDocument('rename_test', $doc->getId()); - $this->assertEquals('string2', $doc->getAttribute('renamed')); + $this->assertSame('string2', $doc->getAttribute('renamed')); $this->assertArrayNotHasKey('rename_me', $doc->getAttributes()); // Check the metadata was correctly updated $attribute = $collection->getAttribute('attributes')[0]; - $this->assertEquals('renamed', $attribute['key']); - $this->assertEquals('renamed', $attribute['$id']); + $this->assertSame('renamed', $attribute['key']); + $this->assertSame('renamed', $attribute['$id']); // Check the indexes were updated $index = $collection->getAttribute('indexes')[0]; - $this->assertEquals('renamed', $index->getAttribute('attributes')[0]); - $this->assertEquals(1, count($collection->getAttribute('indexes'))); + $this->assertSame('renamed', $index->getAttribute('attributes')[0]); + $this->assertSame(1, count($collection->getAttribute('indexes'))); // Try and create new document with new key $doc = $database->createDocument('rename_test', new Document([ @@ -761,7 +761,7 @@ public function testUpdateAttributeRename(): void 'renamed' => 'string' ])); - $this->assertEquals('string', $doc->getAttribute('renamed')); + $this->assertSame('string', $doc->getAttribute('renamed')); // Make sure we can't create a new attribute with the old key try { @@ -788,7 +788,7 @@ public function testUpdateAttributeRename(): void $doc = $database->getDocument('rename_test', $doc->getId()); - $this->assertEquals('string', $doc->getAttribute('renamed-test')); + $this->assertSame('string', $doc->getAttribute('renamed-test')); $this->assertArrayNotHasKey('renamed', $doc->getAttributes()); } @@ -832,7 +832,7 @@ public function testWidthLimit(): void $collection = $database->createCollection('width_limit'); $init = $database->getAdapter()->getAttributeWidth($collection); - $this->assertEquals(1067, $init); + $this->assertSame(1067, $init); $attribute = new Document([ '$id' => ID::custom('varchar_100'), @@ -845,7 +845,7 @@ public function testWidthLimit(): void 'filters' => [], ]); $res = $database->getAdapter()->getAttributeWidth($collection->setAttribute('attributes', [$attribute])); - $this->assertEquals(401, $res - $init); // 100 * 4 + 1 (length) + $this->assertSame(401, $res - $init); // 100 * 4 + 1 (length) $attribute = new Document([ '$id' => ID::custom('json'), @@ -858,7 +858,7 @@ public function testWidthLimit(): void 'filters' => [], ]); $res = $database->getAdapter()->getAttributeWidth($collection->setAttribute('attributes', [$attribute])); - $this->assertEquals(20, $res - $init); // Pointer of Json / Longtext (mariaDB) + $this->assertSame(20, $res - $init); // Pointer of Json / Longtext (mariaDB) $attribute = new Document([ '$id' => ID::custom('text'), @@ -871,7 +871,7 @@ public function testWidthLimit(): void 'filters' => [], ]); $res = $database->getAdapter()->getAttributeWidth($collection->setAttribute('attributes', [$attribute])); - $this->assertEquals(20, $res - $init); + $this->assertSame(20, $res - $init); $attribute = new Document([ '$id' => ID::custom('bigint'), @@ -884,7 +884,7 @@ public function testWidthLimit(): void 'filters' => [], ]); $res = $database->getAdapter()->getAttributeWidth($collection->setAttribute('attributes', [$attribute])); - $this->assertEquals(8, $res - $init); + $this->assertSame(8, $res - $init); $attribute = new Document([ '$id' => ID::custom('date'), @@ -897,7 +897,7 @@ public function testWidthLimit(): void 'filters' => [], ]); $res = $database->getAdapter()->getAttributeWidth($collection->setAttribute('attributes', [$attribute])); - $this->assertEquals(7, $res - $init); + $this->assertSame(7, $res - $init); } public function testExceptionAttributeLimit(): void @@ -932,7 +932,7 @@ public function testExceptionAttributeLimit(): void $this->fail('Failed to throw exception'); } catch (\Throwable $e) { $this->assertInstanceOf(LimitException::class, $e); - $this->assertEquals('Attribute limit of 1017 exceeded. Cannot create collection.', $e->getMessage()); + $this->assertSame('Attribute limit of 1017 exceeded. Cannot create collection.', $e->getMessage()); } /** @@ -959,7 +959,7 @@ public function testExceptionAttributeLimit(): void $this->fail('Failed to throw exception'); } catch (\Throwable $e) { $this->assertInstanceOf(LimitException::class, $e); - $this->assertEquals('Column limit reached. Cannot create new attribute.', $e->getMessage()); + $this->assertSame('Column limit reached. Cannot create new attribute.', $e->getMessage()); } try { @@ -967,7 +967,7 @@ public function testExceptionAttributeLimit(): void $this->fail('Failed to throw exception'); } catch (\Throwable $e) { $this->assertInstanceOf(LimitException::class, $e); - $this->assertEquals('Column limit reached. Cannot create new attribute.', $e->getMessage()); + $this->assertSame('Column limit reached. Cannot create new attribute.', $e->getMessage()); } } @@ -1010,7 +1010,7 @@ public function testExceptionWidthLimit(): void $this->fail('Failed to throw exception'); } catch (\Throwable $e) { $this->assertInstanceOf(LimitException::class, $e); - $this->assertEquals('Document size limit of 65535 exceeded. Cannot create collection.', $e->getMessage()); + $this->assertSame('Document size limit of 65535 exceeded. Cannot create collection.', $e->getMessage()); } /** @@ -1037,7 +1037,7 @@ public function testExceptionWidthLimit(): void $this->fail('Failed to throw exception'); } catch (\Exception $e) { $this->assertInstanceOf(LimitException::class, $e); - $this->assertEquals('Row width limit reached. Cannot create new attribute.', $e->getMessage()); + $this->assertSame('Row width limit reached. Cannot create new attribute.', $e->getMessage()); } try { @@ -1045,7 +1045,7 @@ public function testExceptionWidthLimit(): void $this->fail('Failed to throw exception'); } catch (\Throwable $e) { $this->assertInstanceOf(LimitException::class, $e); - $this->assertEquals('Row width limit reached. Cannot create new attribute.', $e->getMessage()); + $this->assertSame('Row width limit reached. Cannot create new attribute.', $e->getMessage()); } } @@ -1061,7 +1061,7 @@ public function testUpdateAttributeSize(): void $database->createCollection('resize_test'); - $this->assertEquals(true, $database->createAttribute('resize_test', 'resize_me', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('resize_test', 'resize_me', Database::VAR_STRING, 128, true)); $document = $database->createDocument('resize_test', new Document([ '$id' => ID::unique(), '$permissions' => [ @@ -1108,8 +1108,8 @@ public function testUpdateAttributeSize(): void if ($database->getAdapter()->getMaxIndexLength() > 0) { $length = intval($database->getAdapter()->getMaxIndexLength() / 2); - $this->assertEquals(true, $database->createAttribute('resize_test', 'attr1', Database::VAR_STRING, $length, true)); - $this->assertEquals(true, $database->createAttribute('resize_test', 'attr2', Database::VAR_STRING, $length, true)); + $this->assertSame(true, $database->createAttribute('resize_test', 'attr1', Database::VAR_STRING, $length, true)); + $this->assertSame(true, $database->createAttribute('resize_test', 'attr2', Database::VAR_STRING, $length, true)); /** * No index length provided, we are able to validate @@ -1120,7 +1120,7 @@ public function testUpdateAttributeSize(): void $database->updateAttribute('resize_test', 'attr1', Database::VAR_STRING, 5000); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); + $this->assertSame('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); } $database->deleteIndex('resize_test', 'index1'); @@ -1133,14 +1133,14 @@ public function testUpdateAttributeSize(): void $collection = $database->getCollection('resize_test'); $indexes = $collection->getAttribute('indexes', []); - $this->assertEquals(null, $indexes[0]['lengths'][0]); - $this->assertEquals(null, $indexes[0]['lengths'][1]); + $this->assertSame(null, $indexes[0]['lengths'][0]); + $this->assertSame(null, $indexes[0]['lengths'][1]); try { $database->updateAttribute('resize_test', 'attr1', Database::VAR_STRING, 5000); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); + $this->assertSame('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); } $database->deleteIndex('resize_test', 'index1'); @@ -1153,8 +1153,8 @@ public function testUpdateAttributeSize(): void $collection = $database->getCollection('resize_test'); $indexes = $collection->getAttribute('indexes', []); - $this->assertEquals(50, $indexes[0]['lengths'][0]); - $this->assertEquals(50, $indexes[0]['lengths'][1]); + $this->assertSame(50, $indexes[0]['lengths'][0]); + $this->assertSame(50, $indexes[0]['lengths'][1]); $database->updateAttribute('resize_test', 'attr1', Database::VAR_STRING, 5000); } @@ -1223,8 +1223,8 @@ public function updateStringAttributeSize(int $size, Document $document): Docume $database->updateDocument('resize_test', $document->getId(), $document); $checkDoc = $database->getDocument('resize_test', $document->getId()); - $this->assertEquals($document->getAttribute('resize_me'), $checkDoc->getAttribute('resize_me')); - $this->assertEquals($size, strlen($checkDoc->getAttribute('resize_me'))); + $this->assertSame($document->getAttribute('resize_me'), $checkDoc->getAttribute('resize_me')); + $this->assertSame($size, strlen($checkDoc->getAttribute('resize_me'))); return $checkDoc; } @@ -1237,10 +1237,10 @@ public function testIndexCaseInsensitivity(): void /** @var Database $database */ $database = $this->getDatabase(); - $this->assertEquals(true, $database->createIndex('attributes', 'key_caseSensitive', Database::INDEX_KEY, ['caseSensitive'], [128])); + $this->assertSame(true, $database->createIndex('attributes', 'key_caseSensitive', Database::INDEX_KEY, ['caseSensitive'], [128])); try { - $this->assertEquals(true, $database->createIndex('attributes', 'key_CaseSensitive', Database::INDEX_KEY, ['caseSensitive'], [128])); + $this->assertSame(true, $database->createIndex('attributes', 'key_CaseSensitive', Database::INDEX_KEY, ['caseSensitive'], [128])); } catch (Throwable $e) { self::assertTrue($e instanceof DuplicateException); } @@ -1257,7 +1257,7 @@ public function testCleanupAttributeTests(): void $database = $this->getDatabase(); $database->deleteCollection('attributes'); - $this->assertEquals(1, 1); + $this->assertSame(1, 1); } /** @@ -1281,7 +1281,7 @@ public function testArrayAttribute(): void Permission::create(Role::any()), ]); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'booleans', Database::VAR_BOOLEAN, @@ -1290,7 +1290,7 @@ public function testArrayAttribute(): void array: true )); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'names', Database::VAR_STRING, @@ -1299,7 +1299,7 @@ public function testArrayAttribute(): void array: true )); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'cards', Database::VAR_STRING, @@ -1308,7 +1308,7 @@ public function testArrayAttribute(): void array: true )); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'numbers', Database::VAR_INTEGER, @@ -1317,7 +1317,7 @@ public function testArrayAttribute(): void array: true )); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'age', Database::VAR_INTEGER, @@ -1326,7 +1326,7 @@ public function testArrayAttribute(): void signed: false )); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'tv_show', Database::VAR_STRING, @@ -1335,7 +1335,7 @@ public function testArrayAttribute(): void signed: false, )); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'short', Database::VAR_STRING, @@ -1345,7 +1345,7 @@ public function testArrayAttribute(): void array: true )); - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'pref', Database::VAR_STRING, @@ -1360,7 +1360,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals('Invalid document structure: Missing required attribute "booleans"', $e->getMessage()); + $this->assertSame('Invalid document structure: Missing required attribute "booleans"', $e->getMessage()); } } @@ -1368,12 +1368,12 @@ public function testArrayAttribute(): void $doc = $database->getCollection($collection); $attribute = $doc->getAttribute('attributes')[0]; - $this->assertEquals('boolean', $attribute['type']); - $this->assertEquals(true, $attribute['signed']); - $this->assertEquals(0, $attribute['size']); - $this->assertEquals(null, $attribute['default']); - $this->assertEquals(true, $attribute['array']); - $this->assertEquals(false, $attribute['required']); + $this->assertSame('boolean', $attribute['type']); + $this->assertSame(true, $attribute['signed']); + $this->assertSame(0, $attribute['size']); + $this->assertSame(null, $attribute['default']); + $this->assertSame(true, $attribute['array']); + $this->assertSame(false, $attribute['required']); try { $database->createDocument($collection, new Document([ @@ -1382,7 +1382,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals('Invalid document structure: Attribute "short[\'0\']" has invalid type. Value must be a valid string and no longer than 5 chars', $e->getMessage()); + $this->assertSame('Invalid document structure: Attribute "short[\'0\']" has invalid type. Value must be a valid string and no longer than 5 chars', $e->getMessage()); } } @@ -1393,7 +1393,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals('Invalid document structure: Attribute "names[\'1\']" has invalid type. Value must be a valid string and no longer than 255 chars', $e->getMessage()); + $this->assertSame('Invalid document structure: Attribute "names[\'1\']" has invalid type. Value must be a valid string and no longer than 255 chars', $e->getMessage()); } } @@ -1404,7 +1404,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals('Invalid document structure: Attribute "age" has invalid type. Value must be a valid integer', $e->getMessage()); + $this->assertSame('Invalid document structure: Attribute "age" has invalid type. Value must be a valid integer', $e->getMessage()); } } @@ -1415,7 +1415,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals('Invalid document structure: Attribute "age" has invalid type. Value must be a valid range between 0 and 2,147,483,647', $e->getMessage()); + $this->assertSame('Invalid document structure: Attribute "age" has invalid type. Value must be a valid range between 0 and 2,147,483,647', $e->getMessage()); } } @@ -1437,9 +1437,9 @@ public function testArrayAttribute(): void $document = $database->getDocument($collection, 'id1'); - $this->assertEquals(false, $document->getAttribute('booleans')[0]); - $this->assertEquals('Antony', $document->getAttribute('names')[1]); - $this->assertEquals(100, $document->getAttribute('numbers')[1]); + $this->assertSame(false, $document->getAttribute('booleans')[0]); + $this->assertSame('Antony', $document->getAttribute('names')[1]); + $this->assertSame(100, $document->getAttribute('numbers')[1]); if ($database->getAdapter()->getSupportForIndexArray()) { /** @@ -1457,7 +1457,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { $this->assertInstanceOf(DependencyException::class, $e); - $this->assertEquals("Attribute can't be deleted or renamed because it is used in an index", $e->getMessage()); + $this->assertSame("Attribute can't be deleted or renamed because it is used in an index", $e->getMessage()); } /** @@ -1468,7 +1468,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { $this->assertInstanceOf(DependencyException::class, $e); - $this->assertEquals("Attribute can't be deleted or renamed because it is used in an index", $e->getMessage()); + $this->assertSame("Attribute can't be deleted or renamed because it is used in an index", $e->getMessage()); } /** @@ -1479,7 +1479,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { $this->assertInstanceOf(DependencyException::class, $e); - $this->assertEquals("Attribute can't be deleted or renamed because it is used in an index", $e->getMessage()); + $this->assertSame("Attribute can't be deleted or renamed because it is used in an index", $e->getMessage()); } } else { @@ -1495,9 +1495,9 @@ public function testArrayAttribute(): void } } catch (Throwable $e) { if ($database->getAdapter()->getSupportForFulltextIndex()) { - $this->assertEquals('"Fulltext" index is forbidden on array attributes', $e->getMessage()); + $this->assertSame('"Fulltext" index is forbidden on array attributes', $e->getMessage()); } else { - $this->assertEquals('Fulltext index is not supported', $e->getMessage()); + $this->assertSame('Fulltext index is not supported', $e->getMessage()); } } @@ -1508,14 +1508,14 @@ public function testArrayAttribute(): void } } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals('An index may only contain one array attribute', $e->getMessage()); + $this->assertSame('An index may only contain one array attribute', $e->getMessage()); } else { - $this->assertEquals('Index already exists', $e->getMessage()); + $this->assertSame('Index already exists', $e->getMessage()); } } } - $this->assertEquals(true, $database->createAttribute( + $this->assertSame(true, $database->createAttribute( $collection, 'long_size', Database::VAR_STRING, @@ -1535,7 +1535,7 @@ public function testArrayAttribute(): void $database->createIndex($collection, 'indx_numbers', Database::INDEX_KEY, ['tv_show', 'numbers'], [], []); // [700, 255] $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Index length is longer than the maximum: ' . $database->getAdapter()->getMaxIndexLength(), $e->getMessage()); + $this->assertSame('Index length is longer than the maximum: ' . $database->getAdapter()->getMaxIndexLength(), $e->getMessage()); } } @@ -1545,7 +1545,7 @@ public function testArrayAttribute(): void $this->fail('Failed to throw exception'); } } catch (Throwable $e) { - $this->assertEquals('Cannot set a length on "integer" attributes', $e->getMessage()); + $this->assertSame('Cannot set a length on "integer" attributes', $e->getMessage()); } $this->assertTrue($database->createIndex($collection, 'indx6', Database::INDEX_KEY, ['age', 'names'], [null, 999], [])); @@ -1559,7 +1559,7 @@ public function testArrayAttribute(): void ]); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Invalid query: Cannot query equal on attribute "names" because it is an array.', $e->getMessage()); + $this->assertSame('Invalid query: Cannot query equal on attribute "names" because it is an array.', $e->getMessage()); } try { @@ -1568,7 +1568,7 @@ public function testArrayAttribute(): void ]); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Invalid query: Cannot query contains on attribute "age" because it is not an array, string, or object.', $e->getMessage()); + $this->assertSame('Invalid query: Cannot query contains on attribute "age" because it is not an array, string, or object.', $e->getMessage()); } $documents = $database->find($collection, [ @@ -1611,8 +1611,8 @@ public function testCreateDatetime(): void $database->createCollection('datetime'); if ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals(true, $database->createAttribute('datetime', 'date', Database::VAR_DATETIME, 0, true, null, true, false, null, [], ['datetime'])); - $this->assertEquals(true, $database->createAttribute('datetime', 'date2', Database::VAR_DATETIME, 0, false, null, true, false, null, [], ['datetime'])); + $this->assertSame(true, $database->createAttribute('datetime', 'date', Database::VAR_DATETIME, 0, true, null, true, false, null, [], ['datetime'])); + $this->assertSame(true, $database->createAttribute('datetime', 'date2', Database::VAR_DATETIME, 0, false, null, true, false, null, [], ['datetime'])); } try { @@ -1639,10 +1639,10 @@ public function testCreateDatetime(): void 'date' => DateTime::now(), ])); - $this->assertEquals(29, strlen($doc->getCreatedAt())); - $this->assertEquals(29, strlen($doc->getUpdatedAt())); - $this->assertEquals('+00:00', substr($doc->getCreatedAt(), -6)); - $this->assertEquals('+00:00', substr($doc->getUpdatedAt(), -6)); + $this->assertSame(29, strlen($doc->getCreatedAt())); + $this->assertSame(29, strlen($doc->getUpdatedAt())); + $this->assertSame('+00:00', substr($doc->getCreatedAt(), -6)); + $this->assertSame('+00:00', substr($doc->getUpdatedAt(), -6)); $this->assertGreaterThan('2020-08-16T19:30:08.363+00:00', $doc->getCreatedAt()); $this->assertGreaterThan('2020-08-16T19:30:08.363+00:00', $doc->getUpdatedAt()); @@ -1651,15 +1651,15 @@ public function testCreateDatetime(): void $min = $database->getAdapter()->getMinDateTime(); $max = $database->getAdapter()->getMaxDateTime(); $dateValidator = new DatetimeValidator($min, $max); - $this->assertEquals(null, $document->getAttribute('date2')); - $this->assertEquals(true, $dateValidator->isValid($document->getAttribute('date'))); - $this->assertEquals(false, $dateValidator->isValid($document->getAttribute('date2'))); + $this->assertSame(null, $document->getAttribute('date2')); + $this->assertSame(true, $dateValidator->isValid($document->getAttribute('date'))); + $this->assertSame(false, $dateValidator->isValid($document->getAttribute('date2'))); $documents = $database->find('datetime', [ Query::greaterThan('date', '1975-12-06 10:00:00+01:00'), Query::lessThan('date', '2030-12-06 10:00:00-01:00'), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); $documents = $database->find('datetime', [ Query::greaterThan('$createdAt', '1975-12-06 11:00:00.000'), @@ -1707,7 +1707,7 @@ public function testCreateDatetime(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { $this->assertTrue($e instanceof QueryException); - $this->assertEquals('Invalid query: Query value is invalid for attribute "$createdAt"', $e->getMessage()); + $this->assertSame('Invalid query: Query value is invalid for attribute "$createdAt"', $e->getMessage()); } try { @@ -1719,7 +1719,7 @@ public function testCreateDatetime(): void } } catch (Throwable $e) { $this->assertTrue($e instanceof QueryException); - $this->assertEquals('Invalid query: Query value is invalid for attribute "date"', $e->getMessage()); + $this->assertSame('Invalid query: Query value is invalid for attribute "date"', $e->getMessage()); } } @@ -1763,11 +1763,11 @@ public function testCreateDatetimeAddingAutoFilter(): void $database->createAttribute('datetime_auto', 'date_auto', Database::VAR_DATETIME, 0, false, filters:['json']); $collection = $database->getCollection('datetime_auto_filter'); $attribute = $collection->getAttribute('attributes')[0]; - $this->assertEquals([Database::VAR_DATETIME,'json'], $attribute['filters']); + $this->assertSame([Database::VAR_DATETIME,'json'], $attribute['filters']); $database->updateAttribute('datetime_auto', 'date_auto', Database::VAR_DATETIME, 0, false, filters:[]); $collection = $database->getCollection('datetime_auto_filter'); $attribute = $collection->getAttribute('attributes')[0]; - $this->assertEquals([Database::VAR_DATETIME,'json'], $attribute['filters']); + $this->assertSame([Database::VAR_DATETIME,'json'], $attribute['filters']); $database->deleteCollection('datetime_auto_filter'); } /** @@ -1780,7 +1780,7 @@ public function testUnknownFormat(): void $database = $this->getDatabase(); $this->expectException(\Exception::class); - $this->assertEquals(false, $database->createAttribute('attributes', 'bad_format', Database::VAR_STRING, 256, true, null, true, false, 'url')); + $this->assertSame(false, $database->createAttribute('attributes', 'bad_format', Database::VAR_STRING, 256, true, null, true, false, 'url')); } @@ -2134,16 +2134,16 @@ public function testCreateAttributesSuccessMultiple(): void $collection = $database->getCollection(__FUNCTION__); $attrs = $collection->getAttribute('attributes'); $this->assertCount(2, $attrs); - $this->assertEquals('a', $attrs[0]['$id']); - $this->assertEquals('b', $attrs[1]['$id']); + $this->assertSame('a', $attrs[0]['$id']); + $this->assertSame('b', $attrs[1]['$id']); $doc = $database->createDocument(__FUNCTION__, new Document([ 'a' => 'foo', 'b' => 123, ])); - $this->assertEquals('foo', $doc->getAttribute('a')); - $this->assertEquals(123, $doc->getAttribute('b')); + $this->assertSame('foo', $doc->getAttribute('a')); + $this->assertSame(123, $doc->getAttribute('b')); } public function testCreateAttributesDelete(): void @@ -2179,14 +2179,14 @@ public function testCreateAttributesDelete(): void $collection = $database->getCollection(__FUNCTION__); $attrs = $collection->getAttribute('attributes'); $this->assertCount(2, $attrs); - $this->assertEquals('a', $attrs[0]['$id']); - $this->assertEquals('b', $attrs[1]['$id']); + $this->assertSame('a', $attrs[0]['$id']); + $this->assertSame('b', $attrs[1]['$id']); $database->deleteAttribute(__FUNCTION__, 'a'); $collection = $database->getCollection(__FUNCTION__); $attrs = $collection->getAttribute('attributes'); $this->assertCount(1, $attrs); - $this->assertEquals('b', $attrs[0]['$id']); + $this->assertSame('b', $attrs[0]['$id']); } } diff --git a/tests/e2e/Adapter/Scopes/CollectionTests.php b/tests/e2e/Adapter/Scopes/CollectionTests.php index ce809f426..55f976757 100644 --- a/tests/e2e/Adapter/Scopes/CollectionTests.php +++ b/tests/e2e/Adapter/Scopes/CollectionTests.php @@ -29,10 +29,10 @@ public function testCreateExistsDelete(): void return; } - $this->assertEquals(true, $database->exists($this->testDatabase)); - $this->assertEquals(true, $database->delete($this->testDatabase)); - $this->assertEquals(false, $database->exists($this->testDatabase)); - $this->assertEquals(true, $database->create()); + $this->assertSame(true, $database->exists($this->testDatabase)); + $this->assertSame(true, $database->delete($this->testDatabase)); + $this->assertSame(false, $database->exists($this->testDatabase)); + $this->assertSame(true, $database->create()); } /** @@ -48,7 +48,7 @@ public function testCreateListExistsDeleteCollection(): void Permission::read(Role::any()), ])); $this->assertCount(1, $database->listCollections()); - $this->assertEquals(true, $database->exists($this->testDatabase, 'actors')); + $this->assertSame(true, $database->exists($this->testDatabase, 'actors')); // Collection names should not be unique $this->assertInstanceOf('Utopia\Database\Document', $database->createCollection('actors2', permissions: [ @@ -56,7 +56,7 @@ public function testCreateListExistsDeleteCollection(): void Permission::read(Role::any()), ])); $this->assertCount(2, $database->listCollections()); - $this->assertEquals(true, $database->exists($this->testDatabase, 'actors2')); + $this->assertSame(true, $database->exists($this->testDatabase, 'actors2')); $collection = $database->getCollection('actors2'); $collection->setAttribute('name', 'actors'); // change name to one that exists $this->assertInstanceOf('Utopia\Database\Document', $database->updateDocument( @@ -64,13 +64,13 @@ public function testCreateListExistsDeleteCollection(): void $collection->getId(), $collection )); - $this->assertEquals(true, $database->deleteCollection('actors2')); // Delete collection when finished + $this->assertSame(true, $database->deleteCollection('actors2')); // Delete collection when finished $this->assertCount(1, $database->listCollections()); - $this->assertEquals(false, $database->getCollection('actors')->isEmpty()); - $this->assertEquals(true, $database->deleteCollection('actors')); - $this->assertEquals(true, $database->getCollection('actors')->isEmpty()); - $this->assertEquals(false, $database->exists($this->testDatabase, 'actors')); + $this->assertSame(false, $database->getCollection('actors')->isEmpty()); + $this->assertSame(true, $database->deleteCollection('actors')); + $this->assertSame(true, $database->getCollection('actors')->isEmpty()); + $this->assertSame(false, $database->exists($this->testDatabase, 'actors')); } public function testCreateCollectionWithSchema(): void @@ -150,30 +150,30 @@ public function testCreateCollectionWithSchema(): void $collection = $database->createCollection('withSchema', $attributes, $indexes); - $this->assertEquals(false, $collection->isEmpty()); - $this->assertEquals('withSchema', $collection->getId()); + $this->assertSame(false, $collection->isEmpty()); + $this->assertSame('withSchema', $collection->getId()); $this->assertIsArray($collection->getAttribute('attributes')); $this->assertCount(4, $collection->getAttribute('attributes')); - $this->assertEquals('attribute1', $collection->getAttribute('attributes')[0]['$id']); - $this->assertEquals(Database::VAR_STRING, $collection->getAttribute('attributes')[0]['type']); - $this->assertEquals('attribute2', $collection->getAttribute('attributes')[1]['$id']); - $this->assertEquals(Database::VAR_INTEGER, $collection->getAttribute('attributes')[1]['type']); - $this->assertEquals('attribute3', $collection->getAttribute('attributes')[2]['$id']); - $this->assertEquals(Database::VAR_BOOLEAN, $collection->getAttribute('attributes')[2]['type']); - $this->assertEquals('attribute4', $collection->getAttribute('attributes')[3]['$id']); - $this->assertEquals(Database::VAR_ID, $collection->getAttribute('attributes')[3]['type']); + $this->assertSame('attribute1', $collection->getAttribute('attributes')[0]['$id']); + $this->assertSame(Database::VAR_STRING, $collection->getAttribute('attributes')[0]['type']); + $this->assertSame('attribute2', $collection->getAttribute('attributes')[1]['$id']); + $this->assertSame(Database::VAR_INTEGER, $collection->getAttribute('attributes')[1]['type']); + $this->assertSame('attribute3', $collection->getAttribute('attributes')[2]['$id']); + $this->assertSame(Database::VAR_BOOLEAN, $collection->getAttribute('attributes')[2]['type']); + $this->assertSame('attribute4', $collection->getAttribute('attributes')[3]['$id']); + $this->assertSame(Database::VAR_ID, $collection->getAttribute('attributes')[3]['type']); $this->assertIsArray($collection->getAttribute('indexes')); $this->assertCount(4, $collection->getAttribute('indexes')); - $this->assertEquals('index1', $collection->getAttribute('indexes')[0]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[0]['type']); - $this->assertEquals('index2', $collection->getAttribute('indexes')[1]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[1]['type']); - $this->assertEquals('index3', $collection->getAttribute('indexes')[2]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[2]['type']); - $this->assertEquals('index4', $collection->getAttribute('indexes')[3]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[3]['type']); + $this->assertSame('index1', $collection->getAttribute('indexes')[0]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[0]['type']); + $this->assertSame('index2', $collection->getAttribute('indexes')[1]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[1]['type']); + $this->assertSame('index3', $collection->getAttribute('indexes')[2]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[2]['type']); + $this->assertSame('index4', $collection->getAttribute('indexes')[3]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[3]['type']); $database->deleteCollection('withSchema'); @@ -199,16 +199,16 @@ public function testCreateCollectionWithSchema(): void ]) ]); - $this->assertEquals(false, $collection2->isEmpty()); - $this->assertEquals('with-dash', $collection2->getId()); + $this->assertSame(false, $collection2->isEmpty()); + $this->assertSame('with-dash', $collection2->getId()); $this->assertIsArray($collection2->getAttribute('attributes')); $this->assertCount(1, $collection2->getAttribute('attributes')); - $this->assertEquals('attribute-one', $collection2->getAttribute('attributes')[0]['$id']); - $this->assertEquals(Database::VAR_STRING, $collection2->getAttribute('attributes')[0]['type']); + $this->assertSame('attribute-one', $collection2->getAttribute('attributes')[0]['$id']); + $this->assertSame(Database::VAR_STRING, $collection2->getAttribute('attributes')[0]['type']); $this->assertIsArray($collection2->getAttribute('indexes')); $this->assertCount(1, $collection2->getAttribute('indexes')); - $this->assertEquals('index-one', $collection2->getAttribute('indexes')[0]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection2->getAttribute('indexes')[0]['type']); + $this->assertSame('index-one', $collection2->getAttribute('indexes')[0]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection2->getAttribute('indexes')[0]['type']); $database->deleteCollection('with-dash'); } @@ -313,30 +313,30 @@ public function testCreateCollectionValidator(): void foreach ($collections as $id) { $collection = $database->createCollection($id, $attributes, $indexes); - $this->assertEquals(false, $collection->isEmpty()); - $this->assertEquals($id, $collection->getId()); + $this->assertSame(false, $collection->isEmpty()); + $this->assertSame($id, $collection->getId()); $this->assertIsArray($collection->getAttribute('attributes')); $this->assertCount(5, $collection->getAttribute('attributes')); - $this->assertEquals('attribute1', $collection->getAttribute('attributes')[0]['$id']); - $this->assertEquals(Database::VAR_STRING, $collection->getAttribute('attributes')[0]['type']); - $this->assertEquals('attribute-2', $collection->getAttribute('attributes')[1]['$id']); - $this->assertEquals(Database::VAR_INTEGER, $collection->getAttribute('attributes')[1]['type']); - $this->assertEquals('attribute_3', $collection->getAttribute('attributes')[2]['$id']); - $this->assertEquals(Database::VAR_BOOLEAN, $collection->getAttribute('attributes')[2]['type']); - $this->assertEquals('attribute.4', $collection->getAttribute('attributes')[3]['$id']); - $this->assertEquals(Database::VAR_BOOLEAN, $collection->getAttribute('attributes')[3]['type']); + $this->assertSame('attribute1', $collection->getAttribute('attributes')[0]['$id']); + $this->assertSame(Database::VAR_STRING, $collection->getAttribute('attributes')[0]['type']); + $this->assertSame('attribute-2', $collection->getAttribute('attributes')[1]['$id']); + $this->assertSame(Database::VAR_INTEGER, $collection->getAttribute('attributes')[1]['type']); + $this->assertSame('attribute_3', $collection->getAttribute('attributes')[2]['$id']); + $this->assertSame(Database::VAR_BOOLEAN, $collection->getAttribute('attributes')[2]['type']); + $this->assertSame('attribute.4', $collection->getAttribute('attributes')[3]['$id']); + $this->assertSame(Database::VAR_BOOLEAN, $collection->getAttribute('attributes')[3]['type']); $this->assertIsArray($collection->getAttribute('indexes')); $this->assertCount(5, $collection->getAttribute('indexes')); - $this->assertEquals('index1', $collection->getAttribute('indexes')[0]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[0]['type']); - $this->assertEquals('index-2', $collection->getAttribute('indexes')[1]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[1]['type']); - $this->assertEquals('index_3', $collection->getAttribute('indexes')[2]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[2]['type']); - $this->assertEquals('index.4', $collection->getAttribute('indexes')[3]['$id']); - $this->assertEquals(Database::INDEX_KEY, $collection->getAttribute('indexes')[3]['type']); + $this->assertSame('index1', $collection->getAttribute('indexes')[0]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[0]['type']); + $this->assertSame('index-2', $collection->getAttribute('indexes')[1]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[1]['type']); + $this->assertSame('index_3', $collection->getAttribute('indexes')[2]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[2]['type']); + $this->assertSame('index.4', $collection->getAttribute('indexes')[3]['$id']); + $this->assertSame(Database::INDEX_KEY, $collection->getAttribute('indexes')[3]['type']); $database->deleteCollection($id); } @@ -352,7 +352,7 @@ public function testCollectionNotFound(): void $database->find('not_exist', []); $this->fail('Failed to throw Exception'); } catch (Exception $e) { - $this->assertEquals('Collection not found', $e->getMessage()); + $this->assertSame('Collection not found', $e->getMessage()); } } @@ -496,8 +496,8 @@ public function testPurgeCollectionCache(): void $database->createCollection('redis'); - $this->assertEquals(true, $database->createAttribute('redis', 'name', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('redis', 'age', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute('redis', 'name', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('redis', 'age', Database::VAR_INTEGER, 0, true)); $database->createDocument('redis', new Document([ '$id' => 'doc1', @@ -510,19 +510,19 @@ public function testPurgeCollectionCache(): void $document = $database->getDocument('redis', 'doc1'); - $this->assertEquals('Richard', $document->getAttribute('name')); - $this->assertEquals(15, $document->getAttribute('age')); + $this->assertSame('Richard', $document->getAttribute('name')); + $this->assertSame(15, $document->getAttribute('age')); - $this->assertEquals(true, $database->deleteAttribute('redis', 'age')); + $this->assertSame(true, $database->deleteAttribute('redis', 'age')); $document = $database->getDocument('redis', 'doc1'); - $this->assertEquals('Richard', $document->getAttribute('name')); + $this->assertSame('Richard', $document->getAttribute('name')); $this->assertArrayNotHasKey('age', $document); - $this->assertEquals(true, $database->createAttribute('redis', 'age', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute('redis', 'age', Database::VAR_INTEGER, 0, true)); $document = $database->getDocument('redis', 'doc1'); - $this->assertEquals('Richard', $document->getAttribute('name')); + $this->assertSame('Richard', $document->getAttribute('name')); $this->assertArrayHasKey('age', $document); } @@ -555,37 +555,37 @@ public function testSchemaAttributes(): void } $attribute = $attributes['username']; - $this->assertEquals('username', $attribute['$id']); - $this->assertEquals('varchar', $attribute['dataType']); - $this->assertEquals('varchar(128)', $attribute['columnType']); - $this->assertEquals('128', $attribute['characterMaximumLength']); - $this->assertEquals('YES', $attribute['isNullable']); + $this->assertSame('username', $attribute['$id']); + $this->assertSame('varchar', $attribute['dataType']); + $this->assertSame('varchar(128)', $attribute['columnType']); + $this->assertSame('128', $attribute['characterMaximumLength']); + $this->assertSame('YES', $attribute['isNullable']); $attribute = $attributes['story']; - $this->assertEquals('story', $attribute['$id']); - $this->assertEquals('text', $attribute['dataType']); - $this->assertEquals('text', $attribute['columnType']); - $this->assertEquals('65535', $attribute['characterMaximumLength']); + $this->assertSame('story', $attribute['$id']); + $this->assertSame('text', $attribute['dataType']); + $this->assertSame('text', $attribute['columnType']); + $this->assertSame('65535', $attribute['characterMaximumLength']); $attribute = $attributes['string_list']; - $this->assertEquals('string_list', $attribute['$id']); + $this->assertSame('string_list', $attribute['$id']); $this->assertTrue(in_array($attribute['dataType'], ['json', 'longtext'])); // mysql vs maria $this->assertTrue(in_array($attribute['columnType'], ['json', 'longtext'])); $this->assertTrue(in_array($attribute['characterMaximumLength'], [null, '4294967295'])); - $this->assertEquals('YES', $attribute['isNullable']); + $this->assertSame('YES', $attribute['isNullable']); $attribute = $attributes['dob']; - $this->assertEquals('dob', $attribute['$id']); - $this->assertEquals('datetime', $attribute['dataType']); - $this->assertEquals('datetime(3)', $attribute['columnType']); - $this->assertEquals(null, $attribute['characterMaximumLength']); - $this->assertEquals('3', $attribute['datetimePrecision']); + $this->assertSame('dob', $attribute['$id']); + $this->assertSame('datetime', $attribute['dataType']); + $this->assertSame('datetime(3)', $attribute['columnType']); + $this->assertSame(null, $attribute['characterMaximumLength']); + $this->assertSame('3', $attribute['datetimePrecision']); if ($db->getSharedTables()) { $attribute = $attributes['_tenant']; - $this->assertEquals('_tenant', $attribute['$id']); - $this->assertEquals('int', $attribute['dataType']); - $this->assertEquals('10', $attribute['numericPrecision']); + $this->assertSame('_tenant', $attribute['$id']); + $this->assertSame('int', $attribute['dataType']); + $this->assertSame('10', $attribute['numericPrecision']); $this->assertTrue(in_array($attribute['columnType'], ['int unsigned', 'int(11) unsigned'])); } } @@ -606,7 +606,7 @@ public function testRowSizeToLarge(): void $collection_1 = $database->createCollection('row_size_1'); $collection_2 = $database->createCollection('row_size_2'); - $this->assertEquals(true, $database->createAttribute($collection_1->getId(), 'attr_1', Database::VAR_STRING, 16000, true)); + $this->assertSame(true, $database->createAttribute($collection_1->getId(), 'attr_1', Database::VAR_STRING, 16000, true)); try { $database->createAttribute($collection_1->getId(), 'attr_2', Database::VAR_STRING, Database::LENGTH_KEY, true); @@ -706,17 +706,17 @@ public function testCreateCollectionWithSchemaIndexes(): void ] ); - $this->assertEquals($collection->getAttribute('indexes')[0]['attributes'][0], 'username'); - $this->assertEquals($collection->getAttribute('indexes')[0]['lengths'][0], null); + $this->assertSame($collection->getAttribute('indexes')[0]['attributes'][0], 'username'); + $this->assertSame($collection->getAttribute('indexes')[0]['lengths'][0], null); - $this->assertEquals($collection->getAttribute('indexes')[1]['attributes'][0], 'username'); - $this->assertEquals($collection->getAttribute('indexes')[1]['lengths'][0], 99); - $this->assertEquals($collection->getAttribute('indexes')[1]['orders'][0], Database::ORDER_DESC); + $this->assertSame($collection->getAttribute('indexes')[1]['attributes'][0], 'username'); + $this->assertSame($collection->getAttribute('indexes')[1]['lengths'][0], 99); + $this->assertSame($collection->getAttribute('indexes')[1]['orders'][0], Database::ORDER_DESC); if ($database->getAdapter()->getSupportForIndexArray()) { - $this->assertEquals($collection->getAttribute('indexes')[2]['attributes'][0], 'cards'); - $this->assertEquals($collection->getAttribute('indexes')[2]['lengths'][0], Database::MAX_ARRAY_INDEX_LENGTH); - $this->assertEquals($collection->getAttribute('indexes')[2]['orders'][0], null); + $this->assertSame($collection->getAttribute('indexes')[2]['attributes'][0], 'cards'); + $this->assertSame($collection->getAttribute('indexes')[2]['lengths'][0], Database::MAX_ARRAY_INDEX_LENGTH); + $this->assertSame($collection->getAttribute('indexes')[2]['orders'][0], null); } } @@ -764,14 +764,14 @@ public function testUpdateDeleteCollectionNotFound(): void $database->deleteCollection('not_found'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Collection not found', $e->getMessage()); + $this->assertSame('Collection not found', $e->getMessage()); } try { $database->updateCollection('not_found', [], true); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Collection not found', $e->getMessage()); + $this->assertSame('Collection not found', $e->getMessage()); } } @@ -818,7 +818,7 @@ public function testKeywords(): void foreach ($keywords as $keyword) { $collection = $database->createCollection($keyword, $attributes, $indexes); - $this->assertEquals($keyword, $collection->getId()); + $this->assertSame($keyword, $collection->getId()); $document = $database->createDocument($keyword, new Document([ '$permissions' => [ @@ -830,14 +830,14 @@ public function testKeywords(): void '$id' => ID::custom('helloWorld'), 'attribute1' => 'Hello World', ])); - $this->assertEquals('helloWorld', $document->getId()); + $this->assertSame('helloWorld', $document->getId()); $document = $database->getDocument($keyword, 'helloWorld'); - $this->assertEquals('helloWorld', $document->getId()); + $this->assertSame('helloWorld', $document->getId()); $documents = $database->find($keyword); $this->assertCount(1, $documents); - $this->assertEquals('helloWorld', $documents[0]->getId()); + $this->assertSame('helloWorld', $documents[0]->getId()); $collection = $database->deleteCollection($keyword); $this->assertTrue($collection); @@ -850,10 +850,10 @@ public function testKeywords(): void $collectionName = 'rk' . $keyword; // rk is shorthand for reserved-keyword. We do this since there are some limits (64 chars max) $collection = $database->createCollection($collectionName); - $this->assertEquals($collectionName, $collection->getId()); + $this->assertSame($collectionName, $collection->getId()); $attribute = $database->createAttribute($collectionName, $keyword, Database::VAR_STRING, 128, true); - $this->assertEquals(true, $attribute); + $this->assertSame(true, $attribute); $document = new Document([ '$permissions' => [ @@ -867,27 +867,27 @@ public function testKeywords(): void $document->setAttribute($keyword, 'Reserved:' . $keyword); $document = $database->createDocument($collectionName, $document); - $this->assertEquals('reservedKeyDocument', $document->getId()); - $this->assertEquals('Reserved:' . $keyword, $document->getAttribute($keyword)); + $this->assertSame('reservedKeyDocument', $document->getId()); + $this->assertSame('Reserved:' . $keyword, $document->getAttribute($keyword)); $document = $database->getDocument($collectionName, 'reservedKeyDocument'); - $this->assertEquals('reservedKeyDocument', $document->getId()); - $this->assertEquals('Reserved:' . $keyword, $document->getAttribute($keyword)); + $this->assertSame('reservedKeyDocument', $document->getId()); + $this->assertSame('Reserved:' . $keyword, $document->getAttribute($keyword)); $documents = $database->find($collectionName); $this->assertCount(1, $documents); - $this->assertEquals('reservedKeyDocument', $documents[0]->getId()); - $this->assertEquals('Reserved:' . $keyword, $documents[0]->getAttribute($keyword)); + $this->assertSame('reservedKeyDocument', $documents[0]->getId()); + $this->assertSame('Reserved:' . $keyword, $documents[0]->getAttribute($keyword)); $documents = $database->find($collectionName, [Query::equal($keyword, ["Reserved:{$keyword}"])]); $this->assertCount(1, $documents); - $this->assertEquals('reservedKeyDocument', $documents[0]->getId()); + $this->assertSame('reservedKeyDocument', $documents[0]->getId()); $documents = $database->find($collectionName, [ Query::orderDesc($keyword) ]); $this->assertCount(1, $documents); - $this->assertEquals('reservedKeyDocument', $documents[0]->getId()); + $this->assertSame('reservedKeyDocument', $documents[0]->getId()); $collection = $database->deleteCollection($collectionName); $this->assertTrue($collection); @@ -932,11 +932,11 @@ public function testMetadata(): void $database->createCollection('testers'); - $this->assertEquals(['key' => 'value'], $database->getMetadata()); + $this->assertSame(['key' => 'value'], $database->getMetadata()); $database->resetMetadata(); - $this->assertEquals([], $database->getMetadata()); + $this->assertSame([], $database->getMetadata()); } public function testDeleteCollectionDeletesRelationships(): void @@ -962,18 +962,18 @@ public function testDeleteCollectionDeletesRelationships(): void $testers = $database->getCollection('testers'); $devices = $database->getCollection('devices'); - $this->assertEquals(1, \count($testers->getAttribute('attributes'))); - $this->assertEquals(1, \count($devices->getAttribute('attributes'))); - $this->assertEquals(1, \count($devices->getAttribute('indexes'))); + $this->assertSame(1, \count($testers->getAttribute('attributes'))); + $this->assertSame(1, \count($devices->getAttribute('attributes'))); + $this->assertSame(1, \count($devices->getAttribute('indexes'))); $database->deleteCollection('testers'); $testers = $database->getCollection('testers'); $devices = $database->getCollection('devices'); - $this->assertEquals(true, $testers->isEmpty()); - $this->assertEquals(0, \count($devices->getAttribute('attributes'))); - $this->assertEquals(0, \count($devices->getAttribute('indexes'))); + $this->assertSame(true, $testers->isEmpty()); + $this->assertSame(0, \count($devices->getAttribute('attributes'))); + $this->assertSame(0, \count($devices->getAttribute('indexes'))); } @@ -1036,13 +1036,13 @@ public function testCascadeMultiDelete(): void $this->assertCount(1, $root->getAttribute('cascadeMultiDelete2')); $this->assertCount(1, $root->getAttribute('cascadeMultiDelete2')[0]->getAttribute('cascadeMultiDelete3')); - $this->assertEquals(true, $database->deleteDocument('cascadeMultiDelete1', $root->getId())); + $this->assertSame(true, $database->deleteDocument('cascadeMultiDelete1', $root->getId())); $multi2 = $database->getDocument('cascadeMultiDelete2', 'cascadeMultiDelete2'); - $this->assertEquals(true, $multi2->isEmpty()); + $this->assertSame(true, $multi2->isEmpty()); $multi3 = $database->getDocument('cascadeMultiDelete3', 'cascadeMultiDelete3'); - $this->assertEquals(true, $multi3->isEmpty()); + $this->assertSame(true, $multi3->isEmpty()); } /** @@ -1088,14 +1088,14 @@ public function testSharedTables(): void ->setNamespace('') ->create(); - $this->assertEquals(true, $database->exists('schema1')); + $this->assertSame(true, $database->exists('schema1')); $database ->setDatabase('schema2') ->setNamespace('') ->create(); - $this->assertEquals(true, $database->exists('schema2')); + $this->assertSame(true, $database->exists('schema2')); /** * Table @@ -1110,7 +1110,7 @@ public function testSharedTables(): void ->setTenant($tenant1) ->create(); - $this->assertEquals(true, $database->exists('sharedTables')); + $this->assertSame(true, $database->exists('sharedTables')); $database->createCollection('people', [ new Document([ @@ -1161,8 +1161,8 @@ public function testSharedTables(): void ])); $doc = $database->getDocument('people', $docId); - $this->assertEquals('Spiderman', $doc['name']); - $this->assertEquals($tenant1, $doc->getTenant()); + $this->assertSame('Spiderman', $doc['name']); + $this->assertSame($tenant1, $doc->getTenant()); /** * Remove Permissions @@ -1174,8 +1174,8 @@ public function testSharedTables(): void $database->updateDocument('people', $docId, $doc); $doc = $database->getDocument('people', $docId); - $this->assertEquals([Permission::read(Role::any())], $doc['$permissions']); - $this->assertEquals($tenant1, $doc->getTenant()); + $this->assertSame([Permission::read(Role::any())], $doc['$permissions']); + $this->assertSame($tenant1, $doc->getTenant()); /** * Add Permissions @@ -1188,7 +1188,7 @@ public function testSharedTables(): void $database->updateDocument('people', $docId, $doc); $doc = $database->getDocument('people', $docId); - $this->assertEquals([Permission::read(Role::any()), Permission::delete(Role::any())], $doc['$permissions']); + $this->assertSame([Permission::read(Role::any()), Permission::delete(Role::any())], $doc['$permissions']); $docs = $database->find('people'); $this->assertCount(1, $docs); @@ -1200,14 +1200,14 @@ public function testSharedTables(): void $database->getDocument('people', $docId); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Collection not found', $e->getMessage()); + $this->assertSame('Collection not found', $e->getMessage()); } try { $database->find('people'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Collection not found', $e->getMessage()); + $this->assertSame('Collection not found', $e->getMessage()); } $this->assertCount(0, $database->listCollections()); @@ -1216,9 +1216,9 @@ public function testSharedTables(): void $database->setTenant($tenant1); $doc = $database->getDocument('people', $docId); - $this->assertEquals('Spiderman', $doc['name']); + $this->assertSame('Spiderman', $doc['name']); $docs = $database->find('people'); - $this->assertEquals(1, \count($docs)); + $this->assertSame(1, \count($docs)); // Remove tenant but leave shared tables enabled $database->setTenant(null); @@ -1227,7 +1227,7 @@ public function testSharedTables(): void $database->getDocument('people', $docId); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Collection not found', $e->getMessage()); + $this->assertSame('Collection not found', $e->getMessage()); } // Reset state @@ -1311,14 +1311,14 @@ public function testSharedTablesDuplicates(): void } $collection = $database->getCollection('duplicates'); - $this->assertEquals(1, \count($collection->getAttribute('attributes'))); - $this->assertEquals(1, \count($collection->getAttribute('indexes'))); + $this->assertSame(1, \count($collection->getAttribute('attributes'))); + $this->assertSame(1, \count($collection->getAttribute('indexes'))); $database->setTenant(1); $collection = $database->getCollection('duplicates'); - $this->assertEquals(1, \count($collection->getAttribute('attributes'))); - $this->assertEquals(1, \count($collection->getAttribute('indexes'))); + $this->assertSame(1, \count($collection->getAttribute('attributes'))); + $this->assertSame(1, \count($collection->getAttribute('indexes'))); $database ->setSharedTables($sharedTables) @@ -1378,7 +1378,7 @@ public function testEvents(): void $database->on(Database::EVENT_ALL, 'test', function ($event, $data) use (&$events) { $shifted = array_shift($events); - $this->assertEquals($shifted, $event); + $this->assertSame($shifted, $event); }); if ($this->getDatabase()->getAdapter()->getSupportForSchemas()) { @@ -1487,7 +1487,7 @@ public function testCreatedAtUpdatedAtAssert(): void $database = $this->getDatabase(); $document = $database->getDocument('created_at', 'uid123'); - $this->assertEquals(true, !$document->isEmpty()); + $this->assertSame(true, !$document->isEmpty()); sleep(1); $document->setAttribute('title', 'new title'); $database->updateDocument('created_at', 'uid123', $document); diff --git a/tests/e2e/Adapter/Scopes/CustomDocumentTypeTests.php b/tests/e2e/Adapter/Scopes/CustomDocumentTypeTests.php index 9953e73e2..8fd4dba9e 100644 --- a/tests/e2e/Adapter/Scopes/CustomDocumentTypeTests.php +++ b/tests/e2e/Adapter/Scopes/CustomDocumentTypeTests.php @@ -51,7 +51,7 @@ public function testSetDocumentType(): void $database->setDocumentType('users', TestUser::class); - $this->assertEquals( + $this->assertSame( TestUser::class, $database->getDocumentType('users') ); @@ -98,7 +98,7 @@ public function testClearDocumentType(): void $database = static::getDatabase(); $database->setDocumentType('users', TestUser::class); - $this->assertEquals(TestUser::class, $database->getDocumentType('users')); + $this->assertSame(TestUser::class, $database->getDocumentType('users')); $database->clearDocumentType('users'); $this->assertNull($database->getDocumentType('users')); @@ -112,8 +112,8 @@ public function testClearAllDocumentTypes(): void $database->setDocumentType('users', TestUser::class); $database->setDocumentType('posts', TestPost::class); - $this->assertEquals(TestUser::class, $database->getDocumentType('users')); - $this->assertEquals(TestPost::class, $database->getDocumentType('posts')); + $this->assertSame(TestUser::class, $database->getDocumentType('users')); + $this->assertSame(TestPost::class, $database->getDocumentType('posts')); $database->clearAllDocumentTypes(); @@ -134,8 +134,8 @@ public function testMethodChaining(): void ->setDocumentType('users', TestUser::class) ->setDocumentType('posts', TestPost::class); - $this->assertEquals(TestUser::class, $database->getDocumentType('users')); - $this->assertEquals(TestPost::class, $database->getDocumentType('posts')); + $this->assertSame(TestUser::class, $database->getDocumentType('users')); + $this->assertSame(TestPost::class, $database->getDocumentType('posts')); // Cleanup to prevent test pollution $database->clearAllDocumentTypes(); @@ -171,15 +171,15 @@ public function testCustomDocumentTypeWithGetDocument(): void // Verify it's a TestUser instance $this->assertInstanceOf(TestUser::class, $created); - $this->assertEquals('test@example.com', $created->getEmail()); - $this->assertEquals('Test User', $created->getName()); + $this->assertSame('test@example.com', $created->getEmail()); + $this->assertSame('Test User', $created->getName()); $this->assertTrue($created->isActive()); // Get document and verify type /** @var TestUser $fetched */ $fetched = $database->getDocument('customUsers', $created->getId()); $this->assertInstanceOf(TestUser::class, $fetched); - $this->assertEquals('test@example.com', $fetched->getEmail()); + $this->assertSame('test@example.com', $fetched->getEmail()); $this->assertTrue($fetched->isActive()); // Cleanup @@ -226,8 +226,8 @@ public function testCustomDocumentTypeWithFind(): void $this->assertCount(2, $posts); $this->assertInstanceOf(TestPost::class, $posts[0]); $this->assertInstanceOf(TestPost::class, $posts[1]); - $this->assertEquals('First Post', $posts[0]->getTitle()); - $this->assertEquals('Second Post', $posts[1]->getTitle()); + $this->assertSame('First Post', $posts[0]->getTitle()); + $this->assertSame('Second Post', $posts[1]->getTitle()); // Cleanup $database->deleteCollection('customPosts'); @@ -274,8 +274,8 @@ public function testCustomDocumentTypeWithUpdateDocument(): void // Verify it's still TestUser and has updated values $this->assertInstanceOf(TestUser::class, $updated); - $this->assertEquals('updated@example.com', $updated->getEmail()); - $this->assertEquals('Updated Name', $updated->getName()); + $this->assertSame('updated@example.com', $updated->getEmail()); + $this->assertSame('Updated Name', $updated->getName()); $this->assertFalse($updated->isActive()); // Cleanup diff --git a/tests/e2e/Adapter/Scopes/DocumentTests.php b/tests/e2e/Adapter/Scopes/DocumentTests.php index d020d8fc3..e8d71e9a5 100644 --- a/tests/e2e/Adapter/Scopes/DocumentTests.php +++ b/tests/e2e/Adapter/Scopes/DocumentTests.php @@ -41,13 +41,13 @@ public function testBigintSequence(): void ], ])); - $this->assertEquals((string)$sequence, $document->getSequence()); + $this->assertSame((string)$sequence, $document->getSequence()); $document = $database->getDocument(__FUNCTION__, $document->getId()); - $this->assertEquals((string)$sequence, $document->getSequence()); + $this->assertSame((string)$sequence, $document->getSequence()); $document = $database->findOne(__FUNCTION__, [Query::equal('$sequence', [(string)$sequence])]); - $this->assertEquals((string)$sequence, $document->getSequence()); + $this->assertSame((string)$sequence, $document->getSequence()); } public function testCreateDocument(): Document @@ -57,18 +57,18 @@ public function testCreateDocument(): Document $database->createCollection('documents'); - $this->assertEquals(true, $database->createAttribute('documents', 'string', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('documents', 'integer_signed', Database::VAR_INTEGER, 0, true)); - $this->assertEquals(true, $database->createAttribute('documents', 'integer_unsigned', Database::VAR_INTEGER, 4, true, signed: false)); - $this->assertEquals(true, $database->createAttribute('documents', 'bigint_signed', Database::VAR_INTEGER, 8, true)); - $this->assertEquals(true, $database->createAttribute('documents', 'bigint_unsigned', Database::VAR_INTEGER, 9, true, signed: false)); - $this->assertEquals(true, $database->createAttribute('documents', 'float_signed', Database::VAR_FLOAT, 0, true)); - $this->assertEquals(true, $database->createAttribute('documents', 'float_unsigned', Database::VAR_FLOAT, 0, true, signed: false)); - $this->assertEquals(true, $database->createAttribute('documents', 'boolean', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('documents', 'colors', Database::VAR_STRING, 32, true, null, true, true)); - $this->assertEquals(true, $database->createAttribute('documents', 'empty', Database::VAR_STRING, 32, false, null, true, true)); - $this->assertEquals(true, $database->createAttribute('documents', 'with-dash', Database::VAR_STRING, 128, false, null)); - $this->assertEquals(true, $database->createAttribute('documents', 'id', Database::VAR_ID, 0, false, null)); + $this->assertSame(true, $database->createAttribute('documents', 'string', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('documents', 'integer_signed', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute('documents', 'integer_unsigned', Database::VAR_INTEGER, 4, true, signed: false)); + $this->assertSame(true, $database->createAttribute('documents', 'bigint_signed', Database::VAR_INTEGER, 8, true)); + $this->assertSame(true, $database->createAttribute('documents', 'bigint_unsigned', Database::VAR_INTEGER, 9, true, signed: false)); + $this->assertSame(true, $database->createAttribute('documents', 'float_signed', Database::VAR_FLOAT, 0, true)); + $this->assertSame(true, $database->createAttribute('documents', 'float_unsigned', Database::VAR_FLOAT, 0, true, signed: false)); + $this->assertSame(true, $database->createAttribute('documents', 'boolean', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('documents', 'colors', Database::VAR_STRING, 32, true, null, true, true)); + $this->assertSame(true, $database->createAttribute('documents', 'empty', Database::VAR_STRING, 32, false, null, true, true)); + $this->assertSame(true, $database->createAttribute('documents', 'with-dash', Database::VAR_STRING, 128, false, null)); + $this->assertSame(true, $database->createAttribute('documents', 'id', Database::VAR_ID, 0, false, null)); $sequence = '1000000'; if ($database->getAdapter()->getIdAttributeType() == Database::VAR_UUID7) { @@ -106,27 +106,27 @@ public function testCreateDocument(): Document $this->assertNotEmpty($document->getId()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($document->getAttribute('integer_signed')); - $this->assertEquals(-Database::MAX_INT, $document->getAttribute('integer_signed')); + $this->assertSame(-Database::MAX_INT, $document->getAttribute('integer_signed')); $this->assertIsInt($document->getAttribute('integer_unsigned')); - $this->assertEquals(Database::MAX_INT, $document->getAttribute('integer_unsigned')); + $this->assertSame(Database::MAX_INT, $document->getAttribute('integer_unsigned')); $this->assertIsInt($document->getAttribute('bigint_signed')); - $this->assertEquals(-Database::MAX_BIG_INT, $document->getAttribute('bigint_signed')); + $this->assertSame(-Database::MAX_BIG_INT, $document->getAttribute('bigint_signed')); $this->assertIsInt($document->getAttribute('bigint_signed')); - $this->assertEquals(Database::MAX_BIG_INT, $document->getAttribute('bigint_unsigned')); + $this->assertSame(Database::MAX_BIG_INT, $document->getAttribute('bigint_unsigned')); $this->assertIsFloat($document->getAttribute('float_signed')); - $this->assertEquals(-5.55, $document->getAttribute('float_signed')); + $this->assertSame(-5.55, $document->getAttribute('float_signed')); $this->assertIsFloat($document->getAttribute('float_unsigned')); - $this->assertEquals(5.55, $document->getAttribute('float_unsigned')); + $this->assertSame(5.55, $document->getAttribute('float_unsigned')); $this->assertIsBool($document->getAttribute('boolean')); - $this->assertEquals(true, $document->getAttribute('boolean')); + $this->assertSame(true, $document->getAttribute('boolean')); $this->assertIsArray($document->getAttribute('colors')); - $this->assertEquals(['pink', 'green', 'blue'], $document->getAttribute('colors')); - $this->assertEquals([], $document->getAttribute('empty')); - $this->assertEquals('Works', $document->getAttribute('with-dash')); + $this->assertSame(['pink', 'green', 'blue'], $document->getAttribute('colors')); + $this->assertSame([], $document->getAttribute('empty')); + $this->assertSame('Works', $document->getAttribute('with-dash')); $this->assertIsString($document->getAttribute('id')); - $this->assertEquals($sequence, $document->getAttribute('id')); + $this->assertSame($sequence, $document->getAttribute('id')); $sequence = '56000'; @@ -165,54 +165,54 @@ public function testCreateDocument(): Document 'with-dash' => 'Works', ])); - $this->assertEquals($sequence, $manualIdDocument->getSequence()); + $this->assertSame($sequence, $manualIdDocument->getSequence()); $this->assertNotEmpty($manualIdDocument->getId()); $this->assertIsString($manualIdDocument->getAttribute('string')); - $this->assertEquals('text📝', $manualIdDocument->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('text📝', $manualIdDocument->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($manualIdDocument->getAttribute('integer_signed')); - $this->assertEquals(-Database::MAX_INT, $manualIdDocument->getAttribute('integer_signed')); + $this->assertSame(-Database::MAX_INT, $manualIdDocument->getAttribute('integer_signed')); $this->assertIsInt($manualIdDocument->getAttribute('integer_unsigned')); - $this->assertEquals(Database::MAX_INT, $manualIdDocument->getAttribute('integer_unsigned')); + $this->assertSame(Database::MAX_INT, $manualIdDocument->getAttribute('integer_unsigned')); $this->assertIsInt($manualIdDocument->getAttribute('bigint_signed')); - $this->assertEquals(-Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_signed')); + $this->assertSame(-Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_signed')); $this->assertIsInt($manualIdDocument->getAttribute('bigint_unsigned')); - $this->assertEquals(Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_unsigned')); + $this->assertSame(Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_unsigned')); $this->assertIsFloat($manualIdDocument->getAttribute('float_signed')); - $this->assertEquals(-5.55, $manualIdDocument->getAttribute('float_signed')); + $this->assertSame(-5.55, $manualIdDocument->getAttribute('float_signed')); $this->assertIsFloat($manualIdDocument->getAttribute('float_unsigned')); - $this->assertEquals(5.55, $manualIdDocument->getAttribute('float_unsigned')); + $this->assertSame(5.55, $manualIdDocument->getAttribute('float_unsigned')); $this->assertIsBool($manualIdDocument->getAttribute('boolean')); - $this->assertEquals(true, $manualIdDocument->getAttribute('boolean')); + $this->assertSame(true, $manualIdDocument->getAttribute('boolean')); $this->assertIsArray($manualIdDocument->getAttribute('colors')); - $this->assertEquals(['pink', 'green', 'blue'], $manualIdDocument->getAttribute('colors')); - $this->assertEquals([], $manualIdDocument->getAttribute('empty')); - $this->assertEquals('Works', $manualIdDocument->getAttribute('with-dash')); - $this->assertEquals(null, $manualIdDocument->getAttribute('id')); + $this->assertSame(['pink', 'green', 'blue'], $manualIdDocument->getAttribute('colors')); + $this->assertSame([], $manualIdDocument->getAttribute('empty')); + $this->assertSame('Works', $manualIdDocument->getAttribute('with-dash')); + $this->assertSame(null, $manualIdDocument->getAttribute('id')); $manualIdDocument = $database->getDocument('documents', '56000'); - $this->assertEquals($sequence, $manualIdDocument->getSequence()); + $this->assertSame($sequence, $manualIdDocument->getSequence()); $this->assertNotEmpty($manualIdDocument->getId()); $this->assertIsString($manualIdDocument->getAttribute('string')); - $this->assertEquals('text📝', $manualIdDocument->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('text📝', $manualIdDocument->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($manualIdDocument->getAttribute('integer_signed')); - $this->assertEquals(-Database::MAX_INT, $manualIdDocument->getAttribute('integer_signed')); + $this->assertSame(-Database::MAX_INT, $manualIdDocument->getAttribute('integer_signed')); $this->assertIsInt($manualIdDocument->getAttribute('integer_unsigned')); - $this->assertEquals(Database::MAX_INT, $manualIdDocument->getAttribute('integer_unsigned')); + $this->assertSame(Database::MAX_INT, $manualIdDocument->getAttribute('integer_unsigned')); $this->assertIsInt($manualIdDocument->getAttribute('bigint_signed')); - $this->assertEquals(-Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_signed')); + $this->assertSame(-Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_signed')); $this->assertIsInt($manualIdDocument->getAttribute('bigint_unsigned')); - $this->assertEquals(Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_unsigned')); + $this->assertSame(Database::MAX_BIG_INT, $manualIdDocument->getAttribute('bigint_unsigned')); $this->assertIsFloat($manualIdDocument->getAttribute('float_signed')); - $this->assertEquals(-5.55, $manualIdDocument->getAttribute('float_signed')); + $this->assertSame(-5.55, $manualIdDocument->getAttribute('float_signed')); $this->assertIsFloat($manualIdDocument->getAttribute('float_unsigned')); - $this->assertEquals(5.55, $manualIdDocument->getAttribute('float_unsigned')); + $this->assertSame(5.55, $manualIdDocument->getAttribute('float_unsigned')); $this->assertIsBool($manualIdDocument->getAttribute('boolean')); - $this->assertEquals(true, $manualIdDocument->getAttribute('boolean')); + $this->assertSame(true, $manualIdDocument->getAttribute('boolean')); $this->assertIsArray($manualIdDocument->getAttribute('colors')); - $this->assertEquals(['pink', 'green', 'blue'], $manualIdDocument->getAttribute('colors')); - $this->assertEquals([], $manualIdDocument->getAttribute('empty')); - $this->assertEquals('Works', $manualIdDocument->getAttribute('with-dash')); + $this->assertSame(['pink', 'green', 'blue'], $manualIdDocument->getAttribute('colors')); + $this->assertSame([], $manualIdDocument->getAttribute('empty')); + $this->assertSame('Works', $manualIdDocument->getAttribute('with-dash')); try { $database->createDocument('documents', new Document([ @@ -252,7 +252,7 @@ public function testCreateDocument(): Document } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { $this->assertTrue($e instanceof StructureException); - $this->assertEquals('Invalid document structure: Attribute "bigint_unsigned" has invalid type. Value must be a valid range between 0 and 9,223,372,036,854,775,807', $e->getMessage()); + $this->assertSame('Invalid document structure: Attribute "bigint_unsigned" has invalid type. Value must be a valid range between 0 and 9,223,372,036,854,775,807', $e->getMessage()); } } @@ -276,7 +276,7 @@ public function testCreateDocument(): Document } catch (Throwable $e) { if ($database->getAdapter()->getSupportForAttributes()) { $this->assertTrue($e instanceof StructureException); - $this->assertEquals('Invalid document structure: Attribute "$sequence" has invalid type. Invalid sequence value', $e->getMessage()); + $this->assertSame('Invalid document structure: Attribute "$sequence" has invalid type. Invalid sequence value', $e->getMessage()); } } @@ -338,19 +338,19 @@ public function testCreateDocument(): Document $this->assertNotEmpty($documentId0->getSequence()); $this->assertIsString($documentId0->getAttribute('id')); - $this->assertEquals($sequence, $documentId0->getAttribute('id')); + $this->assertSame($sequence, $documentId0->getAttribute('id')); $documentId0 = $database->getDocument('documents', $documentId0->getId()); $this->assertNotEmpty($documentId0->getSequence()); $this->assertIsString($documentId0->getAttribute('id')); - $this->assertEquals($sequence, $documentId0->getAttribute('id')); + $this->assertSame($sequence, $documentId0->getAttribute('id')); $documentId0 = $database->findOne('documents', [ query::equal('id', [$sequence]) ]); $this->assertNotEmpty($documentId0->getSequence()); $this->assertIsString($documentId0->getAttribute('id')); - $this->assertEquals($sequence, $documentId0->getAttribute('id')); + $this->assertSame($sequence, $documentId0->getAttribute('id')); return $document; @@ -363,7 +363,7 @@ public function testCreateDocumentNumericalId(): void $database->createCollection('numericalIds'); - $this->assertEquals(true, $database->createAttribute('numericalIds', 'name', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('numericalIds', 'name', Database::VAR_STRING, 128, true)); // Test creating a document with an entirely numerical ID $numericalIdDocument = $database->createDocument('numericalIds', new Document([ @@ -375,14 +375,14 @@ public function testCreateDocumentNumericalId(): void ])); $this->assertIsString($numericalIdDocument->getId()); - $this->assertEquals('123456789', $numericalIdDocument->getId()); - $this->assertEquals('Test Document with Numerical ID', $numericalIdDocument->getAttribute('name')); + $this->assertSame('123456789', $numericalIdDocument->getId()); + $this->assertSame('Test Document with Numerical ID', $numericalIdDocument->getAttribute('name')); // Verify we can retrieve the document $retrievedDocument = $database->getDocument('numericalIds', '123456789'); $this->assertIsString($retrievedDocument->getId()); - $this->assertEquals('123456789', $retrievedDocument->getId()); - $this->assertEquals('Test Document with Numerical ID', $retrievedDocument->getAttribute('name')); + $this->assertSame('123456789', $retrievedDocument->getId()); + $this->assertSame('Test Document with Numerical ID', $retrievedDocument->getAttribute('name')); } public function testCreateDocuments(): void @@ -395,9 +395,9 @@ public function testCreateDocuments(): void $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'integer', Database::VAR_INTEGER, 0, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'bigint', Database::VAR_INTEGER, 8, true)); + $this->assertSame(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute($collection, 'integer', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute($collection, 'bigint', Database::VAR_INTEGER, 8, true)); // Create an array of documents with random attributes. Don't use the createDocument function $documents = []; @@ -422,32 +422,32 @@ public function testCreateDocuments(): void $results[] = $doc; }); - $this->assertEquals($count, \count($results)); + $this->assertSame($count, \count($results)); foreach ($results as $document) { $this->assertNotEmpty($document->getId()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($document->getAttribute('integer')); - $this->assertEquals(5, $document->getAttribute('integer')); + $this->assertSame(5, $document->getAttribute('integer')); $this->assertIsInt($document->getAttribute('bigint')); - $this->assertEquals(9223372036854775807, $document->getAttribute('bigint')); + $this->assertSame(9223372036854775807, $document->getAttribute('bigint')); } $documents = $database->find($collection, [ Query::orderAsc() ]); - $this->assertEquals($count, \count($documents)); + $this->assertSame($count, \count($documents)); foreach ($documents as $document) { $this->assertNotEmpty($document->getId()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($document->getAttribute('integer')); - $this->assertEquals(5, $document->getAttribute('integer')); + $this->assertSame(5, $document->getAttribute('integer')); $this->assertIsInt($document->getAttribute('bigint')); - $this->assertEquals(9223372036854775807, $document->getAttribute('bigint')); + $this->assertSame(9223372036854775807, $document->getAttribute('bigint')); } } @@ -458,7 +458,7 @@ public function testCreateDocumentsWithAutoIncrement(): void $database->createCollection(__FUNCTION__); - $this->assertEquals(true, $database->createAttribute(__FUNCTION__, 'string', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute(__FUNCTION__, 'string', Database::VAR_STRING, 128, true)); /** @var array $documents */ $documents = []; @@ -486,16 +486,16 @@ public function testCreateDocumentsWithAutoIncrement(): void } $count = $database->createDocuments(__FUNCTION__, $documents, 6); - $this->assertEquals($count, \count($documents)); + $this->assertSame($count, \count($documents)); $documents = $database->find(__FUNCTION__, [ Query::orderAsc() ]); foreach ($documents as $index => $document) { - $this->assertEquals($hash[$index + $offset], $document->getSequence()); + $this->assertSame($hash[$index + $offset], $document->getSequence()); $this->assertNotEmpty($document->getId()); - $this->assertEquals('text', $document->getAttribute('string')); + $this->assertSame('text', $document->getAttribute('string')); } } @@ -508,10 +508,10 @@ public function testCreateDocumentsWithDifferentAttributes(): void $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'integer', Database::VAR_INTEGER, 0, false)); - $this->assertEquals(true, $database->createAttribute($collection, 'bigint', Database::VAR_INTEGER, 8, false)); - $this->assertEquals(true, $database->createAttribute($collection, 'string_default', Database::VAR_STRING, 128, false, 'default')); + $this->assertSame(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute($collection, 'integer', Database::VAR_INTEGER, 0, false)); + $this->assertSame(true, $database->createAttribute($collection, 'bigint', Database::VAR_INTEGER, 8, false)); + $this->assertSame(true, $database->createAttribute($collection, 'string_default', Database::VAR_STRING, 128, false, 'default')); $documents = [ new Document([ @@ -531,14 +531,14 @@ public function testCreateDocumentsWithDifferentAttributes(): void $results[] = $doc; }); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); - $this->assertEquals('text📝', $results[0]->getAttribute('string')); - $this->assertEquals(5, $results[0]->getAttribute('integer')); - $this->assertEquals('not_default', $results[0]->getAttribute('string_default')); - $this->assertEquals('text📝', $results[1]->getAttribute('string')); - $this->assertEquals(null, $results[1]->getAttribute('integer')); - $this->assertEquals('default', $results[1]->getAttribute('string_default')); + $this->assertSame('text📝', $results[0]->getAttribute('string')); + $this->assertSame(5, $results[0]->getAttribute('integer')); + $this->assertSame('not_default', $results[0]->getAttribute('string_default')); + $this->assertSame('text📝', $results[1]->getAttribute('string')); + $this->assertSame(null, $results[1]->getAttribute('integer')); + $this->assertSame('default', $results[1]->getAttribute('string_default')); /** * Expect fail, mix of sequence and no sequence @@ -599,8 +599,8 @@ public function testSkipPermissions(): void $results[] = $doc; }); - $this->assertEquals($count, \count($results)); - $this->assertEquals(10, \count($results)); + $this->assertSame($count, \count($results)); + $this->assertSame(10, \count($results)); /** * Update 1 row @@ -630,12 +630,12 @@ public function testSkipPermissions(): void $this->getDatabase()->getAuthorization()->reset(); - $this->assertEquals(2, \count($results)); - $this->assertEquals(2, $count); + $this->assertSame(2, \count($results)); + $this->assertSame(2, $count); foreach ($results as $result) { $this->assertArrayHasKey('$permissions', $result); - $this->assertEquals([], $result->getAttribute('$permissions')); + $this->assertSame([], $result->getAttribute('$permissions')); } } @@ -690,7 +690,7 @@ public function testUpsertDocuments(): void } ); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); $createdAt = []; foreach ($results as $index => $document) { @@ -698,25 +698,25 @@ public function testUpsertDocuments(): void $this->assertNotEmpty($document->getId()); $this->assertNotEmpty($document->getSequence()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($document->getAttribute('integer')); - $this->assertEquals(5, $document->getAttribute('integer')); + $this->assertSame(5, $document->getAttribute('integer')); $this->assertIsInt($document->getAttribute('bigint')); - $this->assertEquals(Database::MAX_BIG_INT, $document->getAttribute('bigint')); + $this->assertSame(Database::MAX_BIG_INT, $document->getAttribute('bigint')); } $documents = $database->find(__FUNCTION__); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); foreach ($documents as $document) { $this->assertNotEmpty($document->getId()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($document->getAttribute('integer')); - $this->assertEquals(5, $document->getAttribute('integer')); + $this->assertSame(5, $document->getAttribute('integer')); $this->assertIsInt($document->getAttribute('bigint')); - $this->assertEquals(Database::MAX_BIG_INT, $document->getAttribute('bigint')); + $this->assertSame(Database::MAX_BIG_INT, $document->getAttribute('bigint')); } $documents[0]->setAttribute('string', 'new text📝'); @@ -729,32 +729,32 @@ public function testUpsertDocuments(): void $results[] = $doc; }); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); foreach ($results as $document) { $this->assertNotEmpty($document->getId()); $this->assertNotEmpty($document->getSequence()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('new text📝', $document->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('new text📝', $document->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($document->getAttribute('integer')); - $this->assertEquals(10, $document->getAttribute('integer')); + $this->assertSame(10, $document->getAttribute('integer')); $this->assertIsInt($document->getAttribute('bigint')); - $this->assertEquals(Database::MAX_BIG_INT, $document->getAttribute('bigint')); + $this->assertSame(Database::MAX_BIG_INT, $document->getAttribute('bigint')); } $documents = $database->find(__FUNCTION__); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); foreach ($documents as $index => $document) { - $this->assertEquals($createdAt[$index], $document->getCreatedAt()); + $this->assertSame($createdAt[$index], $document->getCreatedAt()); $this->assertNotEmpty($document->getId()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('new text📝', $document->getAttribute('string')); // Also makes sure an emoji is working + $this->assertSame('new text📝', $document->getAttribute('string')); // Also makes sure an emoji is working $this->assertIsInt($document->getAttribute('integer')); - $this->assertEquals(10, $document->getAttribute('integer')); + $this->assertSame(10, $document->getAttribute('integer')); $this->assertIsInt($document->getAttribute('bigint')); - $this->assertEquals(Database::MAX_BIG_INT, $document->getAttribute('bigint')); + $this->assertSame(Database::MAX_BIG_INT, $document->getAttribute('bigint')); } } @@ -811,7 +811,7 @@ public function testUpsertDocumentsInc(): void $documents = $database->find(__FUNCTION__); foreach ($documents as $document) { - $this->assertEquals(6, $document->getAttribute('integer')); + $this->assertSame(6, $document->getAttribute('integer')); } $documents[0]->setAttribute('integer', -1); @@ -826,7 +826,7 @@ public function testUpsertDocumentsInc(): void $documents = $database->find(__FUNCTION__); foreach ($documents as $document) { - $this->assertEquals(5, $document->getAttribute('integer')); + $this->assertSame(5, $document->getAttribute('integer')); } } @@ -881,8 +881,8 @@ public function testUpsertDocumentsPermissions(): void } ); - $this->assertEquals(1, $count); - $this->assertEquals('updated', $results[0]->getAttribute('string')); + $this->assertSame(1, $count); + $this->assertSame('updated', $results[0]->getAttribute('string')); $document = new Document([ '$id' => 'third', @@ -911,12 +911,12 @@ public function testUpsertDocumentsPermissions(): void } ); - $this->assertEquals(1, $count); - $this->assertEquals($newPermissions, $results[0]->getPermissions()); + $this->assertSame(1, $count); + $this->assertSame($newPermissions, $results[0]->getPermissions()); $document = $database->getDocument(__FUNCTION__, 'third'); - $this->assertEquals($newPermissions, $document->getPermissions()); + $this->assertSame($newPermissions, $document->getPermissions()); } public function testUpsertDocumentsAttributeMismatch(): void @@ -955,11 +955,11 @@ public function testUpsertDocumentsAttributeMismatch(): void $newDocument, ]); - $this->assertEquals(2, $docs); - $this->assertEquals('updated', $existingDocument->getAttribute('first')); - $this->assertEquals('last', $existingDocument->getAttribute('last')); - $this->assertEquals('second', $newDocument->getAttribute('first')); - $this->assertEquals('', $newDocument->getAttribute('last')); + $this->assertSame(2, $docs); + $this->assertSame('updated', $existingDocument->getAttribute('first')); + $this->assertSame('last', $existingDocument->getAttribute('last')); + $this->assertSame('second', $newDocument->getAttribute('first')); + $this->assertSame('', $newDocument->getAttribute('last')); try { $database->upsertDocuments(__FUNCTION__, [ @@ -982,11 +982,11 @@ public function testUpsertDocumentsAttributeMismatch(): void ->setAttribute('last', 'last') ]); - $this->assertEquals(2, $docs); - $this->assertEquals('first', $existingDocument->getAttribute('first')); - $this->assertEquals('last', $existingDocument->getAttribute('last')); - $this->assertEquals('second', $newDocument->getAttribute('first')); - $this->assertEquals('last', $newDocument->getAttribute('last')); + $this->assertSame(2, $docs); + $this->assertSame('first', $existingDocument->getAttribute('first')); + $this->assertSame('last', $existingDocument->getAttribute('last')); + $this->assertSame('second', $newDocument->getAttribute('first')); + $this->assertSame('last', $newDocument->getAttribute('last')); // Ensure set null on existing document is allowed $docs = $database->upsertDocuments(__FUNCTION__, [ @@ -997,11 +997,11 @@ public function testUpsertDocumentsAttributeMismatch(): void ->setAttribute('last', 'last') ]); - $this->assertEquals(1, $docs); - $this->assertEquals('first', $existingDocument->getAttribute('first')); - $this->assertEquals(null, $existingDocument->getAttribute('last')); - $this->assertEquals('second', $newDocument->getAttribute('first')); - $this->assertEquals('last', $newDocument->getAttribute('last')); + $this->assertSame(1, $docs); + $this->assertSame('first', $existingDocument->getAttribute('first')); + $this->assertSame(null, $existingDocument->getAttribute('last')); + $this->assertSame('second', $newDocument->getAttribute('first')); + $this->assertSame('last', $newDocument->getAttribute('last')); $doc3 = new Document([ '$id' => 'third', @@ -1021,19 +1021,19 @@ public function testUpsertDocumentsAttributeMismatch(): void $doc4 ]); - $this->assertEquals(2, $docs); - $this->assertEquals('third', $doc3->getAttribute('first')); - $this->assertEquals('last', $doc3->getAttribute('last')); - $this->assertEquals('fourth', $doc4->getAttribute('first')); - $this->assertEquals('last', $doc4->getAttribute('last')); + $this->assertSame(2, $docs); + $this->assertSame('third', $doc3->getAttribute('first')); + $this->assertSame('last', $doc3->getAttribute('last')); + $this->assertSame('fourth', $doc4->getAttribute('first')); + $this->assertSame('last', $doc4->getAttribute('last')); $doc3 = $database->getDocument(__FUNCTION__, 'third'); $doc4 = $database->getDocument(__FUNCTION__, 'fourth'); - $this->assertEquals('third', $doc3->getAttribute('first')); - $this->assertEquals('last', $doc3->getAttribute('last')); - $this->assertEquals('fourth', $doc4->getAttribute('first')); - $this->assertEquals('last', $doc4->getAttribute('last')); + $this->assertSame('third', $doc3->getAttribute('first')); + $this->assertSame('last', $doc3->getAttribute('last')); + $this->assertSame('fourth', $doc4->getAttribute('first')); + $this->assertSame('last', $doc4->getAttribute('last')); } public function testUpsertDocumentsNoop(): void @@ -1058,11 +1058,11 @@ public function testUpsertDocumentsNoop(): void ]); $count = $this->getDatabase()->upsertDocuments(__FUNCTION__, [$document]); - $this->assertEquals(1, $count); + $this->assertSame(1, $count); // No changes, should return 0 $count = $this->getDatabase()->upsertDocuments(__FUNCTION__, [$document]); - $this->assertEquals(0, $count); + $this->assertSame(0, $count); } public function testUpsertDuplicateIds(): void @@ -1124,12 +1124,12 @@ public function testUpsertMixedPermissionDelta(): void $db->upsertDocuments(__FUNCTION__, [$d1, $d2]); - $this->assertEquals([ + $this->assertSame([ Permission::read(Role::any()), Permission::update(Role::any()), ], $db->getDocument(__FUNCTION__, 'a')->getPermissions()); - $this->assertEquals([ + $this->assertSame([ Permission::read(Role::any()), ], $db->getDocument(__FUNCTION__, 'b')->getPermissions()); } @@ -1141,11 +1141,11 @@ public function testRespectNulls(): Document $database->createCollection('documents_nulls'); - $this->assertEquals(true, $database->createAttribute('documents_nulls', 'string', Database::VAR_STRING, 128, false)); - $this->assertEquals(true, $database->createAttribute('documents_nulls', 'integer', Database::VAR_INTEGER, 0, false)); - $this->assertEquals(true, $database->createAttribute('documents_nulls', 'bigint', Database::VAR_INTEGER, 8, false)); - $this->assertEquals(true, $database->createAttribute('documents_nulls', 'float', Database::VAR_FLOAT, 0, false)); - $this->assertEquals(true, $database->createAttribute('documents_nulls', 'boolean', Database::VAR_BOOLEAN, 0, false)); + $this->assertSame(true, $database->createAttribute('documents_nulls', 'string', Database::VAR_STRING, 128, false)); + $this->assertSame(true, $database->createAttribute('documents_nulls', 'integer', Database::VAR_INTEGER, 0, false)); + $this->assertSame(true, $database->createAttribute('documents_nulls', 'bigint', Database::VAR_INTEGER, 8, false)); + $this->assertSame(true, $database->createAttribute('documents_nulls', 'float', Database::VAR_FLOAT, 0, false)); + $this->assertSame(true, $database->createAttribute('documents_nulls', 'boolean', Database::VAR_BOOLEAN, 0, false)); $document = $database->createDocument('documents_nulls', new Document([ '$permissions' => [ @@ -1180,12 +1180,12 @@ public function testCreateDocumentDefaults(): void $database->createCollection('defaults'); - $this->assertEquals(true, $database->createAttribute('defaults', 'string', Database::VAR_STRING, 128, false, 'default')); - $this->assertEquals(true, $database->createAttribute('defaults', 'integer', Database::VAR_INTEGER, 0, false, 1)); - $this->assertEquals(true, $database->createAttribute('defaults', 'float', Database::VAR_FLOAT, 0, false, 1.5)); - $this->assertEquals(true, $database->createAttribute('defaults', 'boolean', Database::VAR_BOOLEAN, 0, false, true)); - $this->assertEquals(true, $database->createAttribute('defaults', 'colors', Database::VAR_STRING, 32, false, ['red', 'green', 'blue'], true, true)); - $this->assertEquals(true, $database->createAttribute('defaults', 'datetime', Database::VAR_DATETIME, 0, false, '2000-06-12T14:12:55.000+00:00', true, false, null, [], ['datetime'])); + $this->assertSame(true, $database->createAttribute('defaults', 'string', Database::VAR_STRING, 128, false, 'default')); + $this->assertSame(true, $database->createAttribute('defaults', 'integer', Database::VAR_INTEGER, 0, false, 1)); + $this->assertSame(true, $database->createAttribute('defaults', 'float', Database::VAR_FLOAT, 0, false, 1.5)); + $this->assertSame(true, $database->createAttribute('defaults', 'boolean', Database::VAR_BOOLEAN, 0, false, true)); + $this->assertSame(true, $database->createAttribute('defaults', 'colors', Database::VAR_STRING, 32, false, ['red', 'green', 'blue'], true, true)); + $this->assertSame(true, $database->createAttribute('defaults', 'datetime', Database::VAR_DATETIME, 0, false, '2000-06-12T14:12:55.000+00:00', true, false, null, [], ['datetime'])); $document = $database->createDocument('defaults', new Document([ '$permissions' => [ @@ -1198,24 +1198,24 @@ public function testCreateDocumentDefaults(): void $document2 = $database->getDocument('defaults', $document->getId()); $this->assertCount(4, $document2->getPermissions()); - $this->assertEquals('read("any")', $document2->getPermissions()[0]); - $this->assertEquals('create("any")', $document2->getPermissions()[1]); - $this->assertEquals('update("any")', $document2->getPermissions()[2]); - $this->assertEquals('delete("any")', $document2->getPermissions()[3]); + $this->assertSame('read("any")', $document2->getPermissions()[0]); + $this->assertSame('create("any")', $document2->getPermissions()[1]); + $this->assertSame('update("any")', $document2->getPermissions()[2]); + $this->assertSame('delete("any")', $document2->getPermissions()[3]); $this->assertNotEmpty($document->getId()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('default', $document->getAttribute('string')); + $this->assertSame('default', $document->getAttribute('string')); $this->assertIsInt($document->getAttribute('integer')); - $this->assertEquals(1, $document->getAttribute('integer')); + $this->assertSame(1, $document->getAttribute('integer')); $this->assertIsFloat($document->getAttribute('float')); - $this->assertEquals(1.5, $document->getAttribute('float')); + $this->assertSame(1.5, $document->getAttribute('float')); $this->assertIsArray($document->getAttribute('colors')); $this->assertCount(3, $document->getAttribute('colors')); - $this->assertEquals('red', $document->getAttribute('colors')[0]); - $this->assertEquals('green', $document->getAttribute('colors')[1]); - $this->assertEquals('blue', $document->getAttribute('colors')[2]); - $this->assertEquals('2000-06-12T14:12:55.000+00:00', $document->getAttribute('datetime')); + $this->assertSame('red', $document->getAttribute('colors')[0]); + $this->assertSame('green', $document->getAttribute('colors')[1]); + $this->assertSame('blue', $document->getAttribute('colors')[2]); + $this->assertSame('2000-06-12T14:12:55.000+00:00', $document->getAttribute('datetime')); // cleanup collection $database->deleteCollection('defaults'); @@ -1229,11 +1229,11 @@ public function testIncreaseDecrease(): Document $collection = 'increase_decrease'; $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'increase', Database::VAR_INTEGER, 0, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'decrease', Database::VAR_INTEGER, 0, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'increase_text', Database::VAR_STRING, 255, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'increase_float', Database::VAR_FLOAT, 0, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'sizes', Database::VAR_INTEGER, 8, required: false, array: true)); + $this->assertSame(true, $database->createAttribute($collection, 'increase', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute($collection, 'decrease', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute($collection, 'increase_text', Database::VAR_STRING, 255, true)); + $this->assertSame(true, $database->createAttribute($collection, 'increase_float', Database::VAR_FLOAT, 0, true)); + $this->assertSame(true, $database->createAttribute($collection, 'sizes', Database::VAR_INTEGER, 8, required: false, array: true)); $document = $database->createDocument($collection, new Document([ 'increase' => 100, @@ -1252,26 +1252,26 @@ public function testIncreaseDecrease(): Document $updatedAt = $document->getUpdatedAt(); $doc = $database->increaseDocumentAttribute($collection, $document->getId(), 'increase', 1, 101); - $this->assertEquals(101, $doc->getAttribute('increase')); + $this->assertSame(101, $doc->getAttribute('increase')); $document = $database->getDocument($collection, $document->getId()); - $this->assertEquals(101, $document->getAttribute('increase')); + $this->assertSame(101, $document->getAttribute('increase')); $this->assertNotEquals($updatedAt, $document->getUpdatedAt()); $doc = $database->decreaseDocumentAttribute($collection, $document->getId(), 'decrease', 1, 98); - $this->assertEquals(99, $doc->getAttribute('decrease')); + $this->assertSame(99, $doc->getAttribute('decrease')); $document = $database->getDocument($collection, $document->getId()); - $this->assertEquals(99, $document->getAttribute('decrease')); + $this->assertSame(99, $document->getAttribute('decrease')); $doc = $database->increaseDocumentAttribute($collection, $document->getId(), 'increase_float', 5.5, 110); - $this->assertEquals(105.5, $doc->getAttribute('increase_float')); + $this->assertSame(105.5, $doc->getAttribute('increase_float')); $document = $database->getDocument($collection, $document->getId()); - $this->assertEquals(105.5, $document->getAttribute('increase_float')); + $this->assertSame(105.5, $document->getAttribute('increase_float')); $doc = $database->decreaseDocumentAttribute($collection, $document->getId(), 'increase_float', 1.1, 100); - $this->assertEquals(104.4, $doc->getAttribute('increase_float')); + $this->assertSame(104.4, $doc->getAttribute('increase_float')); $document = $database->getDocument($collection, $document->getId()); - $this->assertEquals(104.4, $document->getAttribute('increase_float')); + $this->assertSame(104.4, $document->getAttribute('increase_float')); return $document; } @@ -1285,7 +1285,7 @@ public function testIncreaseLimitMax(Document $document): void $database = $this->getDatabase(); $this->expectException(Exception::class); - $this->assertEquals(true, $database->increaseDocumentAttribute('increase_decrease', $document->getId(), 'increase', 10.5, 102.4)); + $this->assertSame(true, $database->increaseDocumentAttribute('increase_decrease', $document->getId(), 'increase', 10.5, 102.4)); } /** @@ -1332,7 +1332,7 @@ public function testIncreaseTextAttribute(Document $document): void $database = $this->getDatabase(); try { - $this->assertEquals(false, $database->increaseDocumentAttribute('increase_decrease', $document->getId(), 'increase_text')); + $this->assertSame(false, $database->increaseDocumentAttribute('increase_decrease', $document->getId(), 'increase_text')); $this->fail('Expected TypeException not thrown'); } catch (Exception $e) { $this->assertInstanceOf(TypeException::class, $e, $e->getMessage()); @@ -1348,7 +1348,7 @@ public function testIncreaseArrayAttribute(Document $document): void $database = $this->getDatabase(); try { - $this->assertEquals(false, $database->increaseDocumentAttribute('increase_decrease', $document->getId(), 'sizes')); + $this->assertSame(false, $database->increaseDocumentAttribute('increase_decrease', $document->getId(), 'sizes')); $this->fail('Expected TypeException not thrown'); } catch (Exception $e) { $this->assertInstanceOf(TypeException::class, $e); @@ -1367,18 +1367,18 @@ public function testGetDocument(Document $document): Document $this->assertNotEmpty($document->getId()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('text📝', $document->getAttribute('string')); + $this->assertSame('text📝', $document->getAttribute('string')); $this->assertIsInt($document->getAttribute('integer_signed')); - $this->assertEquals(-Database::MAX_INT, $document->getAttribute('integer_signed')); + $this->assertSame(-Database::MAX_INT, $document->getAttribute('integer_signed')); $this->assertIsFloat($document->getAttribute('float_signed')); - $this->assertEquals(-5.55, $document->getAttribute('float_signed')); + $this->assertSame(-5.55, $document->getAttribute('float_signed')); $this->assertIsFloat($document->getAttribute('float_unsigned')); - $this->assertEquals(5.55, $document->getAttribute('float_unsigned')); + $this->assertSame(5.55, $document->getAttribute('float_unsigned')); $this->assertIsBool($document->getAttribute('boolean')); - $this->assertEquals(true, $document->getAttribute('boolean')); + $this->assertSame(true, $document->getAttribute('boolean')); $this->assertIsArray($document->getAttribute('colors')); - $this->assertEquals(['pink', 'green', 'blue'], $document->getAttribute('colors')); - $this->assertEquals('Works', $document->getAttribute('with-dash')); + $this->assertSame(['pink', 'green', 'blue'], $document->getAttribute('colors')); + $this->assertSame('Works', $document->getAttribute('with-dash')); return $document; } @@ -1399,9 +1399,9 @@ public function testGetDocumentSelect(Document $document): Document $this->assertFalse($document->isEmpty()); $this->assertIsString($document->getAttribute('string')); - $this->assertEquals('text📝', $document->getAttribute('string')); + $this->assertSame('text📝', $document->getAttribute('string')); $this->assertIsInt($document->getAttribute('integer_signed')); - $this->assertEquals(-Database::MAX_INT, $document->getAttribute('integer_signed')); + $this->assertSame(-Database::MAX_INT, $document->getAttribute('integer_signed')); $this->assertArrayNotHasKey('float', $document->getAttributes()); $this->assertArrayNotHasKey('boolean', $document->getAttributes()); $this->assertArrayNotHasKey('colors', $document->getAttributes()); @@ -1444,20 +1444,20 @@ public function testFind(): array Permission::update(Role::users()) ]); - $this->assertEquals(true, $database->createAttribute('movies', 'name', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('movies', 'director', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('movies', 'year', Database::VAR_INTEGER, 0, true)); - $this->assertEquals(true, $database->createAttribute('movies', 'price', Database::VAR_FLOAT, 0, true)); - $this->assertEquals(true, $database->createAttribute('movies', 'active', Database::VAR_BOOLEAN, 0, true)); - $this->assertEquals(true, $database->createAttribute('movies', 'genres', Database::VAR_STRING, 32, true, null, true, true)); - $this->assertEquals(true, $database->createAttribute('movies', 'with-dash', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('movies', 'nullable', Database::VAR_STRING, 128, false)); + $this->assertSame(true, $database->createAttribute('movies', 'name', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('movies', 'director', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('movies', 'year', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute('movies', 'price', Database::VAR_FLOAT, 0, true)); + $this->assertSame(true, $database->createAttribute('movies', 'active', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('movies', 'genres', Database::VAR_STRING, 32, true, null, true, true)); + $this->assertSame(true, $database->createAttribute('movies', 'with-dash', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('movies', 'nullable', Database::VAR_STRING, 128, false)); try { $database->createDocument('movies', new Document(['$id' => ['id_as_array']])); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('$id must be of type string', $e->getMessage()); + $this->assertSame('$id must be of type string', $e->getMessage()); $this->assertInstanceOf(StructureException::class, $e); } @@ -1624,7 +1624,7 @@ public function testFindOne(): void ]); $this->assertFalse($document->isEmpty()); - $this->assertEquals('Frozen', $document->getAttribute('name')); + $this->assertSame('Frozen', $document->getAttribute('name')); $document = $database->findOne('movies', [ Query::offset(10) @@ -1640,23 +1640,23 @@ public function testFindBasicChecks(): void $documents = $database->find('movies'); $movieDocuments = $documents; - $this->assertEquals(5, count($documents)); + $this->assertSame(5, count($documents)); $this->assertNotEmpty($documents[0]->getId()); - $this->assertEquals('movies', $documents[0]->getCollection()); - $this->assertEquals(['any', 'user:1', 'user:2'], $documents[0]->getRead()); - $this->assertEquals(['any', 'user:1x', 'user:2x'], $documents[0]->getWrite()); - $this->assertEquals('Frozen', $documents[0]->getAttribute('name')); - $this->assertEquals('Chris Buck & Jennifer Lee', $documents[0]->getAttribute('director')); + $this->assertSame('movies', $documents[0]->getCollection()); + $this->assertSame(['any', 'user:1', 'user:2'], $documents[0]->getRead()); + $this->assertSame(['any', 'user:1x', 'user:2x'], $documents[0]->getWrite()); + $this->assertSame('Frozen', $documents[0]->getAttribute('name')); + $this->assertSame('Chris Buck & Jennifer Lee', $documents[0]->getAttribute('director')); $this->assertIsString($documents[0]->getAttribute('director')); - $this->assertEquals(2013, $documents[0]->getAttribute('year')); + $this->assertSame(2013, $documents[0]->getAttribute('year')); $this->assertIsInt($documents[0]->getAttribute('year')); - $this->assertEquals(39.50, $documents[0]->getAttribute('price')); + $this->assertSame(39.50, $documents[0]->getAttribute('price')); $this->assertIsFloat($documents[0]->getAttribute('price')); - $this->assertEquals(true, $documents[0]->getAttribute('active')); + $this->assertSame(true, $documents[0]->getAttribute('active')); $this->assertIsBool($documents[0]->getAttribute('active')); - $this->assertEquals(['animation', 'kids'], $documents[0]->getAttribute('genres')); + $this->assertSame(['animation', 'kids'], $documents[0]->getAttribute('genres')); $this->assertIsArray($documents[0]->getAttribute('genres')); - $this->assertEquals('Works', $documents[0]->getAttribute('with-dash')); + $this->assertSame('Works', $documents[0]->getAttribute('with-dash')); // Alphabetical order $sortedDocuments = $movieDocuments; @@ -1675,13 +1675,13 @@ public function testFindBasicChecks(): void Query::offset(0), Query::orderDesc('$id'), ]); - $this->assertEquals($lastDocumentId, $documents[0]->getId()); + $this->assertSame($lastDocumentId, $documents[0]->getId()); $documents = $database->find('movies', [ Query::limit(25), Query::offset(0), Query::orderAsc('$id'), ]); - $this->assertEquals($firstDocumentId, $documents[0]->getId()); + $this->assertSame($firstDocumentId, $documents[0]->getId()); /** * Check internal numeric ID sorting @@ -1691,13 +1691,13 @@ public function testFindBasicChecks(): void Query::offset(0), Query::orderDesc(''), ]); - $this->assertEquals($movieDocuments[\count($movieDocuments) - 1]->getId(), $documents[0]->getId()); + $this->assertSame($movieDocuments[\count($movieDocuments) - 1]->getId(), $documents[0]->getId()); $documents = $database->find('movies', [ Query::limit(25), Query::offset(0), Query::orderAsc(''), ]); - $this->assertEquals($movieDocuments[0]->getId(), $documents[0]->getId()); + $this->assertSame($movieDocuments[0]->getId(), $documents[0]->getId()); } public function testFindCheckPermissions(): void @@ -1711,7 +1711,7 @@ public function testFindCheckPermissions(): void $this->getDatabase()->getAuthorization()->addRole('user:x'); $documents = $database->find('movies'); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); } public function testFindCheckInteger(): void @@ -1726,13 +1726,13 @@ public function testFindCheckInteger(): void Query::equal('with-dash', ['Works']), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); $documents = $database->find('movies', [ Query::equal('with-dash', ['Works2', 'Works3']), ]); - $this->assertEquals(4, count($documents)); + $this->assertSame(4, count($documents)); /** * Check an Integer condition @@ -1741,9 +1741,9 @@ public function testFindCheckInteger(): void Query::equal('year', [2019]), ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals('Frozen II', $documents[0]['name']); - $this->assertEquals('Captain Marvel', $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame('Frozen II', $documents[0]['name']); + $this->assertSame('Captain Marvel', $documents[1]['name']); } public function testFindBoolean(): void @@ -1758,7 +1758,7 @@ public function testFindBoolean(): void Query::equal('active', [true]), ]); - $this->assertEquals(4, count($documents)); + $this->assertSame(4, count($documents)); } public function testFindStringQueryEqual(): void @@ -1773,13 +1773,13 @@ public function testFindStringQueryEqual(): void Query::equal('director', ['TBD']), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); $documents = $database->find('movies', [ Query::equal('director', ['']), ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } @@ -1807,7 +1807,7 @@ public function testFindNotEqual(): void $total = $database->count('movies'); - $this->assertEquals($total, count($documents)); + $this->assertSame($total, count($documents)); } public function testFindBetween(): void @@ -1818,22 +1818,22 @@ public function testFindBetween(): void $documents = $database->find('movies', [ Query::between('price', 25.94, 25.99), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); $documents = $database->find('movies', [ Query::between('price', 30, 35), ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); $documents = $database->find('movies', [ Query::between('$createdAt', '1975-12-06', '2050-12-06'), ]); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); $documents = $database->find('movies', [ Query::between('$updatedAt', '1975-12-06T07:08:49.733+02:00', '2050-02-05T10:15:21.825+00:00'), ]); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); } public function testFindFloat(): void @@ -1849,7 +1849,7 @@ public function testFindFloat(): void Query::greaterThan('price', 25.98), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } public function testFindContains(): void @@ -1866,7 +1866,7 @@ public function testFindContains(): void Query::contains('genres', ['comics']) ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); /** * Array contains OR condition @@ -1875,13 +1875,13 @@ public function testFindContains(): void Query::contains('genres', ['comics', 'kids']), ]); - $this->assertEquals(4, count($documents)); + $this->assertSame(4, count($documents)); $documents = $database->find('movies', [ Query::contains('genres', ['non-existent']), ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); try { $database->find('movies', [ @@ -1889,7 +1889,7 @@ public function testFindContains(): void ]); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Invalid query: Cannot query contains on attribute "price" because it is not an array, string, or object.', $e->getMessage()); + $this->assertSame('Invalid query: Cannot query contains on attribute "price" because it is not an array, string, or object.', $e->getMessage()); $this->assertTrue($e instanceof DatabaseException); } } @@ -1904,13 +1904,13 @@ public function testFindFulltext(): void */ if ($this->getDatabase()->getAdapter()->getSupportForFulltextIndex()) { $success = $database->createIndex('movies', 'name', Database::INDEX_FULLTEXT, ['name']); - $this->assertEquals(true, $success); + $this->assertSame(true, $success); $documents = $database->find('movies', [ Query::search('name', 'captain'), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); /** * Fulltext search (wildcard) @@ -1924,11 +1924,11 @@ public function testFindFulltext(): void Query::search('name', 'cap'), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); } } - $this->assertEquals(true, true); // Test must do an assertion + $this->assertSame(true, true); // Test must do an assertion } public function testFindFulltextSpecialChars(): void { @@ -1957,7 +1957,7 @@ public function testFindFulltextSpecialChars(): void $documents = $database->find($collection, [ Query::search('ft', 'chapter_4'), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); $database->createDocument($collection, new Document([ '$permissions' => [Permission::read(Role::any())], @@ -1969,9 +1969,9 @@ public function testFindFulltextSpecialChars(): void ]); if ($database->getAdapter()->getSupportForFulltextWildcardIndex()) { - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } else { - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } $database->createDocument($collection, new Document([ @@ -1988,13 +1988,13 @@ public function testFindFulltextSpecialChars(): void Query::search('ft', 'donald trump'), Query::orderAsc('ft'), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); $documents = $database->find($collection, [ Query::search('ft', '"donald trump"'), // Exact match ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } public function testFindMultipleConditions(): void @@ -2010,7 +2010,7 @@ public function testFindMultipleConditions(): void Query::equal('year', [2026]), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); /** * Multiple conditions and OR values @@ -2019,9 +2019,9 @@ public function testFindMultipleConditions(): void Query::equal('name', ['Frozen II', 'Captain Marvel']), ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals('Frozen II', $documents[0]['name']); - $this->assertEquals('Captain Marvel', $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame('Frozen II', $documents[0]['name']); + $this->assertSame('Captain Marvel', $documents[1]['name']); } public function testFindByID(): void @@ -2036,8 +2036,8 @@ public function testFindByID(): void Query::equal('$id', ['frozen']), ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals('Frozen', $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame('Frozen', $documents[0]['name']); } /** * @depends testFind @@ -2057,7 +2057,7 @@ public function testFindByInternalID(array $data): void Query::equal('$sequence', [$data['$sequence']]), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } public function testFindOrderBy(): void @@ -2075,13 +2075,13 @@ public function testFindOrderBy(): void Query::orderAsc('name') ]); - $this->assertEquals(6, count($documents)); - $this->assertEquals('Frozen', $documents[0]['name']); - $this->assertEquals('Frozen II', $documents[1]['name']); - $this->assertEquals('Captain Marvel', $documents[2]['name']); - $this->assertEquals('Captain America: The First Avenger', $documents[3]['name']); - $this->assertEquals('Work in Progress', $documents[4]['name']); - $this->assertEquals('Work in Progress 2', $documents[5]['name']); + $this->assertSame(6, count($documents)); + $this->assertSame('Frozen', $documents[0]['name']); + $this->assertSame('Frozen II', $documents[1]['name']); + $this->assertSame('Captain Marvel', $documents[2]['name']); + $this->assertSame('Captain America: The First Avenger', $documents[3]['name']); + $this->assertSame('Work in Progress', $documents[4]['name']); + $this->assertSame('Work in Progress 2', $documents[5]['name']); } public function testFindOrderByNatural(): void { @@ -2101,13 +2101,13 @@ public function testFindOrderByNatural(): void Query::orderDesc(''), ]); - $this->assertEquals(6, count($documents)); - $this->assertEquals($base[0]['name'], $documents[0]['name']); - $this->assertEquals($base[1]['name'], $documents[1]['name']); - $this->assertEquals($base[2]['name'], $documents[2]['name']); - $this->assertEquals($base[3]['name'], $documents[3]['name']); - $this->assertEquals($base[4]['name'], $documents[4]['name']); - $this->assertEquals($base[5]['name'], $documents[5]['name']); + $this->assertSame(6, count($documents)); + $this->assertSame($base[0]['name'], $documents[0]['name']); + $this->assertSame($base[1]['name'], $documents[1]['name']); + $this->assertSame($base[2]['name'], $documents[2]['name']); + $this->assertSame($base[3]['name'], $documents[3]['name']); + $this->assertSame($base[4]['name'], $documents[4]['name']); + $this->assertSame($base[5]['name'], $documents[5]['name']); } public function testFindOrderByMultipleAttributes(): void { @@ -2124,13 +2124,13 @@ public function testFindOrderByMultipleAttributes(): void Query::orderDesc('name') ]); - $this->assertEquals(6, count($documents)); - $this->assertEquals('Frozen II', $documents[0]['name']); - $this->assertEquals('Frozen', $documents[1]['name']); - $this->assertEquals('Captain Marvel', $documents[2]['name']); - $this->assertEquals('Captain America: The First Avenger', $documents[3]['name']); - $this->assertEquals('Work in Progress 2', $documents[4]['name']); - $this->assertEquals('Work in Progress', $documents[5]['name']); + $this->assertSame(6, count($documents)); + $this->assertSame('Frozen II', $documents[0]['name']); + $this->assertSame('Frozen', $documents[1]['name']); + $this->assertSame('Captain Marvel', $documents[2]['name']); + $this->assertSame('Captain America: The First Avenger', $documents[3]['name']); + $this->assertSame('Work in Progress 2', $documents[4]['name']); + $this->assertSame('Work in Progress', $documents[5]['name']); } public function testFindOrderByCursorAfter(): void @@ -2151,26 +2151,26 @@ public function testFindOrderByCursorAfter(): void Query::offset(0), Query::cursorAfter($movies[1]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[2]['name'], $documents[0]['name']); - $this->assertEquals($movies[3]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[2]['name'], $documents[0]['name']); + $this->assertSame($movies[3]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), Query::offset(0), Query::cursorAfter($movies[3]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[4]['name'], $documents[0]['name']); - $this->assertEquals($movies[5]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[4]['name'], $documents[0]['name']); + $this->assertSame($movies[5]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), Query::offset(0), Query::cursorAfter($movies[4]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[5]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[5]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2187,31 +2187,31 @@ public function testFindOrderByCursorAfter(): void Query::orderAsc('price'), ]); - $this->assertEquals(6, count($movies)); + $this->assertSame(6, count($movies)); - $this->assertEquals($movies[0]['name'], 'Captain America: The First Avenger'); - $this->assertEquals($movies[0]['year'], 2011); - $this->assertEquals($movies[0]['price'], 25.94); + $this->assertSame($movies[0]['name'], 'Captain America: The First Avenger'); + $this->assertSame($movies[0]['year'], 2011); + $this->assertSame($movies[0]['price'], 25.94); - $this->assertEquals($movies[1]['name'], 'Frozen'); - $this->assertEquals($movies[1]['year'], 2013); - $this->assertEquals($movies[1]['price'], 39.5); + $this->assertSame($movies[1]['name'], 'Frozen'); + $this->assertSame($movies[1]['year'], 2013); + $this->assertSame($movies[1]['price'], 39.5); - $this->assertEquals($movies[2]['name'], 'Captain Marvel'); - $this->assertEquals($movies[2]['year'], 2019); - $this->assertEquals($movies[2]['price'], 25.99); + $this->assertSame($movies[2]['name'], 'Captain Marvel'); + $this->assertSame($movies[2]['year'], 2019); + $this->assertSame($movies[2]['price'], 25.99); - $this->assertEquals($movies[3]['name'], 'Frozen II'); - $this->assertEquals($movies[3]['year'], 2019); - $this->assertEquals($movies[3]['price'], 39.5); + $this->assertSame($movies[3]['name'], 'Frozen II'); + $this->assertSame($movies[3]['year'], 2019); + $this->assertSame($movies[3]['price'], 39.5); - $this->assertEquals($movies[4]['name'], 'Work in Progress'); - $this->assertEquals($movies[4]['year'], 2025); - $this->assertEquals($movies[4]['price'], 0); + $this->assertSame($movies[4]['name'], 'Work in Progress'); + $this->assertSame($movies[4]['year'], 2025); + $this->assertSame($movies[4]['price'], 0); - $this->assertEquals($movies[5]['name'], 'Work in Progress 2'); - $this->assertEquals($movies[5]['year'], 2026); - $this->assertEquals($movies[5]['price'], 0); + $this->assertSame($movies[5]['name'], 'Work in Progress 2'); + $this->assertSame($movies[5]['year'], 2026); + $this->assertSame($movies[5]['price'], 0); $pos = 2; $documents = $database->find('movies', [ @@ -2220,12 +2220,12 @@ public function testFindOrderByCursorAfter(): void Query::cursorAfter($movies[$pos]) ]); - $this->assertEquals(3, count($documents)); + $this->assertSame(3, count($documents)); foreach ($documents as $i => $document) { - $this->assertEquals($document['name'], $movies[$i + 1 + $pos]['name']); - $this->assertEquals($document['price'], $movies[$i + 1 + $pos]['price']); - $this->assertEquals($document['year'], $movies[$i + 1 + $pos]['year']); + $this->assertSame($document['name'], $movies[$i + 1 + $pos]['name']); + $this->assertSame($document['price'], $movies[$i + 1 + $pos]['price']); + $this->assertSame($document['year'], $movies[$i + 1 + $pos]['year']); } } @@ -2248,35 +2248,35 @@ public function testFindOrderByCursorBefore(): void Query::offset(0), Query::cursorBefore($movies[5]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[3]['name'], $documents[0]['name']); - $this->assertEquals($movies[4]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[3]['name'], $documents[0]['name']); + $this->assertSame($movies[4]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), Query::offset(0), Query::cursorBefore($movies[3]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[1]['name'], $documents[0]['name']); - $this->assertEquals($movies[2]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[1]['name'], $documents[0]['name']); + $this->assertSame($movies[2]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), Query::offset(0), Query::cursorBefore($movies[2]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); - $this->assertEquals($movies[1]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); + $this->assertSame($movies[1]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), Query::offset(0), Query::cursorBefore($movies[1]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2305,9 +2305,9 @@ public function testFindOrderByAfterNaturalOrder(): void Query::orderDesc(''), Query::cursorAfter($movies[1]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[2]['name'], $documents[0]['name']); - $this->assertEquals($movies[3]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[2]['name'], $documents[0]['name']); + $this->assertSame($movies[3]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2315,9 +2315,9 @@ public function testFindOrderByAfterNaturalOrder(): void Query::orderDesc(''), Query::cursorAfter($movies[3]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[4]['name'], $documents[0]['name']); - $this->assertEquals($movies[5]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[4]['name'], $documents[0]['name']); + $this->assertSame($movies[5]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2325,8 +2325,8 @@ public function testFindOrderByAfterNaturalOrder(): void Query::orderDesc(''), Query::cursorAfter($movies[4]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[5]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[5]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2356,9 +2356,9 @@ public function testFindOrderByBeforeNaturalOrder(): void Query::orderDesc(''), Query::cursorBefore($movies[5]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[3]['name'], $documents[0]['name']); - $this->assertEquals($movies[4]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[3]['name'], $documents[0]['name']); + $this->assertSame($movies[4]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2366,9 +2366,9 @@ public function testFindOrderByBeforeNaturalOrder(): void Query::orderDesc(''), Query::cursorBefore($movies[3]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[1]['name'], $documents[0]['name']); - $this->assertEquals($movies[2]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[1]['name'], $documents[0]['name']); + $this->assertSame($movies[2]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2376,9 +2376,9 @@ public function testFindOrderByBeforeNaturalOrder(): void Query::orderDesc(''), Query::cursorBefore($movies[2]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); - $this->assertEquals($movies[1]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); + $this->assertSame($movies[1]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2386,8 +2386,8 @@ public function testFindOrderByBeforeNaturalOrder(): void Query::orderDesc(''), Query::cursorBefore($movies[1]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2419,9 +2419,9 @@ public function testFindOrderBySingleAttributeAfter(): void Query::cursorAfter($movies[1]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[2]['name'], $documents[0]['name']); - $this->assertEquals($movies[3]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[2]['name'], $documents[0]['name']); + $this->assertSame($movies[3]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2429,9 +2429,9 @@ public function testFindOrderBySingleAttributeAfter(): void Query::orderDesc('year'), Query::cursorAfter($movies[3]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[4]['name'], $documents[0]['name']); - $this->assertEquals($movies[5]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[4]['name'], $documents[0]['name']); + $this->assertSame($movies[5]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2439,8 +2439,8 @@ public function testFindOrderBySingleAttributeAfter(): void Query::orderDesc('year'), Query::cursorAfter($movies[4]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[5]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[5]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2472,9 +2472,9 @@ public function testFindOrderBySingleAttributeBefore(): void Query::orderDesc('year'), Query::cursorBefore($movies[5]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[3]['name'], $documents[0]['name']); - $this->assertEquals($movies[4]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[3]['name'], $documents[0]['name']); + $this->assertSame($movies[4]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2482,9 +2482,9 @@ public function testFindOrderBySingleAttributeBefore(): void Query::orderDesc('year'), Query::cursorBefore($movies[3]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[1]['name'], $documents[0]['name']); - $this->assertEquals($movies[2]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[1]['name'], $documents[0]['name']); + $this->assertSame($movies[2]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2492,9 +2492,9 @@ public function testFindOrderBySingleAttributeBefore(): void Query::orderDesc('year'), Query::cursorBefore($movies[2]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); - $this->assertEquals($movies[1]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); + $this->assertSame($movies[1]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2502,8 +2502,8 @@ public function testFindOrderBySingleAttributeBefore(): void Query::orderDesc('year'), Query::cursorBefore($movies[1]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2536,9 +2536,9 @@ public function testFindOrderByMultipleAttributeAfter(): void Query::orderAsc('year'), Query::cursorAfter($movies[1]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[2]['name'], $documents[0]['name']); - $this->assertEquals($movies[3]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[2]['name'], $documents[0]['name']); + $this->assertSame($movies[3]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2547,9 +2547,9 @@ public function testFindOrderByMultipleAttributeAfter(): void Query::orderAsc('year'), Query::cursorAfter($movies[3]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[4]['name'], $documents[0]['name']); - $this->assertEquals($movies[5]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[4]['name'], $documents[0]['name']); + $this->assertSame($movies[5]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2558,8 +2558,8 @@ public function testFindOrderByMultipleAttributeAfter(): void Query::orderAsc('year'), Query::cursorAfter($movies[4]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[5]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[5]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2594,9 +2594,9 @@ public function testFindOrderByMultipleAttributeBefore(): void Query::cursorBefore($movies[5]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[3]['name'], $documents[0]['name']); - $this->assertEquals($movies[4]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[3]['name'], $documents[0]['name']); + $this->assertSame($movies[4]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2605,9 +2605,9 @@ public function testFindOrderByMultipleAttributeBefore(): void Query::orderAsc('year'), Query::cursorBefore($movies[4]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[2]['name'], $documents[0]['name']); - $this->assertEquals($movies[3]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[2]['name'], $documents[0]['name']); + $this->assertSame($movies[3]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2616,9 +2616,9 @@ public function testFindOrderByMultipleAttributeBefore(): void Query::orderAsc('year'), Query::cursorBefore($movies[2]) ]); - $this->assertEquals(2, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); - $this->assertEquals($movies[1]['name'], $documents[1]['name']); + $this->assertSame(2, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); + $this->assertSame($movies[1]['name'], $documents[1]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2627,8 +2627,8 @@ public function testFindOrderByMultipleAttributeBefore(): void Query::orderAsc('year'), Query::cursorBefore($movies[1]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($movies[0]['name'], $documents[0]['name']); + $this->assertSame(1, count($documents)); + $this->assertSame($movies[0]['name'], $documents[0]['name']); $documents = $database->find('movies', [ Query::limit(2), @@ -2659,7 +2659,7 @@ public function testFindOrderByAndCursor(): void Query::cursorAfter($documentsTest[0]) ]); - $this->assertEquals($documentsTest[1]['$id'], $documents[0]['$id']); + $this->assertSame($documentsTest[1]['$id'], $documents[0]['$id']); } public function testFindOrderByIdAndCursor(): void { @@ -2681,7 +2681,7 @@ public function testFindOrderByIdAndCursor(): void Query::cursorAfter($documentsTest[0]) ]); - $this->assertEquals($documentsTest[1]['$id'], $documents[0]['$id']); + $this->assertSame($documentsTest[1]['$id'], $documents[0]['$id']); } public function testFindOrderByCreateDateAndCursor(): void @@ -2705,7 +2705,7 @@ public function testFindOrderByCreateDateAndCursor(): void Query::cursorAfter($documentsTest[0]) ]); - $this->assertEquals($documentsTest[1]['$id'], $documents[0]['$id']); + $this->assertSame($documentsTest[1]['$id'], $documents[0]['$id']); } public function testFindOrderByUpdateDateAndCursor(): void @@ -2728,7 +2728,7 @@ public function testFindOrderByUpdateDateAndCursor(): void Query::cursorAfter($documentsTest[0]) ]); - $this->assertEquals($documentsTest[1]['$id'], $documents[0]['$id']); + $this->assertSame($documentsTest[1]['$id'], $documents[0]['$id']); } public function testFindCreatedBefore(): void @@ -2754,7 +2754,7 @@ public function testFindCreatedBefore(): void Query::limit(1) ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } public function testFindCreatedAfter(): void @@ -2780,7 +2780,7 @@ public function testFindCreatedAfter(): void Query::limit(1) ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } public function testFindUpdatedBefore(): void @@ -2806,7 +2806,7 @@ public function testFindUpdatedBefore(): void Query::limit(1) ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } public function testFindUpdatedAfter(): void @@ -2832,7 +2832,7 @@ public function testFindUpdatedAfter(): void Query::limit(1) ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } public function testFindCreatedBetween(): void @@ -2862,7 +2862,7 @@ public function testFindCreatedBetween(): void Query::limit(25) ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); // Documents created between recent past and near future $documents = $database->find('movies', [ @@ -2908,7 +2908,7 @@ public function testFindUpdatedBetween(): void Query::limit(25) ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); // Documents updated between recent past and near future $documents = $database->find('movies', [ @@ -2941,11 +2941,11 @@ public function testFindLimit(): void Query::orderAsc('name') ]); - $this->assertEquals(4, count($documents)); - $this->assertEquals('Captain America: The First Avenger', $documents[0]['name']); - $this->assertEquals('Captain Marvel', $documents[1]['name']); - $this->assertEquals('Frozen', $documents[2]['name']); - $this->assertEquals('Frozen II', $documents[3]['name']); + $this->assertSame(4, count($documents)); + $this->assertSame('Captain America: The First Avenger', $documents[0]['name']); + $this->assertSame('Captain Marvel', $documents[1]['name']); + $this->assertSame('Frozen', $documents[2]['name']); + $this->assertSame('Frozen II', $documents[3]['name']); } @@ -2963,11 +2963,11 @@ public function testFindLimitAndOffset(): void Query::orderAsc('name') ]); - $this->assertEquals(4, count($documents)); - $this->assertEquals('Frozen', $documents[0]['name']); - $this->assertEquals('Frozen II', $documents[1]['name']); - $this->assertEquals('Work in Progress', $documents[2]['name']); - $this->assertEquals('Work in Progress 2', $documents[3]['name']); + $this->assertSame(4, count($documents)); + $this->assertSame('Frozen', $documents[0]['name']); + $this->assertSame('Frozen II', $documents[1]['name']); + $this->assertSame('Work in Progress', $documents[2]['name']); + $this->assertSame('Work in Progress 2', $documents[3]['name']); } public function testFindOrQueries(): void @@ -2982,7 +2982,7 @@ public function testFindOrQueries(): void Query::equal('director', ['TBD', 'Joe Johnston']), Query::equal('year', [2025]), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } /** @@ -2997,7 +2997,7 @@ public function testFindEdgeCases(Document $document): void $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'value', Database::VAR_STRING, 256, true)); + $this->assertSame(true, $database->createAttribute($collection, 'value', Database::VAR_STRING, 256, true)); $values = [ 'NormalString', @@ -3032,13 +3032,13 @@ public function testFindEdgeCases(Document $document): void */ $documents = $database->find($collection); - $this->assertEquals(count($values), count($documents)); + $this->assertSame(count($values), count($documents)); $this->assertNotEmpty($documents[0]->getId()); - $this->assertEquals($collection, $documents[0]->getCollection()); - $this->assertEquals(['any'], $documents[0]->getRead()); - $this->assertEquals(['any'], $documents[0]->getUpdate()); - $this->assertEquals(['any'], $documents[0]->getDelete()); - $this->assertEquals($values[0], $documents[0]->getAttribute('value')); + $this->assertSame($collection, $documents[0]->getCollection()); + $this->assertSame(['any'], $documents[0]->getRead()); + $this->assertSame(['any'], $documents[0]->getUpdate()); + $this->assertSame(['any'], $documents[0]->getDelete()); + $this->assertSame($values[0], $documents[0]->getAttribute('value')); /** * Check `equals` query @@ -3049,8 +3049,8 @@ public function testFindEdgeCases(Document $document): void Query::equal('value', [$value]) ]); - $this->assertEquals(1, count($documents)); - $this->assertEquals($value, $documents[0]->getAttribute('value')); + $this->assertSame(1, count($documents)); + $this->assertSame($value, $documents[0]->getAttribute('value')); } } @@ -3067,7 +3067,7 @@ public function testOrSingleQuery(): void ]); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Invalid query: Or queries require at least two queries', $e->getMessage()); + $this->assertSame('Invalid query: Or queries require at least two queries', $e->getMessage()); } } @@ -3083,7 +3083,7 @@ public function testOrMultipleQueries(): void ]) ]; $this->assertCount(4, $database->find('movies', $queries)); - $this->assertEquals(4, $database->count('movies', $queries)); + $this->assertSame(4, $database->count('movies', $queries)); $queries = [ Query::equal('active', [true]), @@ -3095,7 +3095,7 @@ public function testOrMultipleQueries(): void ]; $this->assertCount(3, $database->find('movies', $queries)); - $this->assertEquals(3, $database->count('movies', $queries)); + $this->assertSame(3, $database->count('movies', $queries)); } public function testOrNested(): void @@ -3120,7 +3120,7 @@ public function testOrNested(): void $this->assertArrayNotHasKey('name', $documents[0]); $count = $database->count('movies', $queries); - $this->assertEquals(1, $count); + $this->assertSame(1, $count); } public function testAndSingleQuery(): void @@ -3136,7 +3136,7 @@ public function testAndSingleQuery(): void ]); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Invalid query: And queries require at least two queries', $e->getMessage()); + $this->assertSame('Invalid query: And queries require at least two queries', $e->getMessage()); } } @@ -3152,7 +3152,7 @@ public function testAndMultipleQueries(): void ]) ]; $this->assertCount(1, $database->find('movies', $queries)); - $this->assertEquals(1, $database->count('movies', $queries)); + $this->assertSame(1, $database->count('movies', $queries)); } public function testAndNested(): void @@ -3174,7 +3174,7 @@ public function testAndNested(): void $this->assertCount(3, $documents); $count = $database->count('movies', $queries); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); } public function testNestedIDQueries(): void @@ -3189,7 +3189,7 @@ public function testNestedIDQueries(): void Permission::update(Role::users()) ]); - $this->assertEquals(true, $database->createAttribute('movies_nested_id', 'name', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('movies_nested_id', 'name', Database::VAR_STRING, 128, true)); $database->createDocument('movies_nested_id', new Document([ '$id' => ID::custom('1'), @@ -3235,10 +3235,10 @@ public function testNestedIDQueries(): void $this->assertCount(2, $documents); // Make sure the query was not modified by reference - $this->assertEquals($queries[0]->getValues()[0]->getAttribute(), '$id'); + $this->assertSame($queries[0]->getValues()[0]->getAttribute(), '$id'); $count = $database->count('movies_nested_id', $queries); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); } public function testFindNull(): void @@ -3250,7 +3250,7 @@ public function testFindNull(): void Query::isNull('nullable'), ]); - $this->assertEquals(5, count($documents)); + $this->assertSame(5, count($documents)); } public function testFindNotNull(): void @@ -3262,7 +3262,7 @@ public function testFindNotNull(): void Query::isNotNull('nullable'), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } public function testFindStartsWith(): void @@ -3274,7 +3274,7 @@ public function testFindStartsWith(): void Query::startsWith('name', 'Work'), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); if ($this->getDatabase()->getAdapter() instanceof SQL) { $documents = $database->find('movies', [ @@ -3286,7 +3286,7 @@ public function testFindStartsWith(): void ]); } - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } public function testFindStartsWithWords(): void @@ -3298,7 +3298,7 @@ public function testFindStartsWithWords(): void Query::startsWith('name', 'Work in Progress'), ]); - $this->assertEquals(2, count($documents)); + $this->assertSame(2, count($documents)); } public function testFindEndsWith(): void @@ -3310,7 +3310,7 @@ public function testFindEndsWith(): void Query::endsWith('name', 'Marvel'), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } public function testFindNotContains(): void @@ -3328,27 +3328,27 @@ public function testFindNotContains(): void Query::notContains('genres', ['comics']) ]); - $this->assertEquals(4, count($documents)); // All movies except the 2 with 'comics' genre + $this->assertSame(4, count($documents)); // All movies except the 2 with 'comics' genre // Test notContains with multiple values (AND logic - exclude documents containing ANY of these) $documents = $database->find('movies', [ Query::notContains('genres', ['comics', 'kids']), ]); - $this->assertEquals(2, count($documents)); // Movies that have neither 'comics' nor 'kids' + $this->assertSame(2, count($documents)); // Movies that have neither 'comics' nor 'kids' // Test notContains with non-existent genre - should return all documents $documents = $database->find('movies', [ Query::notContains('genres', ['non-existent']), ]); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); // Test notContains with string attribute (substring search) $documents = $database->find('movies', [ Query::notContains('name', ['Captain']) ]); - $this->assertEquals(4, count($documents)); // All movies except those containing 'Captain' + $this->assertSame(4, count($documents)); // All movies except those containing 'Captain' // Test notContains combined with other queries (AND logic) $documents = $database->find('movies', [ @@ -3361,7 +3361,7 @@ public function testFindNotContains(): void $documents = $database->find('movies', [ Query::notContains('genres', ['COMICS']) // Different case ]); - $this->assertEquals(6, count($documents)); // All movies since case doesn't match + $this->assertSame(6, count($documents)); // All movies since case doesn't match // Test error handling for invalid attribute type try { @@ -3370,7 +3370,7 @@ public function testFindNotContains(): void ]); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Invalid query: Cannot query notContains on attribute "price" because it is not an array, string, or object.', $e->getMessage()); + $this->assertSame('Invalid query: Cannot query notContains on attribute "price" because it is not an array, string, or object.', $e->getMessage()); $this->assertTrue($e instanceof DatabaseException); } } @@ -3397,14 +3397,14 @@ public function testFindNotSearch(): void Query::notSearch('name', 'captain'), ]); - $this->assertEquals(4, count($documents)); // All movies except the 2 with 'captain' in name + $this->assertSame(4, count($documents)); // All movies except the 2 with 'captain' in name // Test notSearch with term that doesn't exist - should return all documents $documents = $database->find('movies', [ Query::notSearch('name', 'nonexistent'), ]); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); // Test notSearch with partial term if ($this->getDatabase()->getAdapter()->getSupportForFulltextWildCardIndex()) { @@ -3412,14 +3412,14 @@ public function testFindNotSearch(): void Query::notSearch('name', 'cap'), ]); - $this->assertEquals(4, count($documents)); // All movies except those matching 'cap' + $this->assertSame(4, count($documents)); // All movies except those matching 'cap' } // Test notSearch with empty string - should return all documents $documents = $database->find('movies', [ Query::notSearch('name', ''), ]); - $this->assertEquals(6, count($documents)); // All movies since empty search matches nothing + $this->assertSame(6, count($documents)); // All movies since empty search matches nothing // Test notSearch combined with other filters $documents = $database->find('movies', [ @@ -3432,10 +3432,10 @@ public function testFindNotSearch(): void $documents = $database->find('movies', [ Query::notSearch('name', '@#$%'), ]); - $this->assertEquals(6, count($documents)); // All movies since special chars don't match + $this->assertSame(6, count($documents)); // All movies since special chars don't match } - $this->assertEquals(true, true); // Test must do an assertion + $this->assertSame(true, true); // Test must do an assertion } public function testFindNotStartsWith(): void @@ -3448,14 +3448,14 @@ public function testFindNotStartsWith(): void Query::notStartsWith('name', 'Work'), ]); - $this->assertEquals(4, count($documents)); // All movies except the 2 starting with 'Work' + $this->assertSame(4, count($documents)); // All movies except the 2 starting with 'Work' // Test notStartsWith with non-existent prefix - should return all documents $documents = $database->find('movies', [ Query::notStartsWith('name', 'NonExistent'), ]); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); // Test notStartsWith with wildcard characters (should treat them literally) if ($this->getDatabase()->getAdapter() instanceof SQL) { @@ -3468,13 +3468,13 @@ public function testFindNotStartsWith(): void ]); } - $this->assertEquals(6, count($documents)); // Should return all since no movie starts with these patterns + $this->assertSame(6, count($documents)); // Should return all since no movie starts with these patterns // Test notStartsWith with empty string - should return no documents (all strings start with empty) $documents = $database->find('movies', [ Query::notStartsWith('name', ''), ]); - $this->assertEquals(0, count($documents)); // No documents since all strings start with empty string + $this->assertSame(0, count($documents)); // No documents since all strings start with empty string // Test notStartsWith with single character $documents = $database->find('movies', [ @@ -3506,27 +3506,27 @@ public function testFindNotEndsWith(): void Query::notEndsWith('name', 'Marvel'), ]); - $this->assertEquals(5, count($documents)); // All movies except the 1 ending with 'Marvel' + $this->assertSame(5, count($documents)); // All movies except the 1 ending with 'Marvel' // Test notEndsWith with non-existent suffix - should return all documents $documents = $database->find('movies', [ Query::notEndsWith('name', 'NonExistent'), ]); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); // Test notEndsWith with partial suffix $documents = $database->find('movies', [ Query::notEndsWith('name', 'vel'), ]); - $this->assertEquals(5, count($documents)); // All movies except the 1 ending with 'vel' (from 'Marvel') + $this->assertSame(5, count($documents)); // All movies except the 1 ending with 'vel' (from 'Marvel') // Test notEndsWith with empty string - should return no documents (all strings end with empty) $documents = $database->find('movies', [ Query::notEndsWith('name', ''), ]); - $this->assertEquals(0, count($documents)); // No documents since all strings end with empty string + $this->assertSame(0, count($documents)); // No documents since all strings end with empty string // Test notEndsWith with single character $documents = $database->find('movies', [ @@ -3545,7 +3545,7 @@ public function testFindNotEndsWith(): void Query::notEndsWith('name', 'Marvel'), Query::limit(3) ]); - $this->assertEquals(3, count($documents)); // Limited to 3 results + $this->assertSame(3, count($documents)); // Limited to 3 results $this->assertLessThanOrEqual(5, count($documents)); // But still excluding Marvel movies } @@ -3564,7 +3564,7 @@ public function testFindOrderRandom(): void Query::orderRandom(), Query::limit(1), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); $this->assertNotEmpty($documents[0]['name']); // Ensure we got a valid document // Test orderRandom with multiple documents @@ -3572,7 +3572,7 @@ public function testFindOrderRandom(): void Query::orderRandom(), Query::limit(3), ]); - $this->assertEquals(3, count($documents)); + $this->assertSame(3, count($documents)); // Test that orderRandom returns different results (not guaranteed but highly likely) $firstSet = $database->find('movies', [ @@ -3591,8 +3591,8 @@ public function testFindOrderRandom(): void // While not guaranteed to be different, with 6 movies and selecting 3, // the probability of getting the same set in the same order is very low // We'll just check that we got valid results - $this->assertEquals(3, count($firstIds)); - $this->assertEquals(3, count($secondIds)); + $this->assertSame(3, count($firstIds)); + $this->assertSame(3, count($secondIds)); // Test orderRandom with more than available documents $documents = $database->find('movies', [ @@ -3629,31 +3629,31 @@ public function testFindNotBetween(): void $documents = $database->find('movies', [ Query::notBetween('price', 25.94, 25.99), ]); - $this->assertEquals(4, count($documents)); // All movies except the 2 in the price range + $this->assertSame(4, count($documents)); // All movies except the 2 in the price range // Test notBetween with range that includes no documents - should return all documents $documents = $database->find('movies', [ Query::notBetween('price', 30, 35), ]); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); // Test notBetween with date range $documents = $database->find('movies', [ Query::notBetween('$createdAt', '1975-12-06', '2050-12-06'), ]); - $this->assertEquals(0, count($documents)); // No movies outside this wide date range + $this->assertSame(0, count($documents)); // No movies outside this wide date range // Test notBetween with narrower date range $documents = $database->find('movies', [ Query::notBetween('$createdAt', '2000-01-01', '2001-01-01'), ]); - $this->assertEquals(6, count($documents)); // All movies should be outside this narrow range + $this->assertSame(6, count($documents)); // All movies should be outside this narrow range // Test notBetween with updated date range $documents = $database->find('movies', [ Query::notBetween('$updatedAt', '2000-01-01T00:00:00.000+00:00', '2001-01-01T00:00:00.000+00:00'), ]); - $this->assertEquals(6, count($documents)); // All movies should be outside this narrow range + $this->assertSame(6, count($documents)); // All movies should be outside this narrow range // Test notBetween with year range (integer values) $documents = $database->find('movies', [ @@ -3679,7 +3679,7 @@ public function testFindNotBetween(): void Query::orderDesc('year'), Query::limit(2) ]); - $this->assertEquals(2, count($documents)); // Limited results, ordered, excluding price range + $this->assertSame(2, count($documents)); // Limited results, ordered, excluding price range // Test notBetween with extreme ranges $documents = $database->find('movies', [ @@ -3839,7 +3839,7 @@ public function testForeach(): void $database->foreach('movies', queries: [Query::limit(2)], callback: function ($document) use (&$documents) { $documents[] = $document; }); - $this->assertEquals(6, count($documents)); + $this->assertSame(6, count($documents)); /** * Test, foreach with initial cursor @@ -3850,7 +3850,7 @@ public function testForeach(): void $database->foreach('movies', queries: [Query::limit(2), Query::cursorAfter($first)], callback: function ($document) use (&$documents) { $documents[] = $document; }); - $this->assertEquals(5, count($documents)); + $this->assertSame(5, count($documents)); /** * Test, foreach with initial offset @@ -3860,7 +3860,7 @@ public function testForeach(): void $database->foreach('movies', queries: [Query::limit(2), Query::offset(2)], callback: function ($document) use (&$documents) { $documents[] = $document; }); - $this->assertEquals(4, count($documents)); + $this->assertSame(4, count($documents)); /** * Test, cursor before throws error @@ -3872,7 +3872,7 @@ public function testForeach(): void } catch (Throwable $e) { $this->assertInstanceOf(DatabaseException::class, $e); - $this->assertEquals('Cursor ' . Database::CURSOR_BEFORE . ' not supported in this method.', $e->getMessage()); + $this->assertSame('Cursor ' . Database::CURSOR_BEFORE . ' not supported in this method.', $e->getMessage()); } } @@ -3886,27 +3886,27 @@ public function testCount(): void $database = $this->getDatabase(); $count = $database->count('movies'); - $this->assertEquals(6, $count); + $this->assertSame(6, $count); $count = $database->count('movies', [Query::equal('year', [2019])]); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); $count = $database->count('movies', [Query::equal('with-dash', ['Works'])]); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); $count = $database->count('movies', [Query::equal('with-dash', ['Works2', 'Works3'])]); - $this->assertEquals(4, $count); + $this->assertSame(4, $count); $this->getDatabase()->getAuthorization()->removeRole('user:x'); $count = $database->count('movies'); - $this->assertEquals(5, $count); + $this->assertSame(5, $count); $this->getDatabase()->getAuthorization()->disable(); $count = $database->count('movies'); - $this->assertEquals(6, $count); + $this->assertSame(6, $count); $this->getDatabase()->getAuthorization()->reset(); $this->getDatabase()->getAuthorization()->disable(); $count = $database->count('movies', [], 3); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); $this->getDatabase()->getAuthorization()->reset(); /** @@ -3917,7 +3917,7 @@ public function testCount(): void Query::equal('director', ['TBD', 'Joe Johnston']), Query::equal('year', [2025]), ]); - $this->assertEquals(1, $count); + $this->assertSame(1, $count); $this->getDatabase()->getAuthorization()->reset(); } @@ -3932,27 +3932,27 @@ public function testSum(): void $this->getDatabase()->getAuthorization()->addRole('user:x'); $sum = $database->sum('movies', 'year', [Query::equal('year', [2019]),]); - $this->assertEquals(2019 + 2019, $sum); + $this->assertSame(2019 + 2019, $sum); $sum = $database->sum('movies', 'year'); - $this->assertEquals(2013 + 2019 + 2011 + 2019 + 2025 + 2026, $sum); + $this->assertSame(2013 + 2019 + 2011 + 2019 + 2025 + 2026, $sum); $sum = $database->sum('movies', 'price', [Query::equal('year', [2019]),]); - $this->assertEquals(round(39.50 + 25.99, 2), round($sum, 2)); + $this->assertSame(round(39.50 + 25.99, 2), round($sum, 2)); $sum = $database->sum('movies', 'price', [Query::equal('year', [2019]),]); - $this->assertEquals(round(39.50 + 25.99, 2), round($sum, 2)); + $this->assertSame(round(39.50 + 25.99, 2), round($sum, 2)); $sum = $database->sum('movies', 'year', [Query::equal('year', [2019])], 1); - $this->assertEquals(2019, $sum); + $this->assertSame(2019, $sum); $this->getDatabase()->getAuthorization()->removeRole('user:x'); $sum = $database->sum('movies', 'year', [Query::equal('year', [2019]),]); - $this->assertEquals(2019 + 2019, $sum); + $this->assertSame(2019 + 2019, $sum); $sum = $database->sum('movies', 'year'); - $this->assertEquals(2013 + 2019 + 2011 + 2019 + 2025, $sum); + $this->assertSame(2013 + 2019 + 2011 + 2019 + 2025, $sum); $sum = $database->sum('movies', 'price', [Query::equal('year', [2019]),]); - $this->assertEquals(round(39.50 + 25.99, 2), round($sum, 2)); + $this->assertSame(round(39.50 + 25.99, 2), round($sum, 2)); $sum = $database->sum('movies', 'price', [Query::equal('year', [2019]),]); - $this->assertEquals(round(39.50 + 25.99, 2), round($sum, 2)); + $this->assertSame(round(39.50 + 25.99, 2), round($sum, 2)); } public function testEncodeDecode(): void @@ -4151,51 +4151,51 @@ public function testEncodeDecode(): void $result = $database->encode($collection, $document); - $this->assertEquals('608fdbe51361a', $result->getAttribute('$id')); + $this->assertSame('608fdbe51361a', $result->getAttribute('$id')); $this->assertContains('read("any")', $result->getAttribute('$permissions')); $this->assertContains('read("any")', $result->getPermissions()); $this->assertContains('any', $result->getRead()); $this->assertContains(Permission::create(Role::user(ID::custom('608fdbe51361a'))), $result->getPermissions()); $this->assertContains('user:608fdbe51361a', $result->getCreate()); $this->assertContains('user:608fdbe51361a', $result->getWrite()); - $this->assertEquals('test@example.com', $result->getAttribute('email')); - $this->assertEquals(false, $result->getAttribute('emailVerification')); - $this->assertEquals(1, $result->getAttribute('status')); - $this->assertEquals('randomhash', $result->getAttribute('password')); - $this->assertEquals('2000-06-12 14:12:55.000', $result->getAttribute('passwordUpdate')); - $this->assertEquals('1975-06-12 13:12:55.000', $result->getAttribute('registration')); - $this->assertEquals(false, $result->getAttribute('reset')); - $this->assertEquals('My Name', $result->getAttribute('name')); - $this->assertEquals('{}', $result->getAttribute('prefs')); - $this->assertEquals('[]', $result->getAttribute('sessions')); - $this->assertEquals('[]', $result->getAttribute('tokens')); - $this->assertEquals('[]', $result->getAttribute('memberships')); - $this->assertEquals(['admin', 'developer', 'tester',], $result->getAttribute('roles')); - $this->assertEquals(['{"$id":"1","label":"x"}', '{"$id":"2","label":"y"}', '{"$id":"3","label":"z"}',], $result->getAttribute('tags')); + $this->assertSame('test@example.com', $result->getAttribute('email')); + $this->assertSame(false, $result->getAttribute('emailVerification')); + $this->assertSame(1, $result->getAttribute('status')); + $this->assertSame('randomhash', $result->getAttribute('password')); + $this->assertSame('2000-06-12 14:12:55.000', $result->getAttribute('passwordUpdate')); + $this->assertSame('1975-06-12 13:12:55.000', $result->getAttribute('registration')); + $this->assertSame(false, $result->getAttribute('reset')); + $this->assertSame('My Name', $result->getAttribute('name')); + $this->assertSame('{}', $result->getAttribute('prefs')); + $this->assertSame('[]', $result->getAttribute('sessions')); + $this->assertSame('[]', $result->getAttribute('tokens')); + $this->assertSame('[]', $result->getAttribute('memberships')); + $this->assertSame(['admin', 'developer', 'tester',], $result->getAttribute('roles')); + $this->assertSame(['{"$id":"1","label":"x"}', '{"$id":"2","label":"y"}', '{"$id":"3","label":"z"}',], $result->getAttribute('tags')); $result = $database->decode($collection, $document); - $this->assertEquals('608fdbe51361a', $result->getAttribute('$id')); + $this->assertSame('608fdbe51361a', $result->getAttribute('$id')); $this->assertContains('read("any")', $result->getAttribute('$permissions')); $this->assertContains('read("any")', $result->getPermissions()); $this->assertContains('any', $result->getRead()); $this->assertContains(Permission::create(Role::user('608fdbe51361a')), $result->getPermissions()); $this->assertContains('user:608fdbe51361a', $result->getCreate()); $this->assertContains('user:608fdbe51361a', $result->getWrite()); - $this->assertEquals('test@example.com', $result->getAttribute('email')); - $this->assertEquals(false, $result->getAttribute('emailVerification')); - $this->assertEquals(1, $result->getAttribute('status')); - $this->assertEquals('randomhash', $result->getAttribute('password')); - $this->assertEquals('2000-06-12T14:12:55.000+00:00', $result->getAttribute('passwordUpdate')); - $this->assertEquals('1975-06-12T13:12:55.000+00:00', $result->getAttribute('registration')); - $this->assertEquals(false, $result->getAttribute('reset')); - $this->assertEquals('My Name', $result->getAttribute('name')); - $this->assertEquals([], $result->getAttribute('prefs')); - $this->assertEquals([], $result->getAttribute('sessions')); - $this->assertEquals([], $result->getAttribute('tokens')); - $this->assertEquals([], $result->getAttribute('memberships')); - $this->assertEquals(['admin', 'developer', 'tester',], $result->getAttribute('roles')); - $this->assertEquals([ + $this->assertSame('test@example.com', $result->getAttribute('email')); + $this->assertSame(false, $result->getAttribute('emailVerification')); + $this->assertSame(1, $result->getAttribute('status')); + $this->assertSame('randomhash', $result->getAttribute('password')); + $this->assertSame('2000-06-12T14:12:55.000+00:00', $result->getAttribute('passwordUpdate')); + $this->assertSame('1975-06-12T13:12:55.000+00:00', $result->getAttribute('registration')); + $this->assertSame(false, $result->getAttribute('reset')); + $this->assertSame('My Name', $result->getAttribute('name')); + $this->assertSame([], $result->getAttribute('prefs')); + $this->assertSame([], $result->getAttribute('sessions')); + $this->assertSame([], $result->getAttribute('tokens')); + $this->assertSame([], $result->getAttribute('memberships')); + $this->assertSame(['admin', 'developer', 'tester',], $result->getAttribute('roles')); + $this->assertSame([ new Document(['$id' => '1', 'label' => 'x']), new Document(['$id' => '2', 'label' => 'y']), new Document(['$id' => '3', 'label' => 'z']), @@ -4220,20 +4220,20 @@ public function testUpdateDocument(Document $document): Document $this->assertNotEmpty($new->getId()); $this->assertIsString($new->getAttribute('string')); - $this->assertEquals('text📝 updated', $new->getAttribute('string')); + $this->assertSame('text📝 updated', $new->getAttribute('string')); $this->assertIsInt($new->getAttribute('integer_signed')); - $this->assertEquals(-6, $new->getAttribute('integer_signed')); + $this->assertSame(-6, $new->getAttribute('integer_signed')); $this->assertIsInt($new->getAttribute('integer_unsigned')); - $this->assertEquals(6, $new->getAttribute('integer_unsigned')); + $this->assertSame(6, $new->getAttribute('integer_unsigned')); $this->assertIsFloat($new->getAttribute('float_signed')); - $this->assertEquals(-5.56, $new->getAttribute('float_signed')); + $this->assertSame(-5.56, $new->getAttribute('float_signed')); $this->assertIsFloat($new->getAttribute('float_unsigned')); - $this->assertEquals(5.56, $new->getAttribute('float_unsigned')); + $this->assertSame(5.56, $new->getAttribute('float_unsigned')); $this->assertIsBool($new->getAttribute('boolean')); - $this->assertEquals(false, $new->getAttribute('boolean')); + $this->assertSame(false, $new->getAttribute('boolean')); $this->assertIsArray($new->getAttribute('colors')); - $this->assertEquals(['pink', 'green', 'blue', 'red'], $new->getAttribute('colors')); - $this->assertEquals('Works', $new->getAttribute('with-dash')); + $this->assertSame(['pink', 'green', 'blue', 'red'], $new->getAttribute('colors')); + $this->assertSame('Works', $new->getAttribute('with-dash')); $oldPermissions = $document->getPermissions(); @@ -4270,12 +4270,12 @@ public function testUpdateDocument(Document $document): Document $newId = 'new-id'; $new->setAttribute('$id', $newId); $new = $this->getDatabase()->updateDocument($new->getCollection(), $id, $new); - $this->assertEquals($newId, $new->getId()); + $this->assertSame($newId, $new->getId()); // Reset ID $new->setAttribute('$id', $id); $new = $this->getDatabase()->updateDocument($new->getCollection(), $newId, $new); - $this->assertEquals($id, $new->getId()); + $this->assertSame($id, $new->getId()); return $document; } @@ -4290,7 +4290,7 @@ public function testUpdateDocumentConflict(Document $document): void $result = $this->getDatabase()->withRequestTimestamp(new \DateTime(), function () use ($document) { return $this->getDatabase()->updateDocument($document->getCollection(), $document->getId(), $document); }); - $this->assertEquals(7, $result->getAttribute('integer_signed')); + $this->assertSame(7, $result->getAttribute('integer_signed')); $oneHourAgo = (new \DateTime())->sub(new \DateInterval('PT1H')); $document->setAttribute('integer_signed', 8); @@ -4301,7 +4301,7 @@ public function testUpdateDocumentConflict(Document $document): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { $this->assertTrue($e instanceof ConflictException); - $this->assertEquals('Document was updated after the request timestamp', $e->getMessage()); + $this->assertSame('Document was updated after the request timestamp', $e->getMessage()); } } @@ -4348,8 +4348,8 @@ public function testDeleteDocument(Document $document): void $result = $this->getDatabase()->deleteDocument($document->getCollection(), $document->getId()); $document = $this->getDatabase()->getDocument($document->getCollection(), $document->getId()); - $this->assertEquals(true, $result); - $this->assertEquals(true, $document->isEmpty()); + $this->assertSame(true, $result); + $this->assertSame(true, $document->isEmpty()); } public function testUpdateDocuments(): void @@ -4414,10 +4414,10 @@ public function testUpdateDocuments(): void $results[] = $doc; }); - $this->assertEquals(5, $count); + $this->assertSame(5, $count); foreach ($results as $document) { - $this->assertEquals('text📝 updated', $document->getAttribute('string')); + $this->assertSame('text📝 updated', $document->getAttribute('string')); } $updatedDocuments = $database->find($collection, [ @@ -4427,7 +4427,7 @@ public function testUpdateDocuments(): void $this->assertCount(5, $updatedDocuments); foreach ($updatedDocuments as $document) { - $this->assertEquals('text📝 updated', $document->getAttribute('string')); + $this->assertSame('text📝 updated', $document->getAttribute('string')); $this->assertGreaterThanOrEqual(5, $document->getAttribute('integer')); } @@ -4435,23 +4435,23 @@ public function testUpdateDocuments(): void Query::lessThan('integer', 5), ]); - $this->assertEquals(count($controlDocuments), 5); + $this->assertSame(count($controlDocuments), 5); foreach ($controlDocuments as $document) { $this->assertNotEquals('text📝 updated', $document->getAttribute('string')); } // Test Update all documents - $this->assertEquals(10, $database->updateDocuments($collection, new Document([ + $this->assertSame(10, $database->updateDocuments($collection, new Document([ 'string' => 'text📝 updated all', ]))); $updatedDocuments = $database->find($collection); - $this->assertEquals(count($updatedDocuments), 10); + $this->assertSame(count($updatedDocuments), 10); foreach ($updatedDocuments as $document) { - $this->assertEquals('text📝 updated all', $document->getAttribute('string')); + $this->assertSame('text📝 updated all', $document->getAttribute('string')); } // TEST: Can't delete documents in the past @@ -4465,7 +4465,7 @@ public function testUpdateDocuments(): void }); $this->fail('Failed to throw exception'); } catch (ConflictException $e) { - $this->assertEquals('Document was updated after the request timestamp', $e->getMessage()); + $this->assertSame('Document was updated after the request timestamp', $e->getMessage()); } // Check collection level permissions @@ -4532,14 +4532,14 @@ public function testUpdateDocuments(): void }); // Test we can update more documents than batchSize - $this->assertEquals(10, $database->updateDocuments($collection, new Document([ + $this->assertSame(10, $database->updateDocuments($collection, new Document([ 'string' => 'batchSize Test' ]), batchSize: 2)); $documents = $database->find($collection); foreach ($documents as $document) { - $this->assertEquals('batchSize Test', $document->getAttribute('string')); + $this->assertSame('batchSize Test', $document->getAttribute('string')); } $this->getDatabase()->getAuthorization()->cleanRoles(); @@ -4611,7 +4611,7 @@ public function testUpdateDocumentsWithCallbackSupport(): void }); } catch (Exception $e) { $this->assertInstanceOf(Exception::class, $e); - $this->assertEquals("Error thrown to test that update doesn't stop and error is caught", $e->getMessage()); + $this->assertSame("Error thrown to test that update doesn't stop and error is caught", $e->getMessage()); } // Test Update half of the documents @@ -4625,13 +4625,13 @@ public function testUpdateDocumentsWithCallbackSupport(): void throw new Exception("Error thrown to test that update doesn't stop and error is caught"); }, onError:function ($e) { $this->assertInstanceOf(Exception::class, $e); - $this->assertEquals("Error thrown to test that update doesn't stop and error is caught", $e->getMessage()); + $this->assertSame("Error thrown to test that update doesn't stop and error is caught", $e->getMessage()); }); - $this->assertEquals(5, $count); + $this->assertSame(5, $count); foreach ($results as $document) { - $this->assertEquals('text📝 updated', $document->getAttribute('string')); + $this->assertSame('text📝 updated', $document->getAttribute('string')); } $updatedDocuments = $database->find($collection, [ @@ -4670,12 +4670,12 @@ public function testReadPermissionsSuccess(Document $document): Document 'colors' => ['pink', 'green', 'blue'], ])); - $this->assertEquals(false, $document->isEmpty()); + $this->assertSame(false, $document->isEmpty()); $this->getDatabase()->getAuthorization()->cleanRoles(); $document = $database->getDocument($document->getCollection(), $document->getId()); - $this->assertEquals(true, $document->isEmpty()); + $this->assertSame(true, $document->isEmpty()); $this->getDatabase()->getAuthorization()->addRole(Role::any()->toString()); @@ -4773,7 +4773,7 @@ public function testUniqueIndexDuplicate(): void /** @var Database $database */ $database = $this->getDatabase(); - $this->assertEquals(true, $database->createIndex('movies', 'uniqueIndex', Database::INDEX_UNIQUE, ['name'], [128], [Database::ORDER_ASC])); + $this->assertSame(true, $database->createIndex('movies', 'uniqueIndex', Database::INDEX_UNIQUE, ['name'], [128], [Database::ORDER_ASC])); try { $database->createDocument('movies', new Document([ @@ -4926,10 +4926,10 @@ public function testDeleteBulkDocuments(): void batchSize: 1 ); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); // TEST: Bulk Delete All Documents - $this->assertEquals(8, $database->deleteDocuments('bulk_delete')); + $this->assertSame(8, $database->deleteDocuments('bulk_delete')); $docs = $database->find('bulk_delete'); $this->assertCount(0, $docs); @@ -4944,14 +4944,14 @@ public function testDeleteBulkDocuments(): void $results[] = $doc; }); - $this->assertEquals(5, $count); + $this->assertSame(5, $count); foreach ($results as $document) { $this->assertGreaterThanOrEqual(5, $document->getAttribute('integer')); } $docs = $database->find('bulk_delete'); - $this->assertEquals(5, \count($docs)); + $this->assertSame(5, \count($docs)); // TEST (FAIL): Can't delete documents in the past $oneHourAgo = (new \DateTime())->sub(new \DateInterval('PT1H')); @@ -4962,7 +4962,7 @@ public function testDeleteBulkDocuments(): void }); $this->fail('Failed to throw exception'); } catch (ConflictException $e) { - $this->assertEquals('Document was updated after the request timestamp', $e->getMessage()); + $this->assertSame('Document was updated after the request timestamp', $e->getMessage()); } // TEST (FAIL): Bulk delete all documents with invalid collection permission @@ -4979,8 +4979,8 @@ public function testDeleteBulkDocuments(): void Permission::delete(Role::any()) ], false); - $this->assertEquals(5, $database->deleteDocuments('bulk_delete')); - $this->assertEquals(0, \count($this->getDatabase()->find('bulk_delete'))); + $this->assertSame(5, $database->deleteDocuments('bulk_delete')); + $this->assertSame(0, \count($this->getDatabase()->find('bulk_delete'))); // TEST: Make sure we can't delete documents we don't have permissions for $database->updateCollection('bulk_delete', [ @@ -4988,13 +4988,13 @@ public function testDeleteBulkDocuments(): void ], true); $this->propagateBulkDocuments('bulk_delete', documentSecurity: true); - $this->assertEquals(0, $database->deleteDocuments('bulk_delete')); + $this->assertSame(0, $database->deleteDocuments('bulk_delete')); $documents = $this->getDatabase()->getAuthorization()->skip(function () use ($database) { return $database->find('bulk_delete'); }); - $this->assertEquals(10, \count($documents)); + $this->assertSame(10, \count($documents)); $database->updateCollection('bulk_delete', [ Permission::create(Role::any()), @@ -5004,7 +5004,7 @@ public function testDeleteBulkDocuments(): void $database->deleteDocuments('bulk_delete'); - $this->assertEquals(0, \count($this->getDatabase()->find('bulk_delete'))); + $this->assertSame(0, \count($this->getDatabase()->find('bulk_delete'))); // Teardown $database->deleteCollection('bulk_delete'); @@ -5047,30 +5047,30 @@ public function testDeleteBulkDocumentsQueries(): void // Test limit $this->propagateBulkDocuments('bulk_delete_queries'); - $this->assertEquals(5, $database->deleteDocuments('bulk_delete_queries', [Query::limit(5)])); - $this->assertEquals(5, \count($database->find('bulk_delete_queries'))); + $this->assertSame(5, $database->deleteDocuments('bulk_delete_queries', [Query::limit(5)])); + $this->assertSame(5, \count($database->find('bulk_delete_queries'))); - $this->assertEquals(5, $database->deleteDocuments('bulk_delete_queries', [Query::limit(5)])); - $this->assertEquals(0, \count($database->find('bulk_delete_queries'))); + $this->assertSame(5, $database->deleteDocuments('bulk_delete_queries', [Query::limit(5)])); + $this->assertSame(0, \count($database->find('bulk_delete_queries'))); // Test Limit more than batchSize $this->propagateBulkDocuments('bulk_delete_queries', Database::DELETE_BATCH_SIZE * 2); - $this->assertEquals(Database::DELETE_BATCH_SIZE * 2, \count($database->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]))); - $this->assertEquals(Database::DELETE_BATCH_SIZE + 2, $database->deleteDocuments('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE + 2)])); - $this->assertEquals(Database::DELETE_BATCH_SIZE - 2, \count($database->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]))); - $this->assertEquals(Database::DELETE_BATCH_SIZE - 2, $this->getDatabase()->deleteDocuments('bulk_delete_queries')); + $this->assertSame(Database::DELETE_BATCH_SIZE * 2, \count($database->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]))); + $this->assertSame(Database::DELETE_BATCH_SIZE + 2, $database->deleteDocuments('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE + 2)])); + $this->assertSame(Database::DELETE_BATCH_SIZE - 2, \count($database->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]))); + $this->assertSame(Database::DELETE_BATCH_SIZE - 2, $this->getDatabase()->deleteDocuments('bulk_delete_queries')); // Test Offset $this->propagateBulkDocuments('bulk_delete_queries', 100); - $this->assertEquals(50, $database->deleteDocuments('bulk_delete_queries', [Query::offset(50)])); + $this->assertSame(50, $database->deleteDocuments('bulk_delete_queries', [Query::offset(50)])); $docs = $database->find('bulk_delete_queries', [Query::limit(100)]); - $this->assertEquals(50, \count($docs)); + $this->assertSame(50, \count($docs)); $lastDoc = \end($docs); $this->assertNotEmpty($lastDoc); - $this->assertEquals('doc49', $lastDoc->getId()); - $this->assertEquals(50, $database->deleteDocuments('bulk_delete_queries')); + $this->assertSame('doc49', $lastDoc->getId()); + $this->assertSame(50, $database->deleteDocuments('bulk_delete_queries')); $database->deleteCollection('bulk_delete_queries'); } @@ -5137,7 +5137,7 @@ public function testDeleteBulkDocumentsWithCallbackSupport(): void ); } catch (Exception $e) { $this->assertInstanceOf(Exception::class, $e); - $this->assertEquals("Error thrown to test that deletion doesn't stop and error is caught", $e->getMessage()); + $this->assertSame("Error thrown to test that deletion doesn't stop and error is caught", $e->getMessage()); } $docs = $database->find('bulk_delete_with_callback'); @@ -5160,14 +5160,14 @@ public function testDeleteBulkDocumentsWithCallbackSupport(): void }, onError:function ($e) { $this->assertInstanceOf(Exception::class, $e); - $this->assertEquals("Error thrown to test that deletion doesn't stop and error is caught", $e->getMessage()); + $this->assertSame("Error thrown to test that deletion doesn't stop and error is caught", $e->getMessage()); } ); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); // TEST: Bulk Delete All Documents without passing callbacks - $this->assertEquals(8, $database->deleteDocuments('bulk_delete_with_callback')); + $this->assertSame(8, $database->deleteDocuments('bulk_delete_with_callback')); $docs = $database->find('bulk_delete_with_callback'); $this->assertCount(0, $docs); @@ -5183,17 +5183,17 @@ public function testDeleteBulkDocumentsWithCallbackSupport(): void throw new Exception("Error thrown to test that deletion doesn't stop and error is caught"); }, onError:function ($e) { $this->assertInstanceOf(Exception::class, $e); - $this->assertEquals("Error thrown to test that deletion doesn't stop and error is caught", $e->getMessage()); + $this->assertSame("Error thrown to test that deletion doesn't stop and error is caught", $e->getMessage()); }); - $this->assertEquals(5, $count); + $this->assertSame(5, $count); foreach ($results as $document) { $this->assertGreaterThanOrEqual(5, $document->getAttribute('integer')); } $docs = $database->find('bulk_delete_with_callback'); - $this->assertEquals(5, \count($docs)); + $this->assertSame(5, \count($docs)); // Teardown $database->deleteCollection('bulk_delete_with_callback'); @@ -5234,17 +5234,17 @@ public function testUpdateDocumentsQueries(): void // Test limit $this->propagateBulkDocuments($collection, 100); - $this->assertEquals(10, $database->updateDocuments($collection, new Document([ + $this->assertSame(10, $database->updateDocuments($collection, new Document([ 'text' => 'text📝 updated', ]), [Query::limit(10)])); - $this->assertEquals(10, \count($database->find($collection, [Query::equal('text', ['text📝 updated'])]))); - $this->assertEquals(100, $database->deleteDocuments($collection)); - $this->assertEquals(0, \count($database->find($collection))); + $this->assertSame(10, \count($database->find($collection, [Query::equal('text', ['text📝 updated'])]))); + $this->assertSame(100, $database->deleteDocuments($collection)); + $this->assertSame(0, \count($database->find($collection))); // Test Offset $this->propagateBulkDocuments($collection, 100); - $this->assertEquals(50, $database->updateDocuments($collection, new Document([ + $this->assertSame(50, $database->updateDocuments($collection, new Document([ 'text' => 'text📝 updated', ]), [ Query::offset(50), @@ -5255,9 +5255,9 @@ public function testUpdateDocumentsQueries(): void $lastDoc = end($docs); $this->assertNotEmpty($lastDoc); - $this->assertEquals('doc99', $lastDoc->getId()); + $this->assertSame('doc99', $lastDoc->getId()); - $this->assertEquals(100, $database->deleteDocuments($collection)); + $this->assertSame(100, $database->deleteDocuments($collection)); } /** @@ -5403,7 +5403,7 @@ public function testEmptyTenant(): void $document = $documents[0]; $doc = $database->getDocument($document->getCollection(), $document->getId()); - $this->assertEquals($document->getTenant(), $doc->getTenant()); + $this->assertSame($document->getTenant(), $doc->getTenant()); return; } @@ -5437,7 +5437,7 @@ public function testEmptyOperatorValues(): void $this->fail('Failed to throw exception'); } catch (Exception $e) { $this->assertInstanceOf(Exception::class, $e); - $this->assertEquals('Invalid query: Equal queries require at least one value.', $e->getMessage()); + $this->assertSame('Invalid query: Equal queries require at least one value.', $e->getMessage()); } try { @@ -5447,7 +5447,7 @@ public function testEmptyOperatorValues(): void $this->fail('Failed to throw exception'); } catch (Exception $e) { $this->assertInstanceOf(Exception::class, $e); - $this->assertEquals('Invalid query: Contains queries require at least one value.', $e->getMessage()); + $this->assertSame('Invalid query: Contains queries require at least one value.', $e->getMessage()); } } @@ -5459,8 +5459,8 @@ public function testDateTimeDocument(): void $database = $this->getDatabase(); $collection = 'create_modify_dates'; $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); - $this->assertEquals(true, $database->createAttribute($collection, 'datetime', Database::VAR_DATETIME, 0, false, null, true, false, null, [], ['datetime'])); + $this->assertSame(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); + $this->assertSame(true, $database->createAttribute($collection, 'datetime', Database::VAR_DATETIME, 0, false, null, true, false, null, [], ['datetime'])); $date = '2000-01-01T10:00:00.000+00:00'; // test - default behaviour of external datetime attribute not changed @@ -5486,13 +5486,13 @@ public function testDateTimeDocument(): void '$createdAt' => $date ])); - $this->assertEquals($doc->getAttribute('$createdAt'), $date); + $this->assertSame($doc->getAttribute('$createdAt'), $date); $this->assertNotEmpty($doc->getAttribute('$updatedAt')); $this->assertNotEquals($doc->getAttribute('$updatedAt'), $date); $doc = $database->getDocument($collection, 'doc2'); - $this->assertEquals($doc->getAttribute('$createdAt'), $date); + $this->assertSame($doc->getAttribute('$createdAt'), $date); $this->assertNotEmpty($doc->getAttribute('$updatedAt')); $this->assertNotEquals($doc->getAttribute('$updatedAt'), $date); @@ -5506,7 +5506,7 @@ public function testSingleDocumentDateOperations(): void $database = $this->getDatabase(); $collection = 'normal_date_operations'; $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); + $this->assertSame(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); $database->setPreserveDates(true); @@ -5523,7 +5523,7 @@ public function testSingleDocumentDateOperations(): void '$createdAt' => $createDate ])); - $this->assertEquals($createDate, $doc->getAttribute('$createdAt')); + $this->assertSame($createDate, $doc->getAttribute('$createdAt')); $this->assertNotEquals($createDate, $doc->getAttribute('$updatedAt')); // Update with custom updatedAt @@ -5531,8 +5531,8 @@ public function testSingleDocumentDateOperations(): void $doc->setAttribute('$updatedAt', $updateDate); $updatedDoc = $database->updateDocument($collection, 'doc1', $doc); - $this->assertEquals($createDate, $updatedDoc->getAttribute('$createdAt')); - $this->assertEquals($updateDate, $updatedDoc->getAttribute('$updatedAt')); + $this->assertSame($createDate, $updatedDoc->getAttribute('$createdAt')); + $this->assertSame($updateDate, $updatedDoc->getAttribute('$updatedAt')); // Test 2: Create with both custom dates $doc2 = $database->createDocument($collection, new Document([ @@ -5543,8 +5543,8 @@ public function testSingleDocumentDateOperations(): void '$updatedAt' => $updateDate ])); - $this->assertEquals($createDate, $doc2->getAttribute('$createdAt')); - $this->assertEquals($updateDate, $doc2->getAttribute('$updatedAt')); + $this->assertSame($createDate, $doc2->getAttribute('$createdAt')); + $this->assertSame($updateDate, $doc2->getAttribute('$updatedAt')); // Test 3: Create without dates, then update with custom dates $doc3 = $database->createDocument($collection, new Document([ @@ -5559,8 +5559,8 @@ public function testSingleDocumentDateOperations(): void $doc3->setAttribute('$updatedAt', $updateDate); $updatedDoc3 = $database->updateDocument($collection, 'doc3', $doc3); - $this->assertEquals($createDate, $updatedDoc3->getAttribute('$createdAt')); - $this->assertEquals($updateDate, $updatedDoc3->getAttribute('$updatedAt')); + $this->assertSame($createDate, $updatedDoc3->getAttribute('$createdAt')); + $this->assertSame($updateDate, $updatedDoc3->getAttribute('$updatedAt')); // Test 4: Update only createdAt $doc4 = $database->createDocument($collection, new Document([ @@ -5576,7 +5576,7 @@ public function testSingleDocumentDateOperations(): void $doc4->setAttribute('$createdAt', null); $updatedDoc4 = $database->updateDocument($collection, 'doc4', document: $doc4); - $this->assertEquals($originalCreatedAt4, $updatedDoc4->getAttribute('$createdAt')); + $this->assertSame($originalCreatedAt4, $updatedDoc4->getAttribute('$createdAt')); $this->assertNotEquals($originalUpdatedAt4, $updatedDoc4->getAttribute('$updatedAt')); // Test 5: Update only updatedAt @@ -5584,8 +5584,8 @@ public function testSingleDocumentDateOperations(): void $updatedDoc4->setAttribute('$createdAt', $createDate); $finalDoc4 = $database->updateDocument($collection, 'doc4', $updatedDoc4); - $this->assertEquals($createDate, $finalDoc4->getAttribute('$createdAt')); - $this->assertEquals($updateDate, $finalDoc4->getAttribute('$updatedAt')); + $this->assertSame($createDate, $finalDoc4->getAttribute('$createdAt')); + $this->assertSame($updateDate, $finalDoc4->getAttribute('$updatedAt')); // Test 6: Create with updatedAt, update with createdAt $doc5 = $database->createDocument($collection, new Document([ @@ -5596,14 +5596,14 @@ public function testSingleDocumentDateOperations(): void ])); $this->assertNotEquals($date2, $doc5->getAttribute('$createdAt')); - $this->assertEquals($date2, $doc5->getAttribute('$updatedAt')); + $this->assertSame($date2, $doc5->getAttribute('$updatedAt')); $doc5->setAttribute('string', 'doc5_updated'); $doc5->setAttribute('$createdAt', $date1); $updatedDoc5 = $database->updateDocument($collection, 'doc5', $doc5); - $this->assertEquals($date1, $updatedDoc5->getAttribute('$createdAt')); - $this->assertEquals($date2, $updatedDoc5->getAttribute('$updatedAt')); + $this->assertSame($date1, $updatedDoc5->getAttribute('$createdAt')); + $this->assertSame($date2, $updatedDoc5->getAttribute('$updatedAt')); // Test 7: Create with both dates, update with different dates $doc6 = $database->createDocument($collection, new Document([ @@ -5614,16 +5614,16 @@ public function testSingleDocumentDateOperations(): void '$updatedAt' => $date2 ])); - $this->assertEquals($date1, $doc6->getAttribute('$createdAt')); - $this->assertEquals($date2, $doc6->getAttribute('$updatedAt')); + $this->assertSame($date1, $doc6->getAttribute('$createdAt')); + $this->assertSame($date2, $doc6->getAttribute('$updatedAt')); $doc6->setAttribute('string', 'doc6_updated'); $doc6->setAttribute('$createdAt', $date3); $doc6->setAttribute('$updatedAt', $date3); $updatedDoc6 = $database->updateDocument($collection, 'doc6', $doc6); - $this->assertEquals($date3, $updatedDoc6->getAttribute('$createdAt')); - $this->assertEquals($date3, $updatedDoc6->getAttribute('$updatedAt')); + $this->assertSame($date3, $updatedDoc6->getAttribute('$createdAt')); + $this->assertSame($date3, $updatedDoc6->getAttribute('$updatedAt')); // Test 8: Preserve dates disabled $database->setPreserveDates(false); @@ -5677,7 +5677,7 @@ public function testBulkDocumentDateOperations(): void $database = $this->getDatabase(); $collection = 'bulk_date_operations'; $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); + $this->assertSame(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); $database->setPreserveDates(true); @@ -5730,12 +5730,12 @@ public function testBulkDocumentDateOperations(): void // Verify initial state foreach (['doc1', 'doc3'] as $id) { $doc = $database->getDocument($collection, $id); - $this->assertEquals($createDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); + $this->assertSame($createDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); } foreach (['doc2', 'doc3'] as $id) { $doc = $database->getDocument($collection, $id); - $this->assertEquals($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); + $this->assertSame($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); } foreach (['doc4', 'doc5', 'doc6'] as $id) { @@ -5757,19 +5757,19 @@ public function testBulkDocumentDateOperations(): void $count = $database->updateDocuments($collection, $updateDoc, [ Query::equal('$id', $ids) ]); - $this->assertEquals(6, $count); + $this->assertSame(6, $count); foreach (['doc1', 'doc3'] as $id) { $doc = $database->getDocument($collection, $id); - $this->assertEquals($createDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); - $this->assertEquals($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); - $this->assertEquals('updated', $doc->getAttribute('string'), "string mismatch for $id"); + $this->assertSame($createDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); + $this->assertSame($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); + $this->assertSame('updated', $doc->getAttribute('string'), "string mismatch for $id"); } foreach (['doc2', 'doc4','doc5','doc6'] as $id) { $doc = $database->getDocument($collection, $id); - $this->assertEquals($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); - $this->assertEquals('updated', $doc->getAttribute('string'), "string mismatch for $id"); + $this->assertSame($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); + $this->assertSame('updated', $doc->getAttribute('string'), "string mismatch for $id"); } // Test 3: Bulk update with preserve dates disabled @@ -5783,7 +5783,7 @@ public function testBulkDocumentDateOperations(): void ]); $countDisabled = $database->updateDocuments($collection, $updateDocDisabled); - $this->assertEquals(6, $countDisabled); + $this->assertSame(6, $countDisabled); // Test 4: Bulk update with preserve dates re-enabled $database->setPreserveDates(true); @@ -5796,7 +5796,7 @@ public function testBulkDocumentDateOperations(): void ]); $countEnabled = $database->updateDocuments($collection, $updateDocEnabled); - $this->assertEquals(6, $countEnabled); + $this->assertSame(6, $countEnabled); $database->setPreserveDates(false); $database->deleteCollection($collection); @@ -5814,7 +5814,7 @@ public function testUpsertDateOperations(): void $collection = 'upsert_date_operations'; $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); + $this->assertSame(true, $database->createAttribute($collection, 'string', Database::VAR_STRING, 128, false)); $database->setPreserveDates(true); @@ -5839,7 +5839,7 @@ public function testUpsertDateOperations(): void }); $upsertDoc1 = $upsertResults[0]; - $this->assertEquals($createDate, $upsertDoc1->getAttribute('$createdAt')); + $this->assertSame($createDate, $upsertDoc1->getAttribute('$createdAt')); $this->assertNotEquals($createDate, $upsertDoc1->getAttribute('$updatedAt')); // Test 2: Upsert existing document with custom updatedAt @@ -5851,8 +5851,8 @@ public function testUpsertDateOperations(): void }); $updatedUpsertDoc1 = $updatedUpsertResults[0]; - $this->assertEquals($createDate, $updatedUpsertDoc1->getAttribute('$createdAt')); - $this->assertEquals($updateDate, $updatedUpsertDoc1->getAttribute('$updatedAt')); + $this->assertSame($createDate, $updatedUpsertDoc1->getAttribute('$createdAt')); + $this->assertSame($updateDate, $updatedUpsertDoc1->getAttribute('$updatedAt')); // Test 3: Upsert new document with both custom dates $upsertResults2 = []; @@ -5869,8 +5869,8 @@ public function testUpsertDateOperations(): void }); $upsertDoc2 = $upsertResults2[0]; - $this->assertEquals($createDate, $upsertDoc2->getAttribute('$createdAt')); - $this->assertEquals($updateDate, $upsertDoc2->getAttribute('$updatedAt')); + $this->assertSame($createDate, $upsertDoc2->getAttribute('$createdAt')); + $this->assertSame($updateDate, $upsertDoc2->getAttribute('$updatedAt')); // Test 4: Upsert existing document with different dates $upsertDoc2->setAttribute('string', 'upsert2_updated'); @@ -5882,8 +5882,8 @@ public function testUpsertDateOperations(): void }); $updatedUpsertDoc2 = $updatedUpsertResults2[0]; - $this->assertEquals($date3, $updatedUpsertDoc2->getAttribute('$createdAt')); - $this->assertEquals($date3, $updatedUpsertDoc2->getAttribute('$updatedAt')); + $this->assertSame($date3, $updatedUpsertDoc2->getAttribute('$createdAt')); + $this->assertSame($date3, $updatedUpsertDoc2->getAttribute('$updatedAt')); // Test 5: Upsert with preserve dates disabled $database->setPreserveDates(false); @@ -5958,12 +5958,12 @@ public function testUpsertDateOperations(): void // Test 8: Verify initial bulk upsert state foreach (['bulk_upsert1', 'bulk_upsert3'] as $id) { $doc = $database->getDocument($collection, $id); - $this->assertEquals($createDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); + $this->assertSame($createDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); } foreach (['bulk_upsert2', 'bulk_upsert3'] as $id) { $doc = $database->getDocument($collection, $id); - $this->assertEquals($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); + $this->assertSame($updateDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); } foreach (['bulk_upsert4'] as $id) { @@ -5991,9 +5991,9 @@ public function testUpsertDateOperations(): void foreach ($upsertIds as $id) { $doc = $database->getDocument($collection, $id); - $this->assertEquals($newDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); - $this->assertEquals($newDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); - $this->assertEquals('bulk_upsert_updated', $doc->getAttribute('string'), "string mismatch for $id"); + $this->assertSame($newDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for $id"); + $this->assertSame($newDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for $id"); + $this->assertSame('bulk_upsert_updated', $doc->getAttribute('string'), "string mismatch for $id"); } // Test 10: checking by passing null to each @@ -6032,12 +6032,12 @@ public function testUpsertDateOperations(): void $countUpsertUpdate = $database->upsertDocuments($collection, $upsertUpdateDocuments, onNext: function ($doc) use (&$upsertUpdateResults) { $upsertUpdateResults[] = $doc; }); - $this->assertEquals(4, $countUpsertUpdate); + $this->assertSame(4, $countUpsertUpdate); foreach ($upsertUpdateResults as $doc) { - $this->assertEquals($newDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for upsert update"); - $this->assertEquals($newDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for upsert update"); - $this->assertEquals('bulk_upsert_updated_via_upsert', $doc->getAttribute('string'), "string mismatch for upsert update"); + $this->assertSame($newDate, $doc->getAttribute('$createdAt'), "createdAt mismatch for upsert update"); + $this->assertSame($newDate, $doc->getAttribute('$updatedAt'), "updatedAt mismatch for upsert update"); + $this->assertSame('bulk_upsert_updated_via_upsert', $doc->getAttribute('string'), "string mismatch for upsert update"); } // Test 12: Bulk upsert with preserve dates disabled @@ -6057,12 +6057,12 @@ public function testUpsertDateOperations(): void $countUpsertDisabled = $database->upsertDocuments($collection, $upsertDisabledDocuments, onNext: function ($doc) use (&$upsertDisabledResults) { $upsertDisabledResults[] = $doc; }); - $this->assertEquals(4, $countUpsertDisabled); + $this->assertSame(4, $countUpsertDisabled); foreach ($upsertDisabledResults as $doc) { $this->assertNotEquals($customDate, $doc->getAttribute('$createdAt'), "createdAt should not be custom date when disabled"); $this->assertNotEquals($customDate, $doc->getAttribute('$updatedAt'), "updatedAt should not be custom date when disabled"); - $this->assertEquals('bulk_upsert_disabled', $doc->getAttribute('string'), "string mismatch for disabled upsert"); + $this->assertSame('bulk_upsert_disabled', $doc->getAttribute('string'), "string mismatch for disabled upsert"); } $database->setPreserveDates(false); @@ -6114,7 +6114,7 @@ public function testUpdateDocumentsCount(): void $upsertUpdateResults[] = $doc; }); $this->assertCount(4, $upsertUpdateResults); - $this->assertEquals(4, $count); + $this->assertSame(4, $count); $updates = new Document(['value' => 'test']); $newDocs = []; @@ -6123,7 +6123,7 @@ public function testUpdateDocumentsCount(): void }); $this->assertCount(4, $newDocs); - $this->assertEquals(4, $count); + $this->assertSame(4, $count); $database->deleteCollection($collectionName); } @@ -6155,12 +6155,12 @@ public function testCreateUpdateDocumentsMismatch(): void 'key' => 'doc3' ]), ]; - $this->assertEquals(3, $database->createDocuments($colName, $docs)); + $this->assertSame(3, $database->createDocuments($colName, $docs)); // we should get only one document as read permission provided to the last document only $addedDocs = $database->find($colName); $this->assertCount(1, $addedDocs); $doc = $addedDocs[0]; - $this->assertEquals('doc3', $doc->getId()); + $this->assertSame('doc3', $doc->getId()); $this->assertNotEmpty($doc->getPermissions()); $this->assertCount(3, $doc->getPermissions()); @@ -6170,17 +6170,17 @@ public function testCreateUpdateDocumentsMismatch(): void 'key' => 'doc4' ])); - $this->assertEquals(2, $database->updateDocuments($colName, new Document(['key' => 'new doc']))); + $this->assertSame(2, $database->updateDocuments($colName, new Document(['key' => 'new doc']))); $doc = $database->getDocument($colName, 'doc4'); - $this->assertEquals('doc4', $doc->getId()); - $this->assertEquals('value', $doc->getAttribute('value')); + $this->assertSame('doc4', $doc->getId()); + $this->assertSame('value', $doc->getAttribute('value')); $addedDocs = $database->find($colName); $this->assertCount(2, $addedDocs); foreach ($addedDocs as $doc) { $this->assertNotEmpty($doc->getPermissions()); $this->assertCount(3, $doc->getPermissions()); - $this->assertEquals('value', $doc->getAttribute('value')); + $this->assertSame('value', $doc->getAttribute('value')); } $database->deleteCollection($colName); } @@ -6213,7 +6213,7 @@ public function testBypassStructureWithSupportForAttributes(): void foreach ($docs as $doc) { $this->assertArrayHasKey('attrA', $doc->getAttributes()); $this->assertNull($doc->getAttribute('attrA')); - $this->assertEquals('B', $doc->getAttribute('attrB')); + $this->assertSame('B', $doc->getAttribute('attrB')); } // reset $database->enableValidation(); @@ -6271,7 +6271,7 @@ public function testValidationGuardsWithNullRequired(): void 'name' => null, 'age' => null, ])); - $this->assertEquals('created-null', $doc->getId()); + $this->assertSame('created-null', $doc->getId()); $database->enableValidation(); // Seed a valid document for updates @@ -6281,7 +6281,7 @@ public function testValidationGuardsWithNullRequired(): void 'name' => 'ok', 'age' => 10, ])); - $this->assertEquals('valid', $valid->getId()); + $this->assertSame('valid', $valid->getId()); // 2) updateDocument set required to null should fail when validation enabled, pass when disabled try { @@ -6356,7 +6356,7 @@ public function testValidationGuardsWithNullRequired(): void 'value' => 1, ])] ); - $this->assertEquals(1, $ucount); + $this->assertSame(1, $ucount); $database->enableValidation(); } @@ -6410,11 +6410,11 @@ public function testUpsertWithJSONFilters(): void '$permissions' => $permissions, ])); - $this->assertEquals($docId1, $document1->getId()); - $this->assertEquals('Initial Document', $document1->getAttribute('name')); + $this->assertSame($docId1, $document1->getId()); + $this->assertSame('Initial Document', $document1->getAttribute('name')); $this->assertIsArray($document1->getAttribute('metadata')); - $this->assertEquals('1.0.0', $document1->getAttribute('metadata')['version']); - $this->assertEquals(['php', 'database'], $document1->getAttribute('metadata')['tags']); + $this->assertSame('1.0.0', $document1->getAttribute('metadata')['version']); + $this->assertSame(['php', 'database'], $document1->getAttribute('metadata')['tags']); // Test 2: Update (updateDocument) with modified JSON filter $updatedMetadata = [ @@ -6433,11 +6433,11 @@ public function testUpsertWithJSONFilters(): void $updatedDoc = $database->updateDocument($collection, $docId1, $document1); - $this->assertEquals($docId1, $updatedDoc->getId()); - $this->assertEquals('Updated Document', $updatedDoc->getAttribute('name')); + $this->assertSame($docId1, $updatedDoc->getId()); + $this->assertSame('Updated Document', $updatedDoc->getAttribute('name')); $this->assertIsArray($updatedDoc->getAttribute('metadata')); - $this->assertEquals('2.0.0', $updatedDoc->getAttribute('metadata')['version']); - $this->assertEquals(['php', 'database', 'json'], $updatedDoc->getAttribute('metadata')['tags']); + $this->assertSame('2.0.0', $updatedDoc->getAttribute('metadata')['version']); + $this->assertSame(['php', 'database', 'json'], $updatedDoc->getAttribute('metadata')['tags']); $this->assertTrue($updatedDoc->getAttribute('metadata')['config']['debug']); $this->assertTrue($updatedDoc->getAttribute('metadata')['updated']); @@ -6461,10 +6461,10 @@ public function testUpsertWithJSONFilters(): void $upsertedDoc = $database->upsertDocument($collection, $document2); - $this->assertEquals($docId2, $upsertedDoc->getId()); - $this->assertEquals('New Upsert Document', $upsertedDoc->getAttribute('name')); + $this->assertSame($docId2, $upsertedDoc->getId()); + $this->assertSame('New Upsert Document', $upsertedDoc->getAttribute('name')); $this->assertIsArray($upsertedDoc->getAttribute('metadata')); - $this->assertEquals('1.5.0', $upsertedDoc->getAttribute('metadata')['version']); + $this->assertSame('1.5.0', $upsertedDoc->getAttribute('metadata')['version']); // Test 4: Upsert - Update existing document (upsertDocument) $document2->setAttribute('name', 'Updated Upsert Document'); @@ -6480,11 +6480,11 @@ public function testUpsertWithJSONFilters(): void $upsertedDoc2 = $database->upsertDocument($collection, $document2); - $this->assertEquals($docId2, $upsertedDoc2->getId()); - $this->assertEquals('Updated Upsert Document', $upsertedDoc2->getAttribute('name')); + $this->assertSame($docId2, $upsertedDoc2->getId()); + $this->assertSame('Updated Upsert Document', $upsertedDoc2->getAttribute('name')); $this->assertIsArray($upsertedDoc2->getAttribute('metadata')); - $this->assertEquals('2.5.0', $upsertedDoc2->getAttribute('metadata')['version']); - $this->assertEquals(['javascript', 'node', 'typescript'], $upsertedDoc2->getAttribute('metadata')['tags']); + $this->assertSame('2.5.0', $upsertedDoc2->getAttribute('metadata')['version']); + $this->assertSame(['javascript', 'node', 'typescript'], $upsertedDoc2->getAttribute('metadata')['tags']); $this->assertTrue($upsertedDoc2->getAttribute('metadata')['migrated']); // Test 5: Upsert - Bulk upsertDocuments (create and update) @@ -6530,20 +6530,20 @@ public function testUpsertWithJSONFilters(): void ]; $count = $database->upsertDocuments($collection, $bulkDocuments); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); // Verify bulk upsert results $bulkDoc1 = $database->getDocument($collection, $docId3); - $this->assertEquals('Bulk Upsert 1', $bulkDoc1->getAttribute('name')); - $this->assertEquals('3.0.0', $bulkDoc1->getAttribute('metadata')['version']); + $this->assertSame('Bulk Upsert 1', $bulkDoc1->getAttribute('name')); + $this->assertSame('3.0.0', $bulkDoc1->getAttribute('metadata')['version']); $bulkDoc2 = $database->getDocument($collection, $docId4); - $this->assertEquals('Bulk Upsert 2', $bulkDoc2->getAttribute('name')); - $this->assertEquals('3.1.0', $bulkDoc2->getAttribute('metadata')['version']); + $this->assertSame('Bulk Upsert 2', $bulkDoc2->getAttribute('name')); + $this->assertSame('3.1.0', $bulkDoc2->getAttribute('metadata')['version']); $bulkDoc3 = $database->getDocument($collection, $docId1); - $this->assertEquals('Bulk Updated Document', $bulkDoc3->getAttribute('name')); - $this->assertEquals('3.0.0', $bulkDoc3->getAttribute('metadata')['version']); + $this->assertSame('Bulk Updated Document', $bulkDoc3->getAttribute('name')); + $this->assertSame('3.0.0', $bulkDoc3->getAttribute('metadata')['version']); $this->assertTrue($bulkDoc3->getAttribute('metadata')['bulkUpdated']); // Cleanup diff --git a/tests/e2e/Adapter/Scopes/GeneralTests.php b/tests/e2e/Adapter/Scopes/GeneralTests.php index bf4280163..f3bbfe063 100644 --- a/tests/e2e/Adapter/Scopes/GeneralTests.php +++ b/tests/e2e/Adapter/Scopes/GeneralTests.php @@ -24,7 +24,7 @@ trait GeneralTests { public function testPing(): void { - $this->assertEquals(true, $this->getDatabase()->ping()); + $this->assertSame(true, $this->getDatabase()->ping()); } /** @@ -47,7 +47,7 @@ public function testQueryTimeout(): void $database->createCollection('global-timeouts'); - $this->assertEquals( + $this->assertSame( true, $database->createAttribute( collection: 'global-timeouts', @@ -128,7 +128,7 @@ public function testPreserveDatesUpdate(): void } catch (Exception $e) { $this->assertInstanceOf(StructureException::class, $e); - $this->assertEquals('Invalid document structure: Missing required attribute "$updatedAt"', $e->getMessage()); + $this->assertSame('Invalid document structure: Missing required attribute "$updatedAt"', $e->getMessage()); } try { @@ -148,7 +148,7 @@ public function testPreserveDatesUpdate(): void } catch (Exception $e) { $this->assertInstanceOf(StructureException::class, $e); - $this->assertEquals('Invalid document structure: Missing required attribute "$updatedAt"', $e->getMessage()); + $this->assertSame('Invalid document structure: Missing required attribute "$updatedAt"', $e->getMessage()); } // non empty dates @@ -156,9 +156,9 @@ public function testPreserveDatesUpdate(): void $doc1->setAttribute('$updatedAt', $newDate); $doc1 = $database->updateDocument('preserve_update_dates', 'doc1', $doc1); - $this->assertEquals($newDate, $doc1->getAttribute('$updatedAt')); + $this->assertSame($newDate, $doc1->getAttribute('$updatedAt')); $doc1 = $database->getDocument('preserve_update_dates', 'doc1'); - $this->assertEquals($newDate, $doc1->getAttribute('$updatedAt')); + $this->assertSame($newDate, $doc1->getAttribute('$updatedAt')); $this->getDatabase()->updateDocuments( 'preserve_update_dates', @@ -175,8 +175,8 @@ public function testPreserveDatesUpdate(): void $doc2 = $database->getDocument('preserve_update_dates', 'doc2'); $doc3 = $database->getDocument('preserve_update_dates', 'doc3'); - $this->assertEquals($newDate, $doc2->getAttribute('$updatedAt')); - $this->assertEquals($newDate, $doc3->getAttribute('$updatedAt')); + $this->assertSame($newDate, $doc2->getAttribute('$updatedAt')); + $this->assertSame($newDate, $doc3->getAttribute('$updatedAt')); $database->deleteCollection('preserve_update_dates'); @@ -215,7 +215,7 @@ public function testPreserveDatesCreate(): void $this->fail('Failed to throw structure exception'); } catch (Exception $e) { $this->assertInstanceOf(StructureException::class, $e); - $this->assertEquals('Invalid document structure: Missing required attribute "$createdAt"', $e->getMessage()); + $this->assertSame('Invalid document structure: Missing required attribute "$createdAt"', $e->getMessage()); } try { @@ -236,7 +236,7 @@ public function testPreserveDatesCreate(): void $this->fail('Failed to throw structure exception'); } catch (Exception $e) { $this->assertInstanceOf(StructureException::class, $e); - $this->assertEquals('Invalid document structure: Missing required attribute "$createdAt"', $e->getMessage()); + $this->assertSame('Invalid document structure: Missing required attribute "$createdAt"', $e->getMessage()); } // non empty date @@ -280,9 +280,9 @@ public function testPreserveDatesCreate(): void $doc3 = $database->getDocument('preserve_create_dates', 'doc3'); $doc4 = $database->getDocument('preserve_create_dates', 'doc4'); $doc5 = $database->getDocument('preserve_create_dates', 'doc5'); - $this->assertEquals($date, $doc1->getAttribute('$createdAt')); - $this->assertEquals($date, $doc2->getAttribute('$createdAt')); - $this->assertEquals($date, $doc3->getAttribute('$createdAt')); + $this->assertSame($date, $doc1->getAttribute('$createdAt')); + $this->assertSame($date, $doc2->getAttribute('$createdAt')); + $this->assertSame($date, $doc3->getAttribute('$createdAt')); $this->assertNotEmpty($date, $doc4->getAttribute('$createdAt')); $this->assertNotEquals($date, $doc4->getAttribute('$createdAt')); $this->assertNotEmpty($date, $doc5->getAttribute('$createdAt')); @@ -301,15 +301,15 @@ public function testGetAttributeLimit(): void } public function testGetIndexLimit(): void { - $this->assertEquals(58, $this->getDatabase()->getLimitForIndexes()); + $this->assertSame(58, $this->getDatabase()->getLimitForIndexes()); } public function testGetId(): void { - $this->assertEquals(20, strlen(ID::unique())); - $this->assertEquals(13, strlen(ID::unique(0))); - $this->assertEquals(13, strlen(ID::unique(-1))); - $this->assertEquals(23, strlen(ID::unique(10))); + $this->assertSame(20, strlen(ID::unique())); + $this->assertSame(13, strlen(ID::unique(0))); + $this->assertSame(13, strlen(ID::unique(-1))); + $this->assertSame(23, strlen(ID::unique(10))); // ensure two sequential calls to getId do not give the same result $this->assertNotEquals(ID::unique(10), ID::unique(10)); @@ -353,7 +353,7 @@ public function testSharedTablesUpdateTenant(): void ->setTenant(null) ->getDocument(Database::METADATA, __FUNCTION__); - $this->assertEquals('Scooby Doo', $doc['name']); + $this->assertSame('Scooby Doo', $doc['name']); // Reset state $database @@ -423,7 +423,7 @@ public function testNestedQueryValidation(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { $this->assertInstanceOf(QueryException::class, $e); - $this->assertEquals('Searching by attribute "name" requires a fulltext index.', $e->getMessage()); + $this->assertSame('Searching by attribute "name" requires a fulltext index.', $e->getMessage()); } } @@ -482,7 +482,7 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(1) ->getDocument(__FUNCTION__, $doc1Id); - $this->assertEquals('Spiderman', $doc['name']); + $this->assertSame('Spiderman', $doc['name']); $doc2Id = ID::unique(); @@ -502,8 +502,8 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(2) ->getDocument(__FUNCTION__, $doc2Id); - $this->assertEquals('Batman', $doc['name']); - $this->assertEquals(2, $doc->getTenant()); + $this->assertSame('Batman', $doc['name']); + $this->assertSame(2, $doc->getTenant()); // Ensure no read cross-tenant $docs = $database @@ -511,8 +511,8 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(1) ->find(__FUNCTION__); - $this->assertEquals(1, \count($docs)); - $this->assertEquals($doc1Id, $docs[0]->getId()); + $this->assertSame(1, \count($docs)); + $this->assertSame($doc1Id, $docs[0]->getId()); if ($database->getAdapter()->getSupportForUpserts()) { // Test upsert with tenant per doc @@ -532,9 +532,9 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(3) ->getDocument(__FUNCTION__, $doc3Id); - $this->assertEquals('Superman3', $doc['name']); - $this->assertEquals(3, $doc->getTenant()); - $this->assertEquals($doc3Id, $doc->getId()); + $this->assertSame('Superman3', $doc['name']); + $this->assertSame(3, $doc->getTenant()); + $this->assertSame($doc3Id, $doc->getId()); // Test no read from other tenants $docs = $database @@ -542,7 +542,7 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(1) ->find(__FUNCTION__); - $this->assertEquals(1, \count($docs)); + $this->assertSame(1, \count($docs)); // Ensure no cross-tenant read from upsert $doc = $database @@ -550,7 +550,7 @@ public function testSharedTablesTenantPerDocument(): void ->setTenantPerDocument(false) ->getDocument(__FUNCTION__, $doc3Id); - $this->assertEquals(true, $doc->isEmpty()); + $this->assertSame(true, $doc->isEmpty()); // Upsert new documents with different tenants $doc4Id = ID::unique(); @@ -574,8 +574,8 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(4) ->getDocument(__FUNCTION__, $doc4Id); - $this->assertEquals('Superman4', $doc['name']); - $this->assertEquals(4, $doc->getTenant()); + $this->assertSame('Superman4', $doc['name']); + $this->assertSame(4, $doc->getTenant()); // Set to tenant 5 and read $doc = $database @@ -583,8 +583,8 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(5) ->getDocument(__FUNCTION__, $doc5Id); - $this->assertEquals('Superman5', $doc['name']); - $this->assertEquals(5, $doc->getTenant()); + $this->assertSame('Superman5', $doc['name']); + $this->assertSame(5, $doc->getTenant()); // Update names via upsert $database @@ -606,8 +606,8 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(4) ->getDocument(__FUNCTION__, $doc4Id); - $this->assertEquals('Superman4 updated', $doc['name']); - $this->assertEquals(4, $doc->getTenant()); + $this->assertSame('Superman4 updated', $doc['name']); + $this->assertSame(4, $doc->getTenant()); // Set to tenant 5 and read $doc = $database @@ -615,8 +615,8 @@ public function testSharedTablesTenantPerDocument(): void ->setTenant(5) ->getDocument(__FUNCTION__, $doc5Id); - $this->assertEquals('Superman5 updated', $doc['name']); - $this->assertEquals(5, $doc->getTenant()); + $this->assertSame('Superman5 updated', $doc['name']); + $this->assertSame(5, $doc->getTenant()); } // Reset instance @@ -680,14 +680,14 @@ public function testCacheFallback(): void ])); $this->fail('Failed to throw exception'); } catch (\Throwable $e) { - $this->assertEquals('Redis server redis:6379 went away', $e->getMessage()); + $this->assertSame('Redis server redis:6379 went away', $e->getMessage()); } try { $database->deleteDocument('testRedisFallback', 'doc1'); $this->fail('Failed to throw exception'); } catch (\Throwable $e) { - $this->assertEquals('Redis server redis:6379 went away', $e->getMessage()); + $this->assertSame('Redis server redis:6379 went away', $e->getMessage()); } // Bring backup Redis diff --git a/tests/e2e/Adapter/Scopes/IndexTests.php b/tests/e2e/Adapter/Scopes/IndexTests.php index 7fa850264..91a18ff22 100644 --- a/tests/e2e/Adapter/Scopes/IndexTests.php +++ b/tests/e2e/Adapter/Scopes/IndexTests.php @@ -40,14 +40,14 @@ public function testCreateIndex(): void $database->createIndex('indexes', 'index3', Database::INDEX_KEY, ['$id', '$id']); } catch (Throwable $e) { self::assertTrue($e instanceof DatabaseException); - self::assertEquals($e->getMessage(), 'Duplicate attributes provided'); + self::assertSame($e->getMessage(), 'Duplicate attributes provided'); } try { $database->createIndex('indexes', 'index4', Database::INDEX_KEY, ['name', 'Name']); } catch (Throwable $e) { self::assertTrue($e instanceof DatabaseException); - self::assertEquals($e->getMessage(), 'Duplicate attributes provided'); + self::assertSame($e->getMessage(), 'Duplicate attributes provided'); } $database->deleteCollection('indexes'); @@ -60,30 +60,30 @@ public function testCreateDeleteIndex(): void $database->createCollection('indexes'); - $this->assertEquals(true, $database->createAttribute('indexes', 'string', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('indexes', 'order', Database::VAR_STRING, 128, true)); - $this->assertEquals(true, $database->createAttribute('indexes', 'integer', Database::VAR_INTEGER, 0, true)); - $this->assertEquals(true, $database->createAttribute('indexes', 'float', Database::VAR_FLOAT, 0, true)); - $this->assertEquals(true, $database->createAttribute('indexes', 'boolean', Database::VAR_BOOLEAN, 0, true)); + $this->assertSame(true, $database->createAttribute('indexes', 'string', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('indexes', 'order', Database::VAR_STRING, 128, true)); + $this->assertSame(true, $database->createAttribute('indexes', 'integer', Database::VAR_INTEGER, 0, true)); + $this->assertSame(true, $database->createAttribute('indexes', 'float', Database::VAR_FLOAT, 0, true)); + $this->assertSame(true, $database->createAttribute('indexes', 'boolean', Database::VAR_BOOLEAN, 0, true)); // Indexes - $this->assertEquals(true, $database->createIndex('indexes', 'index1', Database::INDEX_KEY, ['string', 'integer'], [128], [Database::ORDER_ASC])); - $this->assertEquals(true, $database->createIndex('indexes', 'index2', Database::INDEX_KEY, ['float', 'integer'], [], [Database::ORDER_ASC, Database::ORDER_DESC])); - $this->assertEquals(true, $database->createIndex('indexes', 'index3', Database::INDEX_KEY, ['integer', 'boolean'], [], [Database::ORDER_ASC, Database::ORDER_DESC, Database::ORDER_DESC])); - $this->assertEquals(true, $database->createIndex('indexes', 'index4', Database::INDEX_UNIQUE, ['string'], [128], [Database::ORDER_ASC])); - $this->assertEquals(true, $database->createIndex('indexes', 'index5', Database::INDEX_UNIQUE, ['$id', 'string'], [128], [Database::ORDER_ASC])); - $this->assertEquals(true, $database->createIndex('indexes', 'order', Database::INDEX_UNIQUE, ['order'], [128], [Database::ORDER_ASC])); + $this->assertSame(true, $database->createIndex('indexes', 'index1', Database::INDEX_KEY, ['string', 'integer'], [128], [Database::ORDER_ASC])); + $this->assertSame(true, $database->createIndex('indexes', 'index2', Database::INDEX_KEY, ['float', 'integer'], [], [Database::ORDER_ASC, Database::ORDER_DESC])); + $this->assertSame(true, $database->createIndex('indexes', 'index3', Database::INDEX_KEY, ['integer', 'boolean'], [], [Database::ORDER_ASC, Database::ORDER_DESC, Database::ORDER_DESC])); + $this->assertSame(true, $database->createIndex('indexes', 'index4', Database::INDEX_UNIQUE, ['string'], [128], [Database::ORDER_ASC])); + $this->assertSame(true, $database->createIndex('indexes', 'index5', Database::INDEX_UNIQUE, ['$id', 'string'], [128], [Database::ORDER_ASC])); + $this->assertSame(true, $database->createIndex('indexes', 'order', Database::INDEX_UNIQUE, ['order'], [128], [Database::ORDER_ASC])); $collection = $database->getCollection('indexes'); $this->assertCount(6, $collection->getAttribute('indexes')); // Delete Indexes - $this->assertEquals(true, $database->deleteIndex('indexes', 'index1')); - $this->assertEquals(true, $database->deleteIndex('indexes', 'index2')); - $this->assertEquals(true, $database->deleteIndex('indexes', 'index3')); - $this->assertEquals(true, $database->deleteIndex('indexes', 'index4')); - $this->assertEquals(true, $database->deleteIndex('indexes', 'index5')); - $this->assertEquals(true, $database->deleteIndex('indexes', 'order')); + $this->assertSame(true, $database->deleteIndex('indexes', 'index1')); + $this->assertSame(true, $database->deleteIndex('indexes', 'index2')); + $this->assertSame(true, $database->deleteIndex('indexes', 'index3')); + $this->assertSame(true, $database->deleteIndex('indexes', 'index4')); + $this->assertSame(true, $database->deleteIndex('indexes', 'index5')); + $this->assertSame(true, $database->deleteIndex('indexes', 'order')); $collection = $database->getCollection('indexes'); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -98,14 +98,14 @@ public function testCreateDeleteIndex(): void } // Test delete index when index does not exist - $this->assertEquals(true, $database->createIndex('indexes', 'index1', Database::INDEX_KEY, ['string', 'integer'], [128], [Database::ORDER_ASC])); - $this->assertEquals(true, $this->deleteIndex('indexes', 'index1')); - $this->assertEquals(true, $database->deleteIndex('indexes', 'index1')); + $this->assertSame(true, $database->createIndex('indexes', 'index1', Database::INDEX_KEY, ['string', 'integer'], [128], [Database::ORDER_ASC])); + $this->assertSame(true, $this->deleteIndex('indexes', 'index1')); + $this->assertSame(true, $database->deleteIndex('indexes', 'index1')); // Test delete index when attribute does not exist - $this->assertEquals(true, $database->createIndex('indexes', 'index1', Database::INDEX_KEY, ['string', 'integer'], [128], [Database::ORDER_ASC])); - $this->assertEquals(true, $database->deleteAttribute('indexes', 'string')); - $this->assertEquals(true, $database->deleteIndex('indexes', 'index1')); + $this->assertSame(true, $database->createIndex('indexes', 'index1', Database::INDEX_KEY, ['string', 'integer'], [128], [Database::ORDER_ASC])); + $this->assertSame(true, $database->deleteAttribute('indexes', 'string')); + $this->assertSame(true, $database->deleteIndex('indexes', 'index1')); $database->deleteCollection('indexes'); } @@ -178,7 +178,7 @@ public function testIndexValidation(): void if ($database->getAdapter()->getSupportForIdenticalIndexes()) { $errorMessage = 'Index length 701 is larger than the size for title1: 700"'; $this->assertFalse($validator->isValid($indexes[0])); - $this->assertEquals($errorMessage, $validator->getDescription()); + $this->assertSame($errorMessage, $validator->getDescription()); try { $database->createCollection($collection->getId(), $attributes, $indexes, [ Permission::read(Role::any()), @@ -186,7 +186,7 @@ public function testIndexValidation(): void ]); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals($errorMessage, $e->getMessage()); + $this->assertSame($errorMessage, $e->getMessage()); } } @@ -205,13 +205,13 @@ public function testIndexValidation(): void if ($database->getAdapter()->getSupportForAttributes() && $database->getAdapter()->getMaxIndexLength() > 0) { $errorMessage = 'Index length is longer than the maximum: ' . $database->getAdapter()->getMaxIndexLength(); $this->assertFalse($validator->isValid($indexes[0])); - $this->assertEquals($errorMessage, $validator->getDescription()); + $this->assertSame($errorMessage, $validator->getDescription()); try { $database->createCollection($collection->getId(), $attributes, $indexes); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals($errorMessage, $e->getMessage()); + $this->assertSame($errorMessage, $e->getMessage()); } } @@ -270,9 +270,9 @@ public function testIndexValidation(): void $this->assertFalse($validator->isValid($newIndex)); if (!$database->getAdapter()->getSupportForMultipleFulltextIndexes()) { - $this->assertEquals('There is already a fulltext index in the collection', $validator->getDescription()); + $this->assertSame('There is already a fulltext index in the collection', $validator->getDescription()); } elseif ($database->getAdapter()->getSupportForAttributes()) { - $this->assertEquals('Attribute "integer" cannot be part of a fulltext index, must be of type string', $validator->getDescription()); + $this->assertSame('Attribute "integer" cannot be part of a fulltext index, must be of type string', $validator->getDescription()); } try { @@ -281,7 +281,7 @@ public function testIndexValidation(): void $this->fail('Failed to throw exception'); } } catch (Exception $e) { - $this->assertEquals('Attribute "integer" cannot be part of a fulltext index, must be of type string', $e->getMessage()); + $this->assertSame('Attribute "integer" cannot be part of a fulltext index, must be of type string', $e->getMessage()); } @@ -297,13 +297,13 @@ public function testIndexValidation(): void if ($database->getAdapter()->getSupportForAttributes()) { $errorMessage = 'Negative index length provided for title1'; $this->assertFalse($validator->isValid($indexes[0])); - $this->assertEquals($errorMessage, $validator->getDescription()); + $this->assertSame($errorMessage, $validator->getDescription()); try { $database->createCollection(ID::unique(), $attributes, $indexes); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals($errorMessage, $e->getMessage()); + $this->assertSame($errorMessage, $e->getMessage()); } $indexes = [ @@ -317,13 +317,13 @@ public function testIndexValidation(): void ]; $errorMessage = 'Invalid index lengths. Count of lengths must be equal or less than the number of attributes.'; $this->assertFalse($validator->isValid($indexes[0])); - $this->assertEquals($errorMessage, $validator->getDescription()); + $this->assertSame($errorMessage, $validator->getDescription()); try { $database->createCollection(ID::unique(), $attributes, $indexes); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals($errorMessage, $e->getMessage()); + $this->assertSame($errorMessage, $e->getMessage()); } } } @@ -346,7 +346,7 @@ public function testIndexLengthZero(): void $database->createIndex(__FUNCTION__, 'index_title1', Database::INDEX_KEY, ['title1'], [0]); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); + $this->assertSame('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); } @@ -357,7 +357,7 @@ public function testIndexLengthZero(): void $database->updateAttribute(__FUNCTION__, 'title2', Database::VAR_STRING, $database->getAdapter()->getMaxIndexLength() + 300, true); $this->fail('Failed to throw exception'); } catch (Throwable $e) { - $this->assertEquals('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); + $this->assertSame('Index length is longer than the maximum: '.$database->getAdapter()->getMaxIndexLength(), $e->getMessage()); } } @@ -378,8 +378,8 @@ public function testRenameIndex(): void $numbers = $database->getCollection('numbers'); - $this->assertEquals('index2', $numbers->getAttribute('indexes')[1]['$id']); - $this->assertEquals('index3', $numbers->getAttribute('indexes')[0]['$id']); + $this->assertSame('index2', $numbers->getAttribute('indexes')[1]['$id']); + $this->assertSame('index3', $numbers->getAttribute('indexes')[0]['$id']); $this->assertCount(2, $numbers->getAttribute('indexes')); } @@ -416,16 +416,16 @@ public function testExceptionIndexLimit(): void // add unique attributes for indexing for ($i = 0; $i < 64; $i++) { - $this->assertEquals(true, $database->createAttribute('indexLimit', "test{$i}", Database::VAR_STRING, 16, true)); + $this->assertSame(true, $database->createAttribute('indexLimit', "test{$i}", Database::VAR_STRING, 16, true)); } // Testing for indexLimit // Add up to the limit, then check if the next index throws IndexLimitException for ($i = 0; $i < ($this->getDatabase()->getLimitForIndexes()); $i++) { - $this->assertEquals(true, $database->createIndex('indexLimit', "index{$i}", Database::INDEX_KEY, ["test{$i}"], [16])); + $this->assertSame(true, $database->createIndex('indexLimit', "index{$i}", Database::INDEX_KEY, ["test{$i}"], [16])); } $this->expectException(LimitException::class); - $this->assertEquals(false, $database->createIndex('indexLimit', "index64", Database::INDEX_KEY, ["test64"], [16])); + $this->assertSame(false, $database->createIndex('indexLimit', "index64", Database::INDEX_KEY, ["test64"], [16])); $database->deleteCollection('indexLimit'); } @@ -468,7 +468,7 @@ public function testListDocumentSearch(): void Query::search('string', '*test+alias@email-provider.com'), ]); - $this->assertEquals(1, count($documents)); + $this->assertSame(1, count($documents)); } public function testMaxQueriesValues(): void @@ -488,7 +488,7 @@ public function testMaxQueriesValues(): void $this->fail('Failed to throw exception'); } catch (Throwable $e) { $this->assertTrue($e instanceof QueryException); - $this->assertEquals('Invalid query: Query on attribute has greater than 5 values: $id', $e->getMessage()); + $this->assertSame('Invalid query: Query on attribute has greater than 5 values: $id', $e->getMessage()); } $database->setMaxQueryValues($max); @@ -508,17 +508,17 @@ public function testEmptySearch(): void $documents = $database->find('documents', [ Query::search('string', ''), ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); $documents = $database->find('documents', [ Query::search('string', '*'), ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); $documents = $database->find('documents', [ Query::search('string', '<>'), ]); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); } public function testMultipleFulltextIndexValidation(): void diff --git a/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php b/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php index 2e9dc78f7..9130dde74 100644 --- a/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php +++ b/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php @@ -29,7 +29,7 @@ public function testObjectAttribute(): void $database->createCollection($collectionId); // Create object attribute - $this->assertEquals(true, $database->createAttribute($collectionId, 'meta', Database::VAR_OBJECT, 0, false)); + $this->assertSame(true, $database->createAttribute($collectionId, 'meta', Database::VAR_OBJECT, 0, false)); // Test 1: Create and read document with object attribute $doc1 = $database->createDocument($collectionId, new Document([ @@ -47,16 +47,16 @@ public function testObjectAttribute(): void ])); $this->assertIsArray($doc1->getAttribute('meta')); - $this->assertEquals(25, $doc1->getAttribute('meta')['age']); - $this->assertEquals(['react', 'node'], $doc1->getAttribute('meta')['skills']); - $this->assertEquals('IN', $doc1->getAttribute('meta')['user']['info']['country']); + $this->assertSame(25, $doc1->getAttribute('meta')['age']); + $this->assertSame(['react', 'node'], $doc1->getAttribute('meta')['skills']); + $this->assertSame('IN', $doc1->getAttribute('meta')['user']['info']['country']); // Test 2: Query::equal with simple key-value pair $results = $database->find($collectionId, [ Query::equal('meta', [['age' => 25]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc1', $results[0]->getId()); + $this->assertSame('doc1', $results[0]->getId()); // Test 3: Query::equal with nested JSON $results = $database->find($collectionId, [ @@ -69,14 +69,14 @@ public function testObjectAttribute(): void ]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc1', $results[0]->getId()); + $this->assertSame('doc1', $results[0]->getId()); // Test 4: Query::contains for array element $results = $database->find($collectionId, [ Query::contains('meta', [['skills' => 'react']]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc1', $results[0]->getId()); + $this->assertSame('doc1', $results[0]->getId()); // Test 5: Create another document with different values $doc2 = $database->createDocument($collectionId, new Document([ @@ -98,7 +98,7 @@ public function testObjectAttribute(): void Query::equal('meta', [['age' => 25]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc1', $results[0]->getId()); + $this->assertSame('doc1', $results[0]->getId()); // Test 7: Query for doc2 $results = $database->find($collectionId, [ @@ -111,7 +111,7 @@ public function testObjectAttribute(): void ]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc2', $results[0]->getId()); + $this->assertSame('doc2', $results[0]->getId()); // Test 8: Update document $updatedDoc = $database->updateDocument($collectionId, 'doc1', new Document([ @@ -128,23 +128,23 @@ public function testObjectAttribute(): void ] ])); - $this->assertEquals(26, $updatedDoc->getAttribute('meta')['age']); - $this->assertEquals(['react', 'node', 'typescript'], $updatedDoc->getAttribute('meta')['skills']); - $this->assertEquals('CA', $updatedDoc->getAttribute('meta')['user']['info']['country']); + $this->assertSame(26, $updatedDoc->getAttribute('meta')['age']); + $this->assertSame(['react', 'node', 'typescript'], $updatedDoc->getAttribute('meta')['skills']); + $this->assertSame('CA', $updatedDoc->getAttribute('meta')['user']['info']['country']); // Test 9: Query updated document $results = $database->find($collectionId, [ Query::equal('meta', [['age' => 26]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc1', $results[0]->getId()); + $this->assertSame('doc1', $results[0]->getId()); // Test 10: Query with multiple conditions using contains $results = $database->find($collectionId, [ Query::contains('meta', [['skills' => 'typescript']]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc1', $results[0]->getId()); + $this->assertSame('doc1', $results[0]->getId()); // Test 11: Negative test - query that shouldn't match $results = $database->find($collectionId, [ @@ -158,7 +158,7 @@ public function testObjectAttribute(): void ]); // Should return doc2 only $this->assertCount(1, $results); - $this->assertEquals('doc2', $results[0]->getId()); + $this->assertSame('doc2', $results[0]->getId()); try { // test -> not equal allows one value only @@ -182,15 +182,15 @@ public function testObjectAttribute(): void ]); // Should return doc2 only $this->assertCount(1, $results); - $this->assertEquals('doc2', $results[0]->getId()); + $this->assertSame('doc2', $results[0]->getId()); // Test 11a: Test getDocument by ID $fetchedDoc = $database->getDocument($collectionId, 'doc1'); - $this->assertEquals('doc1', $fetchedDoc->getId()); + $this->assertSame('doc1', $fetchedDoc->getId()); $this->assertIsArray($fetchedDoc->getAttribute('meta')); - $this->assertEquals(26, $fetchedDoc->getAttribute('meta')['age']); - $this->assertEquals(['react', 'node', 'typescript'], $fetchedDoc->getAttribute('meta')['skills']); - $this->assertEquals('CA', $fetchedDoc->getAttribute('meta')['user']['info']['country']); + $this->assertSame(26, $fetchedDoc->getAttribute('meta')['age']); + $this->assertSame(['react', 'node', 'typescript'], $fetchedDoc->getAttribute('meta')['skills']); + $this->assertSame('CA', $fetchedDoc->getAttribute('meta')['user']['info']['country']); // Test 11b: Test Query::select to limit returned attributes $results = $database->find($collectionId, [ @@ -198,9 +198,9 @@ public function testObjectAttribute(): void Query::equal('meta', [['age' => 26]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc1', $results[0]->getId()); + $this->assertSame('doc1', $results[0]->getId()); $this->assertIsArray($results[0]->getAttribute('meta')); - $this->assertEquals(26, $results[0]->getAttribute('meta')['age']); + $this->assertSame(26, $results[0]->getAttribute('meta')['age']); // Test 11c: Test Query::select with only $id (exclude meta) $results = $database->find($collectionId, [ @@ -208,7 +208,7 @@ public function testObjectAttribute(): void Query::equal('meta', [['age' => 30]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc2', $results[0]->getId()); + $this->assertSame('doc2', $results[0]->getId()); // Meta should not be present when not selected $this->assertEmpty($results[0]->getAttribute('meta')); @@ -245,7 +245,7 @@ public function testObjectAttribute(): void ] ] ])); - $this->assertEquals('deep_value', $doc5->getAttribute('meta')['level1']['level2']['level3']['level4']['level5']); + $this->assertSame('deep_value', $doc5->getAttribute('meta')['level1']['level2']['level3']['level4']['level5']); // Test 15: Query deeply nested structure $results = $database->find($collectionId, [ @@ -262,7 +262,7 @@ public function testObjectAttribute(): void ]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc5', $results[0]->getId()); + $this->assertSame('doc5', $results[0]->getId()); // Test 16: Query partial nested path $results = $database->find($collectionId, [ @@ -294,9 +294,9 @@ public function testObjectAttribute(): void 'object' => ['key' => 'value'] ] ])); - $this->assertEquals('text', $doc6->getAttribute('meta')['string']); - $this->assertEquals(42, $doc6->getAttribute('meta')['number']); - $this->assertEquals(3.14, $doc6->getAttribute('meta')['float']); + $this->assertSame('text', $doc6->getAttribute('meta')['string']); + $this->assertSame(42, $doc6->getAttribute('meta')['number']); + $this->assertSame(3.14, $doc6->getAttribute('meta')['float']); $this->assertTrue($doc6->getAttribute('meta')['boolean']); $this->assertNull($doc6->getAttribute('meta')['null_value']); @@ -305,21 +305,21 @@ public function testObjectAttribute(): void Query::equal('meta', [['boolean' => true]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc6', $results[0]->getId()); + $this->assertSame('doc6', $results[0]->getId()); // Test 19: Query with numeric value $results = $database->find($collectionId, [ Query::equal('meta', [['number' => 42]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc6', $results[0]->getId()); + $this->assertSame('doc6', $results[0]->getId()); // Test 20: Query with float value $results = $database->find($collectionId, [ Query::equal('meta', [['float' => 3.14]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc6', $results[0]->getId()); + $this->assertSame('doc6', $results[0]->getId()); // Test 21: Test contains with multiple array elements $doc7 = $database->createDocument($collectionId, new Document([ @@ -333,7 +333,7 @@ public function testObjectAttribute(): void Query::contains('meta', [['tags' => 'rust']]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc7', $results[0]->getId()); + $this->assertSame('doc7', $results[0]->getId()); // Test 22: Test contains with numeric array element $doc8 = $database->createDocument($collectionId, new Document([ @@ -347,7 +347,7 @@ public function testObjectAttribute(): void Query::contains('meta', [['scores' => 95]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc8', $results[0]->getId()); + $this->assertSame('doc8', $results[0]->getId()); // Test 23: Negative test - contains query that shouldn't match $results = $database->find($collectionId, [ @@ -389,14 +389,14 @@ public function testObjectAttribute(): void ])); $this->assertIsArray($doc9->getAttribute('meta')['projects']); $this->assertCount(2, $doc9->getAttribute('meta')['projects']); - $this->assertEquals('Project A', $doc9->getAttribute('meta')['projects'][0]['name']); + $this->assertSame('Project A', $doc9->getAttribute('meta')['projects'][0]['name']); // Test 25: Query using equal with nested key $results = $database->find($collectionId, [ Query::equal('meta', [['company' => 'TechCorp']]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc9', $results[0]->getId()); + $this->assertSame('doc9', $results[0]->getId()); // Test 25b: Query the entire array structure using equal $results = $database->find($collectionId, [ @@ -416,7 +416,7 @@ public function testObjectAttribute(): void ]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc9', $results[0]->getId()); + $this->assertSame('doc9', $results[0]->getId()); // Test 26: Test with special characters in values $doc10 = $database->createDocument($collectionId, new Document([ @@ -428,15 +428,15 @@ public function testObjectAttribute(): void 'symbols' => '@#$%^&*()' ] ])); - $this->assertEquals('Test with "quotes" and \'apostrophes\'', $doc10->getAttribute('meta')['description']); - $this->assertEquals('🚀🎉', $doc10->getAttribute('meta')['emoji']); + $this->assertSame('Test with "quotes" and \'apostrophes\'', $doc10->getAttribute('meta')['description']); + $this->assertSame('🚀🎉', $doc10->getAttribute('meta')['emoji']); // Test 27: Query with special characters $results = $database->find($collectionId, [ Query::equal('meta', [['emoji' => '🚀🎉']]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc10', $results[0]->getId()); + $this->assertSame('doc10', $results[0]->getId()); // Test 28: Test equal query with complete object match $doc11 = $database->createDocument($collectionId, new Document([ @@ -453,14 +453,14 @@ public function testObjectAttribute(): void Query::equal('meta', [['config' => ['theme' => 'dark', 'language' => 'en']]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc11', $results[0]->getId()); + $this->assertSame('doc11', $results[0]->getId()); // Test 29: Negative test - partial object match should still work (containment) $results = $database->find($collectionId, [ Query::equal('meta', [['config' => ['theme' => 'dark']]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc11', $results[0]->getId()); + $this->assertSame('doc11', $results[0]->getId()); // Test 30: Test updating to empty object $updatedDoc11 = $database->updateDocument($collectionId, 'doc11', new Document([ @@ -484,25 +484,25 @@ public function testObjectAttribute(): void ] ])); $this->assertIsArray($doc12->getAttribute('meta')['matrix']); - $this->assertEquals([1, 2, 3], $doc12->getAttribute('meta')['matrix'][0]); + $this->assertSame([1, 2, 3], $doc12->getAttribute('meta')['matrix'][0]); // Test 32: Contains query with nested array $results = $database->find($collectionId, [ Query::contains('meta', [['matrix' => [[4, 5, 6]]]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc12', $results[0]->getId()); + $this->assertSame('doc12', $results[0]->getId()); // Test 33: Test getDocument with various documents $fetchedDoc6 = $database->getDocument($collectionId, 'doc6'); - $this->assertEquals('doc6', $fetchedDoc6->getId()); - $this->assertEquals('text', $fetchedDoc6->getAttribute('meta')['string']); - $this->assertEquals(42, $fetchedDoc6->getAttribute('meta')['number']); + $this->assertSame('doc6', $fetchedDoc6->getId()); + $this->assertSame('text', $fetchedDoc6->getAttribute('meta')['string']); + $this->assertSame(42, $fetchedDoc6->getAttribute('meta')['number']); $this->assertTrue($fetchedDoc6->getAttribute('meta')['boolean']); $fetchedDoc10 = $database->getDocument($collectionId, 'doc10'); - $this->assertEquals('🚀🎉', $fetchedDoc10->getAttribute('meta')['emoji']); - $this->assertEquals('Test with "quotes" and \'apostrophes\'', $fetchedDoc10->getAttribute('meta')['description']); + $this->assertSame('🚀🎉', $fetchedDoc10->getAttribute('meta')['emoji']); + $this->assertSame('Test with "quotes" and \'apostrophes\'', $fetchedDoc10->getAttribute('meta')['description']); // Test 34: Test Query::select with complex nested structures $results = $database->find($collectionId, [ @@ -520,8 +520,8 @@ public function testObjectAttribute(): void ]]) ]); $this->assertCount(1, $results); - $this->assertEquals('doc5', $results[0]->getId()); - $this->assertEquals('deep_value', $results[0]->getAttribute('meta')['level1']['level2']['level3']['level4']['level5']); + $this->assertSame('doc5', $results[0]->getId()); + $this->assertSame('deep_value', $results[0]->getAttribute('meta')['level1']['level2']['level3']['level4']['level5']); // Test 35: Test selecting multiple documents and verifying object attributes $allDocs = $database->find($collectionId, [ @@ -545,7 +545,7 @@ public function testObjectAttribute(): void ]); $this->assertCount(1, $results); $this->assertIsArray($results[0]->getAttribute('meta')); - $this->assertEquals(['php', 'javascript', 'python', 'go', 'rust'], $results[0]->getAttribute('meta')['tags']); + $this->assertSame(['php', 'javascript', 'python', 'go', 'rust'], $results[0]->getAttribute('meta')['tags']); // Clean up $database->deleteCollection($collectionId); @@ -565,7 +565,7 @@ public function testObjectAttributeGinIndex(): void $database->createCollection($collectionId); // Create object attribute - $this->assertEquals(true, $database->createAttribute($collectionId, 'data', Database::VAR_OBJECT, 0, false)); + $this->assertSame(true, $database->createAttribute($collectionId, 'data', Database::VAR_OBJECT, 0, false)); // Test 1: Create Object index on object attribute $ginIndex = $database->createIndex($collectionId, 'idx_data_gin', Database::INDEX_OBJECT, ['data']); @@ -603,21 +603,21 @@ public function testObjectAttributeGinIndex(): void Query::equal('data', [['config' => ['env' => 'production']]]) ]); $this->assertCount(1, $results); - $this->assertEquals('gin1', $results[0]->getId()); + $this->assertSame('gin1', $results[0]->getId()); // Test 4: Query with contains on indexed JSONB column $results = $database->find($collectionId, [ Query::contains('data', [['tags' => 'php']]) ]); $this->assertCount(1, $results); - $this->assertEquals('gin1', $results[0]->getId()); + $this->assertSame('gin1', $results[0]->getId()); // Test 5: Verify Object index improves performance for containment queries $results = $database->find($collectionId, [ Query::contains('data', [['tags' => 'kotlin']]) ]); $this->assertCount(1, $results); - $this->assertEquals('gin2', $results[0]->getId()); + $this->assertSame('gin2', $results[0]->getId()); // Test 6: Try to create Object index on non-object attribute (should fail) $database->createAttribute($collectionId, 'name', Database::VAR_STRING, 255, false); @@ -674,7 +674,7 @@ public function testObjectAttributeInvalidCases(): void $database->createCollection($collectionId); // Create object attribute - $this->assertEquals(true, $database->createAttribute($collectionId, 'meta', Database::VAR_OBJECT, 0, false)); + $this->assertSame(true, $database->createAttribute($collectionId, 'meta', Database::VAR_OBJECT, 0, false)); // Test 1: Try to create document with string instead of object (should fail) $exceptionThrown = false; @@ -796,15 +796,15 @@ public function testObjectAttributeInvalidCases(): void Query::equal('meta', [['key_25' => ['id' => 25, 'name' => 'Item 25', 'values' => range(1, 10)]]]) ]); $this->assertCount(1, $results); - $this->assertEquals('large_structure', $results[0]->getId()); + $this->assertSame('large_structure', $results[0]->getId()); // Test 11: Test getDocument with large structure $fetchedLargeDoc = $database->getDocument($collectionId, 'large_structure'); - $this->assertEquals('large_structure', $fetchedLargeDoc->getId()); + $this->assertSame('large_structure', $fetchedLargeDoc->getId()); $this->assertIsArray($fetchedLargeDoc->getAttribute('meta')); $this->assertCount(50, $fetchedLargeDoc->getAttribute('meta')); - $this->assertEquals(25, $fetchedLargeDoc->getAttribute('meta')['key_25']['id']); - $this->assertEquals('Item 25', $fetchedLargeDoc->getAttribute('meta')['key_25']['name']); + $this->assertSame(25, $fetchedLargeDoc->getAttribute('meta')['key_25']['id']); + $this->assertSame('Item 25', $fetchedLargeDoc->getAttribute('meta')['key_25']['name']); // Test 12: Test Query::select with valid document $results = $database->find($collectionId, [ @@ -812,18 +812,18 @@ public function testObjectAttributeInvalidCases(): void Query::equal('meta', [['name' => 'John']]) ]); $this->assertCount(1, $results); - $this->assertEquals('valid1', $results[0]->getId()); + $this->assertSame('valid1', $results[0]->getId()); $this->assertIsArray($results[0]->getAttribute('meta')); - $this->assertEquals('John', $results[0]->getAttribute('meta')['name']); - $this->assertEquals(30, $results[0]->getAttribute('meta')['age']); + $this->assertSame('John', $results[0]->getAttribute('meta')['name']); + $this->assertSame(30, $results[0]->getAttribute('meta')['age']); // Test 13: Test getDocument returns proper structure $fetchedValid1 = $database->getDocument($collectionId, 'valid1'); - $this->assertEquals('valid1', $fetchedValid1->getId()); + $this->assertSame('valid1', $fetchedValid1->getId()); $this->assertIsArray($fetchedValid1->getAttribute('meta')); - $this->assertEquals('John', $fetchedValid1->getAttribute('meta')['name']); + $this->assertSame('John', $fetchedValid1->getAttribute('meta')['name']); $this->assertTrue($fetchedValid1->getAttribute('meta')['settings']['notifications']); - $this->assertEquals('dark', $fetchedValid1->getAttribute('meta')['settings']['theme']); + $this->assertSame('dark', $fetchedValid1->getAttribute('meta')['settings']['theme']); // Test 14: Test Query::select excluding meta $results = $database->find($collectionId, [ @@ -831,7 +831,7 @@ public function testObjectAttributeInvalidCases(): void Query::equal('meta', [['fruits' => ['apple', 'banana', 'orange']]]) ]); $this->assertCount(1, $results); - $this->assertEquals('valid2', $results[0]->getId()); + $this->assertSame('valid2', $results[0]->getId()); // Meta should be empty when not selected $this->assertEmpty($results[0]->getAttribute('meta')); @@ -841,7 +841,7 @@ public function testObjectAttributeInvalidCases(): void // Test 16: with multiple json $defaultSettings = ['config' => ['theme' => 'light', 'lang' => 'en']]; - $this->assertEquals(true, $database->createAttribute($collectionId, 'settings', Database::VAR_OBJECT, 0, false, $defaultSettings)); + $this->assertSame(true, $database->createAttribute($collectionId, 'settings', Database::VAR_OBJECT, 0, false, $defaultSettings)); $database->createDocument($collectionId, new Document(['$permissions' => [Permission::read(Role::any())]])); $database->createDocument($collectionId, new Document(['settings' => ['config' => ['theme' => 'dark', 'lang' => 'en']],'$permissions' => [Permission::read(Role::any())]])); $results = $database->find($collectionId, [ @@ -873,20 +873,20 @@ public function testObjectAttributeDefaults(): void $database->createCollection($collectionId); // 1) Default empty object - $this->assertEquals(true, $database->createAttribute($collectionId, 'metaDefaultEmpty', Database::VAR_OBJECT, 0, false, [])); + $this->assertSame(true, $database->createAttribute($collectionId, 'metaDefaultEmpty', Database::VAR_OBJECT, 0, false, [])); // 2) Default nested object $defaultSettings = ['config' => ['theme' => 'light', 'lang' => 'en']]; - $this->assertEquals(true, $database->createAttribute($collectionId, 'settings', Database::VAR_OBJECT, 0, false, $defaultSettings)); + $this->assertSame(true, $database->createAttribute($collectionId, 'settings', Database::VAR_OBJECT, 0, false, $defaultSettings)); // 3) Required without default (should fail when missing) - $this->assertEquals(true, $database->createAttribute($collectionId, 'profile', Database::VAR_OBJECT, 0, true, null)); + $this->assertSame(true, $database->createAttribute($collectionId, 'profile', Database::VAR_OBJECT, 0, true, null)); // 4) Required with default (should auto-populate) - $this->assertEquals(true, $database->createAttribute($collectionId, 'profile2', Database::VAR_OBJECT, 0, false, ['name' => 'anon'])); + $this->assertSame(true, $database->createAttribute($collectionId, 'profile2', Database::VAR_OBJECT, 0, false, ['name' => 'anon'])); // 5) Explicit null default - $this->assertEquals(true, $database->createAttribute($collectionId, 'misc', Database::VAR_OBJECT, 0, false, null)); + $this->assertSame(true, $database->createAttribute($collectionId, 'misc', Database::VAR_OBJECT, 0, false, null)); // Create document missing all above attributes $exceptionThrown = false; @@ -915,15 +915,15 @@ public function testObjectAttributeDefaults(): void // settings should default to nested object $this->assertIsArray($doc->getAttribute('settings')); - $this->assertEquals('light', $doc->getAttribute('settings')['config']['theme']); - $this->assertEquals('en', $doc->getAttribute('settings')['config']['lang']); + $this->assertSame('light', $doc->getAttribute('settings')['config']['theme']); + $this->assertSame('en', $doc->getAttribute('settings')['config']['lang']); // profile provided explicitly - $this->assertEquals('provided', $doc->getAttribute('profile')['name']); + $this->assertSame('provided', $doc->getAttribute('profile')['name']); // profile2 required with default should be auto-populated $this->assertIsArray($doc->getAttribute('profile2')); - $this->assertEquals('anon', $doc->getAttribute('profile2')['name']); + $this->assertSame('anon', $doc->getAttribute('profile2')['name']); // misc explicit null default remains null when omitted $this->assertNull($doc->getAttribute('misc')); @@ -933,7 +933,7 @@ public function testObjectAttributeDefaults(): void Query::equal('settings', [['config' => ['theme' => 'light']]]) ]); $this->assertCount(1, $results); - $this->assertEquals('def2', $results[0]->getId()); + $this->assertSame('def2', $results[0]->getId()); // Clean up $database->deleteCollection($collectionId); @@ -1036,7 +1036,7 @@ public function testMetadataWithVector(): void Query::limit(1) ]); $this->assertCount(1, $results); - $this->assertEquals('vecA', $results[0]->getId()); + $this->assertSame('vecA', $results[0]->getId()); // 2) Complex nested metadata equal (partial object containment) $results = $database->find($collectionId, [ @@ -1051,7 +1051,7 @@ public function testMetadataWithVector(): void ]]) ]); $this->assertCount(1, $results); - $this->assertEquals('vecA', $results[0]->getId()); + $this->assertSame('vecA', $results[0]->getId()); // 3) Contains on nested array inside metadata $results = $database->find($collectionId, [ @@ -1074,7 +1074,7 @@ public function testMetadataWithVector(): void Query::limit(1) ]); $this->assertCount(1, $results); - $this->assertEquals('vecB', $results[0]->getId()); + $this->assertSame('vecB', $results[0]->getId()); // 5) Deep partial containment with boolean nested value $results = $database->find($collectionId, [ @@ -1089,7 +1089,7 @@ public function testMetadataWithVector(): void ]]) ]); $this->assertCount(1, $results); - $this->assertEquals('vecA', $results[0]->getId()); + $this->assertSame('vecA', $results[0]->getId()); // Cleanup $database->deleteCollection($collectionId); diff --git a/tests/e2e/Adapter/Scopes/OperatorTests.php b/tests/e2e/Adapter/Scopes/OperatorTests.php index 3f365ed37..8cfedafce 100644 --- a/tests/e2e/Adapter/Scopes/OperatorTests.php +++ b/tests/e2e/Adapter/Scopes/OperatorTests.php @@ -51,37 +51,37 @@ public function testUpdateWithOperators(): void $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'count' => Operator::increment(5) ])); - $this->assertEquals(15, $updated->getAttribute('count')); + $this->assertSame(15, $updated->getAttribute('count')); // Test decrement operator $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'count' => Operator::decrement(3) ])); - $this->assertEquals(12, $updated->getAttribute('count')); + $this->assertSame(12, $updated->getAttribute('count')); // Test increment with float $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'score' => Operator::increment(2.5) ])); - $this->assertEquals(18.0, $updated->getAttribute('score')); + $this->assertSame(18.0, $updated->getAttribute('score')); // Test append operator $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'tags' => Operator::arrayAppend(['new', 'appended']) ])); - $this->assertEquals(['initial', 'tag', 'new', 'appended'], $updated->getAttribute('tags')); + $this->assertSame(['initial', 'tag', 'new', 'appended'], $updated->getAttribute('tags')); // Test prepend operator $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'tags' => Operator::arrayPrepend(['first']) ])); - $this->assertEquals(['first', 'initial', 'tag', 'new', 'appended'], $updated->getAttribute('tags')); + $this->assertSame(['first', 'initial', 'tag', 'new', 'appended'], $updated->getAttribute('tags')); // Test insert operator $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'numbers' => Operator::arrayInsert(1, 99) ])); - $this->assertEquals([1, 99, 2, 3], $updated->getAttribute('numbers')); + $this->assertSame([1, 99, 2, 3], $updated->getAttribute('numbers')); // Test multiple operators in one update $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ @@ -91,10 +91,10 @@ public function testUpdateWithOperators(): void 'name' => 'Updated Name' // Regular update mixed with operators ])); - $this->assertEquals(20, $updated->getAttribute('count')); - $this->assertEquals(15.0, $updated->getAttribute('score')); - $this->assertEquals([1, 99, 2, 3, 4, 5], $updated->getAttribute('numbers')); - $this->assertEquals('Updated Name', $updated->getAttribute('name')); + $this->assertSame(20, $updated->getAttribute('count')); + $this->assertSame(15.0, $updated->getAttribute('score')); + $this->assertSame([1, 99, 2, 3, 4, 5], $updated->getAttribute('numbers')); + $this->assertSame('Updated Name', $updated->getAttribute('name')); // Test edge cases @@ -102,13 +102,13 @@ public function testUpdateWithOperators(): void $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'count' => Operator::increment() // Should increment by 1 ])); - $this->assertEquals(21, $updated->getAttribute('count')); + $this->assertSame(21, $updated->getAttribute('count')); // Test insert at beginning (index 0) $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'numbers' => Operator::arrayInsert(0, 0) ])); - $this->assertEquals([0, 1, 99, 2, 3, 4, 5], $updated->getAttribute('numbers')); + $this->assertSame([0, 1, 99, 2, 3, 4, 5], $updated->getAttribute('numbers')); // Test insert at end $numbers = $updated->getAttribute('numbers'); @@ -116,7 +116,7 @@ public function testUpdateWithOperators(): void $updated = $database->updateDocument($collectionId, 'test_doc', new Document([ 'numbers' => Operator::arrayInsert($lastIndex, 100) ])); - $this->assertEquals([0, 1, 99, 2, 3, 4, 5, 100], $updated->getAttribute('numbers')); + $this->assertSame([0, 1, 99, 2, 3, 4, 5, 100], $updated->getAttribute('numbers')); $database->deleteCollection($collectionId); } @@ -162,7 +162,7 @@ public function testUpdateDocumentsWithOperators(): void ]) ); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); // Verify all documents were updated $updated = $database->find($collectionId); @@ -170,9 +170,9 @@ public function testUpdateDocumentsWithOperators(): void foreach ($updated as $doc) { $originalCount = (int) str_replace('doc_', '', $doc->getId()) * 10; - $this->assertEquals($originalCount + 5, $doc->getAttribute('count')); + $this->assertSame($originalCount + 5, $doc->getAttribute('count')); $this->assertContains('batch_updated', $doc->getAttribute('tags')); - $this->assertEquals('updated', $doc->getAttribute('category')); + $this->assertSame('updated', $doc->getAttribute('category')); } // Test with query filters @@ -184,16 +184,16 @@ public function testUpdateDocumentsWithOperators(): void [Query::equal('$id', ['doc_1', 'doc_2'])] ); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); // Verify only filtered documents were updated $doc1 = $database->getDocument($collectionId, 'doc_1'); $doc2 = $database->getDocument($collectionId, 'doc_2'); $doc3 = $database->getDocument($collectionId, 'doc_3'); - $this->assertEquals(25, $doc1->getAttribute('count')); // 10 + 5 + 10 - $this->assertEquals(35, $doc2->getAttribute('count')); // 20 + 5 + 10 - $this->assertEquals(35, $doc3->getAttribute('count')); // 30 + 5 (not updated in second batch) + $this->assertSame(25, $doc1->getAttribute('count')); // 10 + 5 + 10 + $this->assertSame(35, $doc2->getAttribute('count')); // 20 + 5 + 10 + $this->assertSame(35, $doc3->getAttribute('count')); // 30 + 5 (not updated in second batch) $database->deleteCollection($collectionId); } @@ -290,7 +290,7 @@ public function testUpdateDocumentsWithAllOperators(): void ]) ); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); // Verify all operators worked correctly $updated = $database->find($collectionId, [Query::orderAsc('$id')]); @@ -298,47 +298,47 @@ public function testUpdateDocumentsWithAllOperators(): void // Check bulk_doc_1 $doc1 = $updated[0]; - $this->assertEquals(15, $doc1->getAttribute('counter')); // 10 + 5 - $this->assertEquals(1.0, $doc1->getAttribute('score')); // 1.5 - 0.5 - $this->assertEquals(2.0, $doc1->getAttribute('multiplier')); // 1.0 * 2 - $this->assertEquals(25.0, $doc1->getAttribute('divisor')); // 50.0 / 2 - $this->assertEquals(2, $doc1->getAttribute('remainder')); // 7 % 5 - $this->assertEquals(4.0, $doc1->getAttribute('power_val')); // 2^2 - $this->assertEquals('Title 1 - Updated', $doc1->getAttribute('title')); - $this->assertEquals('new content 1', $doc1->getAttribute('content')); + $this->assertSame(15, $doc1->getAttribute('counter')); // 10 + 5 + $this->assertSame(1.0, $doc1->getAttribute('score')); // 1.5 - 0.5 + $this->assertSame(2.0, $doc1->getAttribute('multiplier')); // 1.0 * 2 + $this->assertSame(25.0, $doc1->getAttribute('divisor')); // 50.0 / 2 + $this->assertSame(2, $doc1->getAttribute('remainder')); // 7 % 5 + $this->assertSame(4.0, $doc1->getAttribute('power_val')); // 2^2 + $this->assertSame('Title 1 - Updated', $doc1->getAttribute('title')); + $this->assertSame('new content 1', $doc1->getAttribute('content')); $this->assertContains('bulk', $doc1->getAttribute('tags')); $this->assertContains('priority', $doc1->getAttribute('categories')); $this->assertNotContains('shared', $doc1->getAttribute('items')); $this->assertCount(4, $doc1->getAttribute('duplicates')); // Should have unique values - $this->assertEquals([1, 2, 99, 3, 4, 5], $doc1->getAttribute('numbers')); // arrayInsert at index 2 - $this->assertEquals(['b', 'c'], $doc1->getAttribute('intersect_items')); // arrayIntersect - $this->assertEquals(['x', 'w'], $doc1->getAttribute('diff_items')); // arrayDiff (removed y, z) - $this->assertEquals([6, 7, 8, 9, 10], $doc1->getAttribute('filter_numbers')); // arrayFilter greaterThan 5 - $this->assertEquals(true, $doc1->getAttribute('active')); // Was false, toggled to true + $this->assertSame([1, 2, 99, 3, 4, 5], $doc1->getAttribute('numbers')); // arrayInsert at index 2 + $this->assertSame(['b', 'c'], $doc1->getAttribute('intersect_items')); // arrayIntersect + $this->assertSame(['x', 'w'], $doc1->getAttribute('diff_items')); // arrayDiff (removed y, z) + $this->assertSame([6, 7, 8, 9, 10], $doc1->getAttribute('filter_numbers')); // arrayFilter greaterThan 5 + $this->assertSame(true, $doc1->getAttribute('active')); // Was false, toggled to true // Check bulk_doc_2 $doc2 = $updated[1]; - $this->assertEquals(25, $doc2->getAttribute('counter')); // 20 + 5 - $this->assertEquals(2.5, $doc2->getAttribute('score')); // 3.0 - 0.5 - $this->assertEquals(4.0, $doc2->getAttribute('multiplier')); // 2.0 * 2 - $this->assertEquals(50.0, $doc2->getAttribute('divisor')); // 100.0 / 2 - $this->assertEquals(4, $doc2->getAttribute('remainder')); // 14 % 5 - $this->assertEquals(9.0, $doc2->getAttribute('power_val')); // 3^2 - $this->assertEquals('Title 2 - Updated', $doc2->getAttribute('title')); - $this->assertEquals('new content 2', $doc2->getAttribute('content')); - $this->assertEquals(false, $doc2->getAttribute('active')); // Was true, toggled to false + $this->assertSame(25, $doc2->getAttribute('counter')); // 20 + 5 + $this->assertSame(2.5, $doc2->getAttribute('score')); // 3.0 - 0.5 + $this->assertSame(4.0, $doc2->getAttribute('multiplier')); // 2.0 * 2 + $this->assertSame(50.0, $doc2->getAttribute('divisor')); // 100.0 / 2 + $this->assertSame(4, $doc2->getAttribute('remainder')); // 14 % 5 + $this->assertSame(9.0, $doc2->getAttribute('power_val')); // 3^2 + $this->assertSame('Title 2 - Updated', $doc2->getAttribute('title')); + $this->assertSame('new content 2', $doc2->getAttribute('content')); + $this->assertSame(false, $doc2->getAttribute('active')); // Was true, toggled to false // Check bulk_doc_3 $doc3 = $updated[2]; - $this->assertEquals(35, $doc3->getAttribute('counter')); // 30 + 5 - $this->assertEquals(4.0, $doc3->getAttribute('score')); // 4.5 - 0.5 - $this->assertEquals(6.0, $doc3->getAttribute('multiplier')); // 3.0 * 2 - $this->assertEquals(75.0, $doc3->getAttribute('divisor')); // 150.0 / 2 - $this->assertEquals(1, $doc3->getAttribute('remainder')); // 21 % 5 - $this->assertEquals(16.0, $doc3->getAttribute('power_val')); // 4^2 - $this->assertEquals('Title 3 - Updated', $doc3->getAttribute('title')); - $this->assertEquals('new content 3', $doc3->getAttribute('content')); - $this->assertEquals(true, $doc3->getAttribute('active')); // Was false, toggled to true + $this->assertSame(35, $doc3->getAttribute('counter')); // 30 + 5 + $this->assertSame(4.0, $doc3->getAttribute('score')); // 4.5 - 0.5 + $this->assertSame(6.0, $doc3->getAttribute('multiplier')); // 3.0 * 2 + $this->assertSame(75.0, $doc3->getAttribute('divisor')); // 150.0 / 2 + $this->assertSame(1, $doc3->getAttribute('remainder')); // 21 % 5 + $this->assertSame(16.0, $doc3->getAttribute('power_val')); // 4^2 + $this->assertSame('Title 3 - Updated', $doc3->getAttribute('title')); + $this->assertSame('new content 3', $doc3->getAttribute('content')); + $this->assertSame(true, $doc3->getAttribute('active')); // Was false, toggled to true // Verify date operations worked (just check they're not null and are strings) $this->assertNotNull($doc1->getAttribute('last_update')); @@ -390,17 +390,17 @@ public function testUpdateDocumentsOperatorsWithQueries(): void [Query::equal('category', ['A'])] ); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); // Verify only category A documents were updated $categoryA = $database->find($collectionId, [Query::equal('category', ['A']), Query::orderAsc('$id')]); $categoryB = $database->find($collectionId, [Query::equal('category', ['B']), Query::orderAsc('$id')]); - $this->assertEquals(110, $categoryA[0]->getAttribute('count')); // 10 + 100 - $this->assertEquals(120, $categoryA[1]->getAttribute('count')); // 20 + 100 - $this->assertEquals(130, $categoryA[2]->getAttribute('count')); // 30 + 100 - $this->assertEquals(40, $categoryB[0]->getAttribute('count')); // Not updated - $this->assertEquals(50, $categoryB[1]->getAttribute('count')); // Not updated + $this->assertSame(110, $categoryA[0]->getAttribute('count')); // 10 + 100 + $this->assertSame(120, $categoryA[1]->getAttribute('count')); // 20 + 100 + $this->assertSame(130, $categoryA[2]->getAttribute('count')); // 30 + 100 + $this->assertSame(40, $categoryB[0]->getAttribute('count')); // Not updated + $this->assertSame(50, $categoryB[1]->getAttribute('count')); // Not updated // Test 2: Update only documents with count < 50 $count = $database->updateDocuments( @@ -413,19 +413,19 @@ public function testUpdateDocumentsOperatorsWithQueries(): void ); // Only doc_4 (count=40) matches, doc_5 has count=50 which is not < 50 - $this->assertEquals(1, $count); + $this->assertSame(1, $count); $doc4 = $database->getDocument($collectionId, 'query_doc_4'); - $this->assertEquals(false, $doc4->getAttribute('active')); // Was true, now false + $this->assertSame(false, $doc4->getAttribute('active')); // Was true, now false // Doc_4 initial score: 4*1.5 = 6.0 // Category B so not updated in first batch // Second update: 6.0 * 10 = 60.0 - $this->assertEquals(60.0, $doc4->getAttribute('score')); + $this->assertSame(60.0, $doc4->getAttribute('score')); // Verify doc_5 was not updated $doc5 = $database->getDocument($collectionId, 'query_doc_5'); - $this->assertEquals(false, $doc5->getAttribute('active')); // Still false - $this->assertEquals(7.5, $doc5->getAttribute('score')); // Still 5*1.5=7.5 (category B, not updated) + $this->assertSame(false, $doc5->getAttribute('active')); // Still false + $this->assertSame(7.5, $doc5->getAttribute('score')); // Still 5*1.5=7.5 (category B, not updated) $database->deleteCollection($collectionId); } @@ -678,13 +678,13 @@ public function testOperatorDivisionModuloByZero(): void $updated = $database->updateDocument($collectionId, 'zero_test_doc', new Document([ 'number' => Operator::divide(2) ])); - $this->assertEquals(50.0, $updated->getAttribute('number')); + $this->assertSame(50.0, $updated->getAttribute('number')); // Test: Valid modulo $updated = $database->updateDocument($collectionId, 'zero_test_doc', new Document([ 'number' => Operator::modulo(7) ])); - $this->assertEquals(1.0, $updated->getAttribute('number')); // 50 % 7 = 1 + $this->assertSame(1.0, $updated->getAttribute('number')); // 50 % 7 = 1 $database->deleteCollection($collectionId); } @@ -724,13 +724,13 @@ public function testOperatorArrayInsertOutOfBounds(): void $updated = $database->updateDocument($collectionId, 'bounds_test_doc', new Document([ 'items' => Operator::arrayInsert(3, 'd') // Insert at end ])); - $this->assertEquals(['a', 'b', 'c', 'd'], $updated->getAttribute('items')); + $this->assertSame(['a', 'b', 'c', 'd'], $updated->getAttribute('items')); // Test: Insert at valid index (middle) $updated = $database->updateDocument($collectionId, 'bounds_test_doc', new Document([ 'items' => Operator::arrayInsert(2, 'x') // Insert at index 2 ])); - $this->assertEquals(['a', 'b', 'x', 'c', 'd'], $updated->getAttribute('items')); + $this->assertSame(['a', 'b', 'x', 'c', 'd'], $updated->getAttribute('items')); $database->deleteCollection($collectionId); } @@ -762,13 +762,13 @@ public function testOperatorValueLimits(): void $updated = $database->updateDocument($collectionId, 'limits_test_doc', new Document([ 'counter' => Operator::increment(100, 50) // Increment by 100 but max is 50 ])); - $this->assertEquals(50, $updated->getAttribute('counter')); // Should be capped at 50 + $this->assertSame(50, $updated->getAttribute('counter')); // Should be capped at 50 // Test: Decrement with min limit $updated = $database->updateDocument($collectionId, 'limits_test_doc', new Document([ 'score' => Operator::decrement(10, 0) // Decrement score by 10 but min is 0 ])); - $this->assertEquals(0, $updated->getAttribute('score')); // Should be capped at 0 + $this->assertSame(0, $updated->getAttribute('score')); // Should be capped at 0 // Test: Multiply with max limit $doc = $database->createDocument($collectionId, new Document([ @@ -781,13 +781,13 @@ public function testOperatorValueLimits(): void $updated = $database->updateDocument($collectionId, 'limits_test_doc2', new Document([ 'counter' => Operator::multiply(10, 75) // 10 * 10 = 100, but max is 75 ])); - $this->assertEquals(75, $updated->getAttribute('counter')); // Should be capped at 75 + $this->assertSame(75, $updated->getAttribute('counter')); // Should be capped at 75 // Test: Power with max limit $updated = $database->updateDocument($collectionId, 'limits_test_doc2', new Document([ 'score' => Operator::power(3, 100) // 5^3 = 125, but max is 100 ])); - $this->assertEquals(100, $updated->getAttribute('score')); // Should be capped at 100 + $this->assertSame(100, $updated->getAttribute('score')); // Should be capped at 100 $database->deleteCollection($collectionId); } @@ -819,13 +819,13 @@ public function testOperatorArrayFilterValidation(): void $updated = $database->updateDocument($collectionId, 'filter_test_doc', new Document([ 'numbers' => Operator::arrayFilter('equal', 3) // Keep only 3 ])); - $this->assertEquals([3], $updated->getAttribute('numbers')); + $this->assertSame([3], $updated->getAttribute('numbers')); // Test: Filter with not-equals condition on strings $updated = $database->updateDocument($collectionId, 'filter_test_doc', new Document([ 'tags' => Operator::arrayFilter('notEqual', 'banana') // Remove 'banana' ])); - $this->assertEquals(['apple', 'cherry'], $updated->getAttribute('tags')); + $this->assertSame(['apple', 'cherry'], $updated->getAttribute('tags')); $database->deleteCollection($collectionId); } @@ -857,7 +857,7 @@ public function testOperatorReplaceValidation(): void $updated = $database->updateDocument($collectionId, 'replace_test_doc', new Document([ 'text' => Operator::stringReplace('quick', 'slow') ])); - $this->assertEquals('The slow brown fox', $updated->getAttribute('text')); + $this->assertSame('The slow brown fox', $updated->getAttribute('text')); // Test: Replace on non-string field try { @@ -873,7 +873,7 @@ public function testOperatorReplaceValidation(): void $updated = $database->updateDocument($collectionId, 'replace_test_doc', new Document([ 'text' => Operator::stringReplace('slow', '') ])); - $this->assertEquals('The brown fox', $updated->getAttribute('text')); // Two spaces where 'slow' was + $this->assertSame('The brown fox', $updated->getAttribute('text')); // Two spaces where 'slow' was $database->deleteCollection($collectionId); } @@ -907,30 +907,30 @@ public function testOperatorNullValueHandling(): void $updated = $database->updateDocument($collectionId, 'null_test_doc', new Document([ 'nullable_int' => Operator::increment(5) ])); - $this->assertEquals(5, $updated->getAttribute('nullable_int')); + $this->assertSame(5, $updated->getAttribute('nullable_int')); // Test: Concat on null string field (should treat as empty string) $updated = $database->updateDocument($collectionId, 'null_test_doc', new Document([ 'nullable_string' => Operator::stringConcat('hello') ])); - $this->assertEquals('hello', $updated->getAttribute('nullable_string')); + $this->assertSame('hello', $updated->getAttribute('nullable_string')); // Test: Toggle on null boolean field (should treat as false) $updated = $database->updateDocument($collectionId, 'null_test_doc', new Document([ 'nullable_bool' => Operator::toggle() ])); - $this->assertEquals(true, $updated->getAttribute('nullable_bool')); + $this->assertSame(true, $updated->getAttribute('nullable_bool')); // Test operators on non-null values $updated = $database->updateDocument($collectionId, 'null_test_doc', new Document([ 'nullable_int' => Operator::multiply(2) // 5 * 2 = 10 ])); - $this->assertEquals(10, $updated->getAttribute('nullable_int')); + $this->assertSame(10, $updated->getAttribute('nullable_int')); $updated = $database->updateDocument($collectionId, 'null_test_doc', new Document([ 'nullable_string' => Operator::stringReplace('hello', 'hi') ])); - $this->assertEquals('hi', $updated->getAttribute('nullable_string')); + $this->assertSame('hi', $updated->getAttribute('nullable_string')); $database->deleteCollection($collectionId); } @@ -969,13 +969,13 @@ public function testOperatorComplexScenarios(): void ])); $stats = $updated->getAttribute('stats'); $this->assertCount(4, $stats); // [10, 20, 30, 40] - $this->assertEquals([10, 20, 30, 40], $stats); + $this->assertSame([10, 20, 30, 40], $stats); // Test: Array intersection $updated = $database->updateDocument($collectionId, 'complex_test_doc', new Document([ 'stats' => Operator::arrayIntersect([20, 30, 50]) // Keep only 20 and 30 ])); - $this->assertEquals([20, 30], $updated->getAttribute('stats')); + $this->assertSame([20, 30], $updated->getAttribute('stats')); // Test: Array difference $doc2 = $database->createDocument($collectionId, new Document([ @@ -990,7 +990,7 @@ public function testOperatorComplexScenarios(): void $updated = $database->updateDocument($collectionId, 'complex_test_doc2', new Document([ 'stats' => Operator::arrayDiff([2, 4, 6]) // Remove 2 and 4 ])); - $this->assertEquals([1, 3, 5], $updated->getAttribute('stats')); + $this->assertSame([1, 3, 5], $updated->getAttribute('stats')); $database->deleteCollection($collectionId); } @@ -1020,7 +1020,7 @@ public function testOperatorIncrement(): void 'count' => Operator::increment(3) ])); - $this->assertEquals(8, $updated->getAttribute('count')); + $this->assertSame(8, $updated->getAttribute('count')); // Edge case: null value $doc = $database->createDocument($collectionId, new Document([ @@ -1032,7 +1032,7 @@ public function testOperatorIncrement(): void 'count' => Operator::increment(3) ])); - $this->assertEquals(3, $updated->getAttribute('count')); + $this->assertSame(3, $updated->getAttribute('count')); $database->deleteCollection($collectionId); } @@ -1062,7 +1062,7 @@ public function testOperatorStringConcat(): void 'title' => Operator::stringConcat(' World') ])); - $this->assertEquals('Hello World', $updated->getAttribute('title')); + $this->assertSame('Hello World', $updated->getAttribute('title')); // Edge case: null value $doc = $database->createDocument($collectionId, new Document([ @@ -1074,7 +1074,7 @@ public function testOperatorStringConcat(): void 'title' => Operator::stringConcat('Test') ])); - $this->assertEquals('Test', $updated->getAttribute('title')); + $this->assertSame('Test', $updated->getAttribute('title')); $database->deleteCollection($collectionId); } @@ -1104,7 +1104,7 @@ public function testOperatorModulo(): void 'number' => Operator::modulo(3) ])); - $this->assertEquals(1, $updated->getAttribute('number')); + $this->assertSame(1, $updated->getAttribute('number')); $database->deleteCollection($collectionId); } @@ -1134,14 +1134,14 @@ public function testOperatorToggle(): void 'active' => Operator::toggle() ])); - $this->assertEquals(true, $updated->getAttribute('active')); + $this->assertSame(true, $updated->getAttribute('active')); // Test toggle again $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'active' => Operator::toggle() ])); - $this->assertEquals(false, $updated->getAttribute('active')); + $this->assertSame(false, $updated->getAttribute('active')); $database->deleteCollection($collectionId); } @@ -1210,13 +1210,13 @@ public function testOperatorIncrementComprehensive(): void 'count' => Operator::increment(3) ])); - $this->assertEquals(8, $updated->getAttribute('count')); + $this->assertSame(8, $updated->getAttribute('count')); // Success case - with max limit $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'count' => Operator::increment(5, 10) ])); - $this->assertEquals(10, $updated->getAttribute('count')); // Should cap at 10 + $this->assertSame(10, $updated->getAttribute('count')); // Should cap at 10 // Success case - float $doc2 = $database->createDocument($collectionId, new Document([ @@ -1227,7 +1227,7 @@ public function testOperatorIncrementComprehensive(): void $updated = $database->updateDocument($collectionId, $doc2->getId(), new Document([ 'score' => Operator::increment(1.5) ])); - $this->assertEquals(4.0, $updated->getAttribute('score')); + $this->assertSame(4.0, $updated->getAttribute('score')); // Edge case: null value $doc3 = $database->createDocument($collectionId, new Document([ @@ -1237,7 +1237,7 @@ public function testOperatorIncrementComprehensive(): void $updated = $database->updateDocument($collectionId, $doc3->getId(), new Document([ 'count' => Operator::increment(5) ])); - $this->assertEquals(5, $updated->getAttribute('count')); + $this->assertSame(5, $updated->getAttribute('count')); $database->deleteCollection($collectionId); } @@ -1266,13 +1266,13 @@ public function testOperatorDecrementComprehensive(): void 'count' => Operator::decrement(3) ])); - $this->assertEquals(7, $updated->getAttribute('count')); + $this->assertSame(7, $updated->getAttribute('count')); // Success case - with min limit $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'count' => Operator::decrement(10, 5) ])); - $this->assertEquals(5, $updated->getAttribute('count')); // Should stop at min 5 + $this->assertSame(5, $updated->getAttribute('count')); // Should stop at min 5 // Edge case: null value $doc2 = $database->createDocument($collectionId, new Document([ @@ -1282,7 +1282,7 @@ public function testOperatorDecrementComprehensive(): void $updated = $database->updateDocument($collectionId, $doc2->getId(), new Document([ 'count' => Operator::decrement(3) ])); - $this->assertEquals(-3, $updated->getAttribute('count')); + $this->assertSame(-3, $updated->getAttribute('count')); $database->deleteCollection($collectionId); } @@ -1311,13 +1311,13 @@ public function testOperatorMultiplyComprehensive(): void 'value' => Operator::multiply(2.5) ])); - $this->assertEquals(10.0, $updated->getAttribute('value')); + $this->assertSame(10.0, $updated->getAttribute('value')); // Success case - with max limit $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'value' => Operator::multiply(3, 20) ])); - $this->assertEquals(20.0, $updated->getAttribute('value')); // Should cap at 20 + $this->assertSame(20.0, $updated->getAttribute('value')); // Should cap at 20 $database->deleteCollection($collectionId); } @@ -1346,13 +1346,13 @@ public function testOperatorDivideComprehensive(): void 'value' => Operator::divide(2) ])); - $this->assertEquals(5.0, $updated->getAttribute('value')); + $this->assertSame(5.0, $updated->getAttribute('value')); // Success case - with min limit $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'value' => Operator::divide(10, 2) ])); - $this->assertEquals(2.0, $updated->getAttribute('value')); // Should stop at min 2 + $this->assertSame(2.0, $updated->getAttribute('value')); // Should stop at min 2 $database->deleteCollection($collectionId); } @@ -1381,7 +1381,7 @@ public function testOperatorModuloComprehensive(): void 'number' => Operator::modulo(3) ])); - $this->assertEquals(1, $updated->getAttribute('number')); + $this->assertSame(1, $updated->getAttribute('number')); $database->deleteCollection($collectionId); } @@ -1410,13 +1410,13 @@ public function testOperatorPowerComprehensive(): void 'number' => Operator::power(3) ])); - $this->assertEquals(8, $updated->getAttribute('number')); + $this->assertSame(8, $updated->getAttribute('number')); // Success case - with max limit $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'number' => Operator::power(4, 50) ])); - $this->assertEquals(50, $updated->getAttribute('number')); // Should cap at 50 + $this->assertSame(50, $updated->getAttribute('number')); // Should cap at 50 $database->deleteCollection($collectionId); } @@ -1445,7 +1445,7 @@ public function testOperatorStringConcatComprehensive(): void 'text' => Operator::stringConcat(' World') ])); - $this->assertEquals('Hello World', $updated->getAttribute('text')); + $this->assertSame('Hello World', $updated->getAttribute('text')); // Edge case: null value $doc2 = $database->createDocument($collectionId, new Document([ @@ -1455,7 +1455,7 @@ public function testOperatorStringConcatComprehensive(): void $updated = $database->updateDocument($collectionId, $doc2->getId(), new Document([ 'text' => Operator::stringConcat('Test') ])); - $this->assertEquals('Test', $updated->getAttribute('text')); + $this->assertSame('Test', $updated->getAttribute('text')); $database->deleteCollection($collectionId); } @@ -1484,7 +1484,7 @@ public function testOperatorReplaceComprehensive(): void 'text' => Operator::stringReplace('World', 'Universe') ])); - $this->assertEquals('Hello Universe', $updated->getAttribute('text')); + $this->assertSame('Hello Universe', $updated->getAttribute('text')); // Success case - multiple occurrences $doc2 = $database->createDocument($collectionId, new Document([ @@ -1496,7 +1496,7 @@ public function testOperatorReplaceComprehensive(): void 'text' => Operator::stringReplace('test', 'demo') ])); - $this->assertEquals('demo demo demo', $updated->getAttribute('text')); + $this->assertSame('demo demo demo', $updated->getAttribute('text')); $database->deleteCollection($collectionId); } @@ -1525,7 +1525,7 @@ public function testOperatorArrayAppendComprehensive(): void 'tags' => Operator::arrayAppend(['new', 'items']) ])); - $this->assertEquals(['initial', 'new', 'items'], $updated->getAttribute('tags')); + $this->assertSame(['initial', 'new', 'items'], $updated->getAttribute('tags')); // Edge case: empty array $doc2 = $database->createDocument($collectionId, new Document([ @@ -1535,7 +1535,7 @@ public function testOperatorArrayAppendComprehensive(): void $updated = $database->updateDocument($collectionId, $doc2->getId(), new Document([ 'tags' => Operator::arrayAppend(['first']) ])); - $this->assertEquals(['first'], $updated->getAttribute('tags')); + $this->assertSame(['first'], $updated->getAttribute('tags')); // Edge case: null array $doc3 = $database->createDocument($collectionId, new Document([ @@ -1545,7 +1545,7 @@ public function testOperatorArrayAppendComprehensive(): void $updated = $database->updateDocument($collectionId, $doc3->getId(), new Document([ 'tags' => Operator::arrayAppend(['test']) ])); - $this->assertEquals(['test'], $updated->getAttribute('tags')); + $this->assertSame(['test'], $updated->getAttribute('tags')); $database->deleteCollection($collectionId); } @@ -1574,7 +1574,7 @@ public function testOperatorArrayPrependComprehensive(): void 'items' => Operator::arrayPrepend(['first', 'second']) ])); - $this->assertEquals(['first', 'second', 'existing'], $updated->getAttribute('items')); + $this->assertSame(['first', 'second', 'existing'], $updated->getAttribute('items')); $database->deleteCollection($collectionId); } @@ -1603,14 +1603,14 @@ public function testOperatorArrayInsertComprehensive(): void 'numbers' => Operator::arrayInsert(2, 3) ])); - $this->assertEquals([1, 2, 3, 4], $updated->getAttribute('numbers')); + $this->assertSame([1, 2, 3, 4], $updated->getAttribute('numbers')); // Success case - beginning insertion $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'numbers' => Operator::arrayInsert(0, 0) ])); - $this->assertEquals([0, 1, 2, 3, 4], $updated->getAttribute('numbers')); + $this->assertSame([0, 1, 2, 3, 4], $updated->getAttribute('numbers')); // Success case - end insertion $numbers = $updated->getAttribute('numbers'); @@ -1618,7 +1618,7 @@ public function testOperatorArrayInsertComprehensive(): void 'numbers' => Operator::arrayInsert(count($numbers), 5) ])); - $this->assertEquals([0, 1, 2, 3, 4, 5], $updated->getAttribute('numbers')); + $this->assertSame([0, 1, 2, 3, 4, 5], $updated->getAttribute('numbers')); $database->deleteCollection($collectionId); } @@ -1647,7 +1647,7 @@ public function testOperatorArrayRemoveComprehensive(): void 'items' => Operator::arrayRemove('b') ])); - $this->assertEquals(['a', 'c'], $updated->getAttribute('items')); + $this->assertSame(['a', 'c'], $updated->getAttribute('items')); // Success case - multiple occurrences $doc2 = $database->createDocument($collectionId, new Document([ @@ -1659,14 +1659,14 @@ public function testOperatorArrayRemoveComprehensive(): void 'items' => Operator::arrayRemove('x') ])); - $this->assertEquals(['y', 'z'], $updated->getAttribute('items')); + $this->assertSame(['y', 'z'], $updated->getAttribute('items')); // Success case - non-existent value $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'items' => Operator::arrayRemove('nonexistent') ])); - $this->assertEquals(['a', 'c'], $updated->getAttribute('items')); // Should remain unchanged + $this->assertSame(['a', 'c'], $updated->getAttribute('items')); // Should remain unchanged $database->deleteCollection($collectionId); } @@ -1697,7 +1697,7 @@ public function testOperatorArrayUniqueComprehensive(): void $result = $updated->getAttribute('items'); sort($result); // Sort for consistent comparison - $this->assertEquals(['a', 'b', 'c'], $result); + $this->assertSame(['a', 'b', 'c'], $result); // Success case - no duplicates $doc2 = $database->createDocument($collectionId, new Document([ @@ -1709,7 +1709,7 @@ public function testOperatorArrayUniqueComprehensive(): void 'items' => Operator::arrayUnique() ])); - $this->assertEquals(['x', 'y', 'z'], $updated->getAttribute('items')); + $this->assertSame(['x', 'y', 'z'], $updated->getAttribute('items')); $database->deleteCollection($collectionId); } @@ -1740,14 +1740,14 @@ public function testOperatorArrayIntersectComprehensive(): void $result = $updated->getAttribute('items'); sort($result); - $this->assertEquals(['b', 'c'], $result); + $this->assertSame(['b', 'c'], $result); // Success case - no intersection $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'items' => Operator::arrayIntersect(['x', 'y', 'z']) ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); $database->deleteCollection($collectionId); } @@ -1778,7 +1778,7 @@ public function testOperatorArrayDiffComprehensive(): void $result = $updated->getAttribute('items'); sort($result); - $this->assertEquals(['a', 'c'], $result); + $this->assertSame(['a', 'c'], $result); // Success case - empty diff array $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -1787,7 +1787,7 @@ public function testOperatorArrayDiffComprehensive(): void $result = $updated->getAttribute('items'); sort($result); - $this->assertEquals(['a', 'c'], $result); // Should remain unchanged + $this->assertSame(['a', 'c'], $result); // Should remain unchanged $database->deleteCollection($collectionId); } @@ -1818,14 +1818,14 @@ public function testOperatorArrayFilterComprehensive(): void 'numbers' => Operator::arrayFilter('equal', 2) ])); - $this->assertEquals([2, 2], $updated->getAttribute('numbers')); + $this->assertSame([2, 2], $updated->getAttribute('numbers')); // Success case - isNotNull condition $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'mixed' => Operator::arrayFilter('isNotNull') ])); - $this->assertEquals(['a', 'b', 'c'], $updated->getAttribute('mixed')); + $this->assertSame(['a', 'b', 'c'], $updated->getAttribute('mixed')); // Success case - greaterThan condition (reset array first) $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -1836,7 +1836,7 @@ public function testOperatorArrayFilterComprehensive(): void 'numbers' => Operator::arrayFilter('greaterThan', 2) ])); - $this->assertEquals([3, 4], $updated->getAttribute('numbers')); + $this->assertSame([3, 4], $updated->getAttribute('numbers')); // Success case - lessThan condition (reset array first) $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -1847,7 +1847,7 @@ public function testOperatorArrayFilterComprehensive(): void 'numbers' => Operator::arrayFilter('lessThan', 3) ])); - $this->assertEquals([1, 2, 2], $updated->getAttribute('numbers')); + $this->assertSame([1, 2, 2], $updated->getAttribute('numbers')); $database->deleteCollection($collectionId); } @@ -1878,7 +1878,7 @@ public function testOperatorArrayFilterNumericComparisons(): void $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'integers' => Operator::arrayFilter('greaterThan', 10) ])); - $this->assertEquals([15, 20, 25], $updated->getAttribute('integers')); + $this->assertSame([15, 20, 25], $updated->getAttribute('integers')); // Reset and test lessThan with integers $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -1888,13 +1888,13 @@ public function testOperatorArrayFilterNumericComparisons(): void $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'integers' => Operator::arrayFilter('lessThan', 15) ])); - $this->assertEquals([1, 5, 10], $updated->getAttribute('integers')); + $this->assertSame([1, 5, 10], $updated->getAttribute('integers')); // Test greaterThan with floats $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'floats' => Operator::arrayFilter('greaterThan', 10.5) ])); - $this->assertEquals([15.5, 20.5, 25.5], $updated->getAttribute('floats')); + $this->assertSame([15.5, 20.5, 25.5], $updated->getAttribute('floats')); // Reset and test lessThan with floats $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -1904,7 +1904,7 @@ public function testOperatorArrayFilterNumericComparisons(): void $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'floats' => Operator::arrayFilter('lessThan', 15.5) ])); - $this->assertEquals([1.5, 5.5, 10.5], $updated->getAttribute('floats')); + $this->assertSame([1.5, 5.5, 10.5], $updated->getAttribute('floats')); $database->deleteCollection($collectionId); } @@ -1933,14 +1933,14 @@ public function testOperatorToggleComprehensive(): void 'active' => Operator::toggle() ])); - $this->assertEquals(false, $updated->getAttribute('active')); + $this->assertSame(false, $updated->getAttribute('active')); // Success case - false to true $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'active' => Operator::toggle() ])); - $this->assertEquals(true, $updated->getAttribute('active')); + $this->assertSame(true, $updated->getAttribute('active')); // Success case - null to true $doc2 = $database->createDocument($collectionId, new Document([ @@ -1952,7 +1952,7 @@ public function testOperatorToggleComprehensive(): void 'active' => Operator::toggle() ])); - $this->assertEquals(true, $updated->getAttribute('active')); + $this->assertSame(true, $updated->getAttribute('active')); $database->deleteCollection($collectionId); } @@ -1981,14 +1981,14 @@ public function testOperatorDateAddDaysComprehensive(): void 'date' => Operator::dateAddDays(5) ])); - $this->assertEquals('2023-01-06T00:00:00.000+00:00', $updated->getAttribute('date')); + $this->assertSame('2023-01-06T00:00:00.000+00:00', $updated->getAttribute('date')); // Success case - negative days (subtracting) $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ 'date' => Operator::dateAddDays(-3) ])); - $this->assertEquals('2023-01-03T00:00:00.000+00:00', $updated->getAttribute('date')); + $this->assertSame('2023-01-03T00:00:00.000+00:00', $updated->getAttribute('date')); $database->deleteCollection($collectionId); } @@ -2017,7 +2017,7 @@ public function testOperatorDateSubDaysComprehensive(): void 'date' => Operator::dateSubDays(3) ])); - $this->assertEquals('2023-01-07T00:00:00.000+00:00', $updated->getAttribute('date')); + $this->assertSame('2023-01-07T00:00:00.000+00:00', $updated->getAttribute('date')); $database->deleteCollection($collectionId); } @@ -2095,11 +2095,11 @@ public function testMixedOperators(): void 'active' => Operator::toggle() ])); - $this->assertEquals(8, $updated->getAttribute('count')); - $this->assertEquals(15.0, $updated->getAttribute('score')); - $this->assertEquals(['initial', 'new', 'item'], $updated->getAttribute('tags')); - $this->assertEquals('Test Document', $updated->getAttribute('name')); - $this->assertEquals(true, $updated->getAttribute('active')); + $this->assertSame(8, $updated->getAttribute('count')); + $this->assertSame(15.0, $updated->getAttribute('score')); + $this->assertSame(['initial', 'new', 'item'], $updated->getAttribute('tags')); + $this->assertSame('Test Document', $updated->getAttribute('name')); + $this->assertSame(true, $updated->getAttribute('active')); $database->deleteCollection($collectionId); } @@ -2136,7 +2136,7 @@ public function testOperatorsBatch(): void Query::equal('category', ['test']) ]); - $this->assertEquals(3, $updateCount); + $this->assertSame(3, $updateCount); // Fetch the updated documents to verify the operator worked $updated = $database->find($collectionId, [ @@ -2144,9 +2144,9 @@ public function testOperatorsBatch(): void Query::orderAsc('count') ]); $this->assertCount(3, $updated); - $this->assertEquals(15, $updated[0]->getAttribute('count')); // 5 + 10 - $this->assertEquals(20, $updated[1]->getAttribute('count')); // 10 + 10 - $this->assertEquals(25, $updated[2]->getAttribute('count')); // 15 + 10 + $this->assertSame(15, $updated[0]->getAttribute('count')); // 5 + 10 + $this->assertSame(20, $updated[1]->getAttribute('count')); // 10 + 10 + $this->assertSame(25, $updated[2]->getAttribute('count')); // 15 + 10 $database->deleteCollection($collectionId); } @@ -2174,7 +2174,7 @@ public function testArrayInsertAtBeginning(): void 'items' => ['second', 'third', 'fourth'] ])); - $this->assertEquals(['second', 'third', 'fourth'], $doc->getAttribute('items')); + $this->assertSame(['second', 'third', 'fourth'], $doc->getAttribute('items')); // Attempt to insert at index 0 $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -2185,7 +2185,7 @@ public function testArrayInsertAtBeginning(): void $refetched = $database->getDocument($collectionId, $doc->getId()); // Should insert 'first' at index 0, shifting existing elements - $this->assertEquals( + $this->assertSame( ['first', 'second', 'third', 'fourth'], $refetched->getAttribute('items'), 'ARRAY_INSERT should insert element at index 0' @@ -2217,7 +2217,7 @@ public function testArrayInsertAtMiddle(): void 'items' => [1, 2, 4, 5, 6] ])); - $this->assertEquals([1, 2, 4, 5, 6], $doc->getAttribute('items')); + $this->assertSame([1, 2, 4, 5, 6], $doc->getAttribute('items')); // Attempt to insert at index 2 (middle position) $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -2228,7 +2228,7 @@ public function testArrayInsertAtMiddle(): void $refetched = $database->getDocument($collectionId, $doc->getId()); // Should insert 3 at index 2, shifting remaining elements - $this->assertEquals( + $this->assertSame( [1, 2, 3, 4, 5, 6], $refetched->getAttribute('items'), 'ARRAY_INSERT should insert element at index 2' @@ -2260,7 +2260,7 @@ public function testArrayInsertAtEnd(): void 'items' => ['apple', 'banana', 'cherry'] ])); - $this->assertEquals(['apple', 'banana', 'cherry'], $doc->getAttribute('items')); + $this->assertSame(['apple', 'banana', 'cherry'], $doc->getAttribute('items')); // Attempt to insert at end (index = length) $items = $doc->getAttribute('items'); @@ -2272,7 +2272,7 @@ public function testArrayInsertAtEnd(): void $refetched = $database->getDocument($collectionId, $doc->getId()); // Should insert 'date' at end of array - $this->assertEquals( + $this->assertSame( ['apple', 'banana', 'cherry', 'date'], $refetched->getAttribute('items'), 'ARRAY_INSERT should insert element at end of array' @@ -2304,7 +2304,7 @@ public function testArrayInsertMultipleOperations(): void 'numbers' => [1, 3, 5] ])); - $this->assertEquals([1, 3, 5], $doc->getAttribute('numbers')); + $this->assertSame([1, 3, 5], $doc->getAttribute('numbers')); // First insert: add 2 at index 1 $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -2315,7 +2315,7 @@ public function testArrayInsertMultipleOperations(): void $refetched = $database->getDocument($collectionId, $doc->getId()); // Should insert 2 at index 1 - $this->assertEquals( + $this->assertSame( [1, 2, 3, 5], $refetched->getAttribute('numbers'), 'First ARRAY_INSERT should work' @@ -2330,7 +2330,7 @@ public function testArrayInsertMultipleOperations(): void $refetched = $database->getDocument($collectionId, $doc->getId()); // Should insert 4 at index 3 - $this->assertEquals( + $this->assertSame( [1, 2, 3, 4, 5], $refetched->getAttribute('numbers'), 'Second ARRAY_INSERT should work' @@ -2345,7 +2345,7 @@ public function testArrayInsertMultipleOperations(): void $refetched = $database->getDocument($collectionId, $doc->getId()); // Should insert 0 at index 0 - $this->assertEquals( + $this->assertSame( [0, 1, 2, 3, 4, 5], $refetched->getAttribute('numbers'), 'Third ARRAY_INSERT should work' @@ -2397,7 +2397,7 @@ public function testOperatorIncrementExceedsMaxValue(): void 'score' => 95 ])); - $this->assertEquals(95, $doc->getAttribute('score')); + $this->assertSame(95, $doc->getAttribute('score')); // Test case 1: Small increment that stays within MAX_INT should work $updated = $database->updateDocument($collectionId, $doc->getId(), new Document([ @@ -2405,7 +2405,7 @@ public function testOperatorIncrementExceedsMaxValue(): void ])); // Refetch to get the actual computed value $updated = $database->getDocument($collectionId, $doc->getId()); - $this->assertEquals(100, $updated->getAttribute('score')); + $this->assertSame(100, $updated->getAttribute('score')); // Test case 2: Increment that would exceed Database::MAX_INT (2147483647) // This is the bug - the operator will create a value > MAX_INT which should be rejected @@ -2415,7 +2415,7 @@ public function testOperatorIncrementExceedsMaxValue(): void 'score' => Database::MAX_INT - 10 // Start near the maximum ])); - $this->assertEquals(Database::MAX_INT - 10, $doc2->getAttribute('score')); + $this->assertSame(Database::MAX_INT - 10, $doc2->getAttribute('score')); // BUG EXPOSED: This increment will push the value beyond Database::MAX_INT // It should throw a StructureException for exceeding the integer range, @@ -2473,8 +2473,8 @@ public function testOperatorConcatExceedsMaxLength(): void 'title' => 'Hello World' // 11 characters ])); - $this->assertEquals('Hello World', $doc->getAttribute('title')); - $this->assertEquals(11, strlen($doc->getAttribute('title'))); + $this->assertSame('Hello World', $doc->getAttribute('title')); + $this->assertSame(11, strlen($doc->getAttribute('title'))); // BUG EXPOSED: Concat a 15-character string to make total length 26 (exceeds max of 20) // This should throw a StructureException for exceeding max length, @@ -2532,7 +2532,7 @@ public function testOperatorMultiplyViolatesRange(): void 'quantity' => 1000000000 // 1 billion ])); - $this->assertEquals(1000000000, $doc->getAttribute('quantity')); + $this->assertSame(1000000000, $doc->getAttribute('quantity')); // BUG EXPOSED: Multiply by 10 to get 10 billion, which exceeds MAX_INT (2.147 billion) // This should throw a StructureException for exceeding the integer range, @@ -2596,7 +2596,7 @@ public function testOperatorMultiplyWithNegativeMultiplier(): void $updated1 = $database->updateDocument($collectionId, 'negative_multiply', new Document([ 'value' => Operator::multiply(-2) ])); - $this->assertEquals(-20.0, $updated1->getAttribute('value'), 'Multiply by negative should work correctly'); + $this->assertSame(-20.0, $updated1->getAttribute('value'), 'Multiply by negative should work correctly'); // Test negative multiplier WITH max limit - should not incorrectly cap $doc2 = $database->createDocument($collectionId, new Document([ @@ -2608,7 +2608,7 @@ public function testOperatorMultiplyWithNegativeMultiplier(): void $updated2 = $database->updateDocument($collectionId, 'negative_with_max', new Document([ 'value' => Operator::multiply(-2, 100) // max=100, but result will be -20 ])); - $this->assertEquals(-20.0, $updated2->getAttribute('value'), 'Negative multiplier with max should not trigger overflow check'); + $this->assertSame(-20.0, $updated2->getAttribute('value'), 'Negative multiplier with max should not trigger overflow check'); // Test positive value * negative multiplier - result is negative, should not cap $doc3 = $database->createDocument($collectionId, new Document([ @@ -2620,7 +2620,7 @@ public function testOperatorMultiplyWithNegativeMultiplier(): void $updated3 = $database->updateDocument($collectionId, 'pos_times_neg', new Document([ 'value' => Operator::multiply(-3, 100) // 50 * -3 = -150, should not be capped at 100 ])); - $this->assertEquals(-150.0, $updated3->getAttribute('value'), 'Positive * negative should compute correctly (result is negative, no cap)'); + $this->assertSame(-150.0, $updated3->getAttribute('value'), 'Positive * negative should compute correctly (result is negative, no cap)'); // Test negative value * negative multiplier that SHOULD hit max cap $doc4 = $database->createDocument($collectionId, new Document([ @@ -2632,7 +2632,7 @@ public function testOperatorMultiplyWithNegativeMultiplier(): void $updated4 = $database->updateDocument($collectionId, 'negative_overflow', new Document([ 'value' => Operator::multiply(-3, 100) // -60 * -3 = 180, should be capped at 100 ])); - $this->assertEquals(100.0, $updated4->getAttribute('value'), 'Negative * negative should cap at max when result would exceed it'); + $this->assertSame(100.0, $updated4->getAttribute('value'), 'Negative * negative should cap at max when result would exceed it'); // Test zero multiplier with max $doc5 = $database->createDocument($collectionId, new Document([ @@ -2644,7 +2644,7 @@ public function testOperatorMultiplyWithNegativeMultiplier(): void $updated5 = $database->updateDocument($collectionId, 'zero_multiply', new Document([ 'value' => Operator::multiply(0, 100) ])); - $this->assertEquals(0.0, $updated5->getAttribute('value'), 'Multiply by zero should result in zero'); + $this->assertSame(0.0, $updated5->getAttribute('value'), 'Multiply by zero should result in zero'); $database->deleteCollection($collectionId); } @@ -2678,7 +2678,7 @@ public function testOperatorDivideWithNegativeDivisor(): void $updated1 = $database->updateDocument($collectionId, 'negative_divide', new Document([ 'value' => Operator::divide(-2) ])); - $this->assertEquals(-10.0, $updated1->getAttribute('value'), 'Divide by negative should work correctly'); + $this->assertSame(-10.0, $updated1->getAttribute('value'), 'Divide by negative should work correctly'); // Test negative divisor WITH min limit - should not incorrectly cap $doc2 = $database->createDocument($collectionId, new Document([ @@ -2690,7 +2690,7 @@ public function testOperatorDivideWithNegativeDivisor(): void $updated2 = $database->updateDocument($collectionId, 'negative_with_min', new Document([ 'value' => Operator::divide(-2, -50) // min=-50, result will be -10 ])); - $this->assertEquals(-10.0, $updated2->getAttribute('value'), 'Negative divisor with min should not trigger underflow check'); + $this->assertSame(-10.0, $updated2->getAttribute('value'), 'Negative divisor with min should not trigger underflow check'); // Test positive value / negative divisor - result is negative, should not cap at min $doc3 = $database->createDocument($collectionId, new Document([ @@ -2702,7 +2702,7 @@ public function testOperatorDivideWithNegativeDivisor(): void $updated3 = $database->updateDocument($collectionId, 'pos_div_neg', new Document([ 'value' => Operator::divide(-4, -10) // 100 / -4 = -25, which is below min -10, so floor at -10 ])); - $this->assertEquals(-10.0, $updated3->getAttribute('value'), 'Positive / negative should floor at min when result would be below it'); + $this->assertSame(-10.0, $updated3->getAttribute('value'), 'Positive / negative should floor at min when result would be below it'); // Test negative value / negative divisor that would go below min $doc4 = $database->createDocument($collectionId, new Document([ @@ -2714,7 +2714,7 @@ public function testOperatorDivideWithNegativeDivisor(): void $updated4 = $database->updateDocument($collectionId, 'negative_underflow', new Document([ 'value' => Operator::divide(-2, -10) // 40 / -2 = -20, which is below min -10, so floor at -10 ])); - $this->assertEquals(-10.0, $updated4->getAttribute('value'), 'Positive / negative should floor at min when result would be below it'); + $this->assertSame(-10.0, $updated4->getAttribute('value'), 'Positive / negative should floor at min when result would be below it'); $database->deleteCollection($collectionId); } @@ -2749,7 +2749,7 @@ public function testOperatorArrayAppendViolatesItemConstraints(): void 'numbers' => [10, 20, 30] ])); - $this->assertEquals([10, 20, 30], $doc->getAttribute('numbers')); + $this->assertSame([10, 20, 30], $doc->getAttribute('numbers')); // Test case 1: Append integers that exceed MAX_INT // BUG EXPOSED: These values exceed the constraint but validation is not applied post-operator @@ -2864,7 +2864,7 @@ public function testOperatorWithExtremeIntegerValues(): void ])); // Should be capped at max $this->assertLessThanOrEqual(PHP_INT_MAX - 500, $updated->getAttribute('bigint_max')); - $this->assertEquals(PHP_INT_MAX - 500, $updated->getAttribute('bigint_max')); + $this->assertSame(PHP_INT_MAX - 500, $updated->getAttribute('bigint_max')); // Test decrement near min with limit $updated = $database->updateDocument($collectionId, 'extreme_int_doc', new Document([ @@ -2872,7 +2872,7 @@ public function testOperatorWithExtremeIntegerValues(): void ])); // Should be capped at min $this->assertGreaterThanOrEqual(PHP_INT_MIN + 500, $updated->getAttribute('bigint_min')); - $this->assertEquals(PHP_INT_MIN + 500, $updated->getAttribute('bigint_min')); + $this->assertSame(PHP_INT_MIN + 500, $updated->getAttribute('bigint_min')); $database->deleteCollection($collectionId); } @@ -2989,13 +2989,13 @@ public function testOperatorWithEmptyStrings(): void $updated = $database->updateDocument($collectionId, 'empty_str_doc', new Document([ 'text' => Operator::stringConcat('hello') ])); - $this->assertEquals('hello', $updated->getAttribute('text')); + $this->assertSame('hello', $updated->getAttribute('text')); // Test concatenation of empty string $updated = $database->updateDocument($collectionId, 'empty_str_doc', new Document([ 'text' => Operator::stringConcat('') ])); - $this->assertEquals('hello', $updated->getAttribute('text')); + $this->assertSame('hello', $updated->getAttribute('text')); // Test replace with empty search string (should do nothing or replace all) $database->updateDocument($collectionId, 'empty_str_doc', new Document([ @@ -3006,13 +3006,13 @@ public function testOperatorWithEmptyStrings(): void 'text' => Operator::stringReplace('', 'X') ])); // Empty search should not change the string - $this->assertEquals('test', $updated->getAttribute('text')); + $this->assertSame('test', $updated->getAttribute('text')); // Test replace with empty replace string (deletion) $updated = $database->updateDocument($collectionId, 'empty_str_doc', new Document([ 'text' => Operator::stringReplace('t', '') ])); - $this->assertEquals('es', $updated->getAttribute('text')); + $this->assertSame('es', $updated->getAttribute('text')); $database->deleteCollection($collectionId); } @@ -3046,13 +3046,13 @@ public function testOperatorWithUnicodeCharacters(): void $updated = $database->updateDocument($collectionId, 'unicode_doc', new Document([ 'text' => Operator::stringConcat('👋🌍') ])); - $this->assertEquals('你好👋🌍', $updated->getAttribute('text')); + $this->assertSame('你好👋🌍', $updated->getAttribute('text')); // Test replace with Chinese characters $updated = $database->updateDocument($collectionId, 'unicode_doc', new Document([ 'text' => Operator::stringReplace('你好', '再见') ])); - $this->assertEquals('再见👋🌍', $updated->getAttribute('text')); + $this->assertSame('再见👋🌍', $updated->getAttribute('text')); // Test with combining characters (é = e + ´) $database->updateDocument($collectionId, 'unicode_doc', new Document([ @@ -3096,7 +3096,7 @@ public function testOperatorArrayOperationsOnEmptyArrays(): void $updated = $database->updateDocument($collectionId, 'empty_array_doc', new Document([ 'items' => Operator::arrayAppend(['first']) ])); - $this->assertEquals(['first'], $updated->getAttribute('items')); + $this->assertSame(['first'], $updated->getAttribute('items')); // Reset and test prepend to empty array $database->updateDocument($collectionId, 'empty_array_doc', new Document([ @@ -3106,7 +3106,7 @@ public function testOperatorArrayOperationsOnEmptyArrays(): void $updated = $database->updateDocument($collectionId, 'empty_array_doc', new Document([ 'items' => Operator::arrayPrepend(['prepended']) ])); - $this->assertEquals(['prepended'], $updated->getAttribute('items')); + $this->assertSame(['prepended'], $updated->getAttribute('items')); // Test insert at index 0 of empty array $database->updateDocument($collectionId, 'empty_array_doc', new Document([ @@ -3116,7 +3116,7 @@ public function testOperatorArrayOperationsOnEmptyArrays(): void $updated = $database->updateDocument($collectionId, 'empty_array_doc', new Document([ 'items' => Operator::arrayInsert(0, 'zero') ])); - $this->assertEquals(['zero'], $updated->getAttribute('items')); + $this->assertSame(['zero'], $updated->getAttribute('items')); // Test unique on empty array $database->updateDocument($collectionId, 'empty_array_doc', new Document([ @@ -3126,13 +3126,13 @@ public function testOperatorArrayOperationsOnEmptyArrays(): void $updated = $database->updateDocument($collectionId, 'empty_array_doc', new Document([ 'items' => Operator::arrayUnique() ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); // Test remove from empty array (should stay empty) $updated = $database->updateDocument($collectionId, 'empty_array_doc', new Document([ 'items' => Operator::arrayRemove('nonexistent') ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); $database->deleteCollection($collectionId); } @@ -3180,7 +3180,7 @@ public function testOperatorArrayWithNullAndSpecialValues(): void 'mixed' => Operator::arrayRemove('') ])); $this->assertNotContains('', $updated->getAttribute('mixed')); - $this->assertEquals(['a', 'b'], $updated->getAttribute('mixed')); + $this->assertSame(['a', 'b'], $updated->getAttribute('mixed')); $database->deleteCollection($collectionId); } @@ -3216,7 +3216,7 @@ public function testOperatorModuloWithNegativeNumbers(): void ])); // In PHP/MySQL: -17 % 5 = -2 - $this->assertEquals(-2, $updated->getAttribute('value')); + $this->assertSame(-2, $updated->getAttribute('value')); // Test positive % negative $database->updateDocument($collectionId, 'neg_mod_doc', new Document([ @@ -3228,7 +3228,7 @@ public function testOperatorModuloWithNegativeNumbers(): void ])); // In PHP/MySQL: 17 % -5 = 2 - $this->assertEquals(2, $updated->getAttribute('value')); + $this->assertSame(2, $updated->getAttribute('value')); $database->deleteCollection($collectionId); } @@ -3319,7 +3319,7 @@ public function testOperatorWithVeryLongStrings(): void ])); $result = $updated->getAttribute('text'); - $this->assertEquals(20000, strlen($result)); + $this->assertSame(20000, strlen($result)); $this->assertStringStartsWith('AAA', $result); $this->assertStringEndsWith('BBB', $result); @@ -3437,7 +3437,7 @@ public function testOperatorArrayInsertAtExactBoundaries(): void $updated = $database->updateDocument($collectionId, 'boundary_insert_doc', new Document([ 'items' => Operator::arrayInsert(3, 'd') ])); - $this->assertEquals(['a', 'b', 'c', 'd'], $updated->getAttribute('items')); + $this->assertSame(['a', 'b', 'c', 'd'], $updated->getAttribute('items')); // Test insert beyond length (should throw exception) try { @@ -3483,38 +3483,38 @@ public function testOperatorSequentialApplications(): void $updated = $database->updateDocument($collectionId, 'sequential_doc', new Document([ 'counter' => Operator::increment(5) ])); - $this->assertEquals(15, $updated->getAttribute('counter')); + $this->assertSame(15, $updated->getAttribute('counter')); $updated = $database->updateDocument($collectionId, 'sequential_doc', new Document([ 'counter' => Operator::multiply(2) ])); - $this->assertEquals(30, $updated->getAttribute('counter')); + $this->assertSame(30, $updated->getAttribute('counter')); $updated = $database->updateDocument($collectionId, 'sequential_doc', new Document([ 'counter' => Operator::decrement(10) ])); - $this->assertEquals(20, $updated->getAttribute('counter')); + $this->assertSame(20, $updated->getAttribute('counter')); $updated = $database->updateDocument($collectionId, 'sequential_doc', new Document([ 'counter' => Operator::divide(2) ])); - $this->assertEquals(10, $updated->getAttribute('counter')); + $this->assertSame(10, $updated->getAttribute('counter')); // Sequential string operations $updated = $database->updateDocument($collectionId, 'sequential_doc', new Document([ 'text' => Operator::stringConcat('-middle') ])); - $this->assertEquals('start-middle', $updated->getAttribute('text')); + $this->assertSame('start-middle', $updated->getAttribute('text')); $updated = $database->updateDocument($collectionId, 'sequential_doc', new Document([ 'text' => Operator::stringConcat('-end') ])); - $this->assertEquals('start-middle-end', $updated->getAttribute('text')); + $this->assertSame('start-middle-end', $updated->getAttribute('text')); $updated = $database->updateDocument($collectionId, 'sequential_doc', new Document([ 'text' => Operator::stringReplace('-', '_') ])); - $this->assertEquals('start_middle_end', $updated->getAttribute('text')); + $this->assertSame('start_middle_end', $updated->getAttribute('text')); $database->deleteCollection($collectionId); } @@ -3548,19 +3548,19 @@ public function testOperatorWithZeroValues(): void $updated = $database->updateDocument($collectionId, 'zero_doc', new Document([ 'value' => Operator::increment(5) ])); - $this->assertEquals(5.0, $updated->getAttribute('value')); + $this->assertSame(5.0, $updated->getAttribute('value')); // Multiply by zero (should become zero) $updated = $database->updateDocument($collectionId, 'zero_doc', new Document([ 'value' => Operator::multiply(0) ])); - $this->assertEquals(0.0, $updated->getAttribute('value')); + $this->assertSame(0.0, $updated->getAttribute('value')); // Power with zero base: 0^5 = 0 $updated = $database->updateDocument($collectionId, 'zero_doc', new Document([ 'value' => Operator::power(5) ])); - $this->assertEquals(0.0, $updated->getAttribute('value')); + $this->assertSame(0.0, $updated->getAttribute('value')); // Increment and test power with zero exponent: n^0 = 1 $database->updateDocument($collectionId, 'zero_doc', new Document([ @@ -3570,7 +3570,7 @@ public function testOperatorWithZeroValues(): void $updated = $database->updateDocument($collectionId, 'zero_doc', new Document([ 'value' => Operator::power(0) ])); - $this->assertEquals(1.0, $updated->getAttribute('value')); + $this->assertSame(1.0, $updated->getAttribute('value')); $database->deleteCollection($collectionId); } @@ -3604,7 +3604,7 @@ public function testOperatorArrayIntersectAndDiffWithEmptyResults(): void $updated = $database->updateDocument($collectionId, 'empty_result_doc', new Document([ 'items' => Operator::arrayIntersect(['x', 'y', 'z']) ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); // Reset and test diff that removes all elements $database->updateDocument($collectionId, 'empty_result_doc', new Document([ @@ -3614,13 +3614,13 @@ public function testOperatorArrayIntersectAndDiffWithEmptyResults(): void $updated = $database->updateDocument($collectionId, 'empty_result_doc', new Document([ 'items' => Operator::arrayDiff(['a', 'b', 'c']) ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); // Test intersect on empty array $updated = $database->updateDocument($collectionId, 'empty_result_doc', new Document([ 'items' => Operator::arrayIntersect(['x', 'y']) ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); $database->deleteCollection($collectionId); } @@ -3654,7 +3654,7 @@ public function testOperatorReplaceMultipleOccurrences(): void $updated = $database->updateDocument($collectionId, 'replace_multi_doc', new Document([ 'text' => Operator::stringReplace('the', 'a') ])); - $this->assertEquals('a cat and a dog', $updated->getAttribute('text')); + $this->assertSame('a cat and a dog', $updated->getAttribute('text')); // Replace with overlapping patterns $database->updateDocument($collectionId, 'replace_multi_doc', new Document([ @@ -3664,7 +3664,7 @@ public function testOperatorReplaceMultipleOccurrences(): void $updated = $database->updateDocument($collectionId, 'replace_multi_doc', new Document([ 'text' => Operator::stringReplace('aaa', 'X') ])); - $this->assertEquals('X bbb X ccc X', $updated->getAttribute('text')); + $this->assertSame('X bbb X ccc X', $updated->getAttribute('text')); $database->deleteCollection($collectionId); } @@ -3742,7 +3742,7 @@ public function testOperatorArrayWithSingleElement(): void $updated = $database->updateDocument($collectionId, 'single_elem_doc', new Document([ 'items' => Operator::arrayRemove('only') ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); // Reset and test unique on single element $database->updateDocument($collectionId, 'single_elem_doc', new Document([ @@ -3752,13 +3752,13 @@ public function testOperatorArrayWithSingleElement(): void $updated = $database->updateDocument($collectionId, 'single_elem_doc', new Document([ 'items' => Operator::arrayUnique() ])); - $this->assertEquals(['single'], $updated->getAttribute('items')); + $this->assertSame(['single'], $updated->getAttribute('items')); // Test intersect with single element (match) $updated = $database->updateDocument($collectionId, 'single_elem_doc', new Document([ 'items' => Operator::arrayIntersect(['single']) ])); - $this->assertEquals(['single'], $updated->getAttribute('items')); + $this->assertSame(['single'], $updated->getAttribute('items')); // Test intersect with single element (no match) $database->updateDocument($collectionId, 'single_elem_doc', new Document([ @@ -3768,7 +3768,7 @@ public function testOperatorArrayWithSingleElement(): void $updated = $database->updateDocument($collectionId, 'single_elem_doc', new Document([ 'items' => Operator::arrayIntersect(['other']) ])); - $this->assertEquals([], $updated->getAttribute('items')); + $this->assertSame([], $updated->getAttribute('items')); $database->deleteCollection($collectionId); } @@ -3799,19 +3799,19 @@ public function testOperatorToggleFromDefaultValue(): void ])); // Verify default - $this->assertEquals(false, $doc->getAttribute('flag')); + $this->assertSame(false, $doc->getAttribute('flag')); // Toggle from default false to true $updated = $database->updateDocument($collectionId, 'toggle_default_doc', new Document([ 'flag' => Operator::toggle() ])); - $this->assertEquals(true, $updated->getAttribute('flag')); + $this->assertSame(true, $updated->getAttribute('flag')); // Toggle back $updated = $database->updateDocument($collectionId, 'toggle_default_doc', new Document([ 'flag' => Operator::toggle() ])); - $this->assertEquals(false, $updated->getAttribute('flag')); + $this->assertSame(false, $updated->getAttribute('flag')); $database->deleteCollection($collectionId); } @@ -3846,7 +3846,7 @@ public function testOperatorWithAttributeConstraints(): void $updated = $database->updateDocument($collectionId, 'constraint_doc', new Document([ 'small_int' => Operator::increment(50, 120) ])); - $this->assertEquals(120, $updated->getAttribute('small_int')); + $this->assertSame(120, $updated->getAttribute('small_int')); // Test multiply that would exceed without limit $database->updateDocument($collectionId, 'constraint_doc', new Document([ @@ -3856,7 +3856,7 @@ public function testOperatorWithAttributeConstraints(): void $updated = $database->updateDocument($collectionId, 'constraint_doc', new Document([ 'small_int' => Operator::multiply(1000, 5000) ])); - $this->assertEquals(5000, $updated->getAttribute('small_int')); + $this->assertSame(5000, $updated->getAttribute('small_int')); $database->deleteCollection($collectionId); } @@ -3912,17 +3912,17 @@ function (Document $doc, Document $old) use (&$callbackResults) { $expectedScore = $old->getAttribute('score') * 2; $expectedTags = array_merge($old->getAttribute('tags'), ['updated']); - $this->assertEquals($expectedCount, $doc->getAttribute('count')); - $this->assertEquals($expectedScore, $doc->getAttribute('score')); - $this->assertEquals($expectedTags, $doc->getAttribute('tags')); + $this->assertSame($expectedCount, $doc->getAttribute('count')); + $this->assertSame($expectedScore, $doc->getAttribute('score')); + $this->assertSame($expectedTags, $doc->getAttribute('tags')); $callbackResults[] = $doc->getId(); } ); - $this->assertEquals(5, $count); + $this->assertSame(5, $count); $this->assertCount(5, $callbackResults); - $this->assertEquals(['doc_1', 'doc_2', 'doc_3', 'doc_4', 'doc_5'], $callbackResults); + $this->assertSame(['doc_1', 'doc_2', 'doc_3', 'doc_4', 'doc_5'], $callbackResults); $database->deleteCollection($collectionId); } @@ -4001,24 +4001,24 @@ function (Document $doc, ?Document $old) use (&$callbackResults) { $this->assertIsArray($doc->getAttribute('items')); if ($doc->getId() === 'existing_1' && $old !== null) { - $this->assertEquals(150, $doc->getAttribute('count')); // 100 + 50 - $this->assertEquals(25.0, $doc->getAttribute('value')); // 50 / 2 - $this->assertEquals(['item1', 'new_item'], $doc->getAttribute('items')); + $this->assertSame(150, $doc->getAttribute('count')); // 100 + 50 + $this->assertSame(25.0, $doc->getAttribute('value')); // 50 / 2 + $this->assertSame(['item1', 'new_item'], $doc->getAttribute('items')); } elseif ($doc->getId() === 'existing_2' && $old !== null) { - $this->assertEquals(175, $doc->getAttribute('count')); // 200 - 25 - $this->assertEquals(112.5, $doc->getAttribute('value')); // 75 * 1.5 - $this->assertEquals(['prepended', 'item2'], $doc->getAttribute('items')); + $this->assertSame(175, $doc->getAttribute('count')); // 200 - 25 + $this->assertSame(112.5, $doc->getAttribute('value')); // 75 * 1.5 + $this->assertSame(['prepended', 'item2'], $doc->getAttribute('items')); } elseif ($doc->getId() === 'new_doc' && $old === null) { - $this->assertEquals(500, $doc->getAttribute('count')); - $this->assertEquals(100.0, $doc->getAttribute('value')); - $this->assertEquals(['new'], $doc->getAttribute('items')); + $this->assertSame(500, $doc->getAttribute('count')); + $this->assertSame(100.0, $doc->getAttribute('value')); + $this->assertSame(['new'], $doc->getAttribute('items')); } $callbackResults[] = $doc->getId(); } ); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); $this->assertCount(3, $callbackResults); $database->deleteCollection($collectionId); @@ -4052,9 +4052,9 @@ public function testSingleUpsertWithOperators(): void 'tags' => ['tag1', 'tag2'] ])); - $this->assertEquals(100, $doc->getAttribute('count')); - $this->assertEquals(50.0, $doc->getAttribute('score')); - $this->assertEquals(['tag1', 'tag2'], $doc->getAttribute('tags')); + $this->assertSame(100, $doc->getAttribute('count')); + $this->assertSame(50.0, $doc->getAttribute('score')); + $this->assertSame(['tag1', 'tag2'], $doc->getAttribute('tags')); // Test upsert with operators on existing document (update) $updated = $database->upsertDocument($collectionId, new Document([ @@ -4066,9 +4066,9 @@ public function testSingleUpsertWithOperators(): void ])); // Verify operators were applied correctly - $this->assertEquals(125, $updated->getAttribute('count')); // 100 + 25 - $this->assertEquals(100.0, $updated->getAttribute('score')); // 50 * 2 - $this->assertEquals(['tag1', 'tag2', 'tag3'], $updated->getAttribute('tags')); + $this->assertSame(125, $updated->getAttribute('count')); // 100 + 25 + $this->assertSame(100.0, $updated->getAttribute('score')); // 50 * 2 + $this->assertSame(['tag1', 'tag2', 'tag3'], $updated->getAttribute('tags')); // Verify values are not Operator objects $this->assertIsInt($updated->getAttribute('count')); @@ -4084,9 +4084,9 @@ public function testSingleUpsertWithOperators(): void 'tags' => Operator::arrayPrepend(['tag0']) ])); - $this->assertEquals(75, $updated->getAttribute('count')); // 125 - 50 - $this->assertEquals(25.0, $updated->getAttribute('score')); // 100 / 4 - $this->assertEquals(['tag0', 'tag1', 'tag2', 'tag3'], $updated->getAttribute('tags')); + $this->assertSame(75, $updated->getAttribute('count')); // 125 - 50 + $this->assertSame(25.0, $updated->getAttribute('score')); // 100 / 4 + $this->assertSame(['tag0', 'tag1', 'tag2', 'tag3'], $updated->getAttribute('tags')); $database->deleteCollection($collectionId); } @@ -4120,7 +4120,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'counter' => Operator::increment(10), ])); - $this->assertEquals(10, $doc1->getAttribute('counter'), 'INCREMENT on new doc: 0 + 10 = 10'); + $this->assertSame(10, $doc1->getAttribute('counter'), 'INCREMENT on new doc: 0 + 10 = 10'); // Test 2: DECREMENT on new document (should use 0 as default) $doc2 = $database->upsertDocument($collectionId, new Document([ @@ -4128,7 +4128,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'counter' => Operator::decrement(5), ])); - $this->assertEquals(-5, $doc2->getAttribute('counter'), 'DECREMENT on new doc: 0 - 5 = -5'); + $this->assertSame(-5, $doc2->getAttribute('counter'), 'DECREMENT on new doc: 0 - 5 = -5'); // Test 3: MULTIPLY on new document (should use 0 as default) $doc3 = $database->upsertDocument($collectionId, new Document([ @@ -4136,7 +4136,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'score' => Operator::multiply(5), ])); - $this->assertEquals(0.0, $doc3->getAttribute('score'), 'MULTIPLY on new doc: 0 * 5 = 0'); + $this->assertSame(0.0, $doc3->getAttribute('score'), 'MULTIPLY on new doc: 0 * 5 = 0'); // Test 4: DIVIDE on new document (should use 0 as default, but may handle division carefully) // Note: 0 / n = 0, so this should work @@ -4145,7 +4145,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'score' => Operator::divide(2), ])); - $this->assertEquals(0.0, $doc4->getAttribute('score'), 'DIVIDE on new doc: 0 / 2 = 0'); + $this->assertSame(0.0, $doc4->getAttribute('score'), 'DIVIDE on new doc: 0 / 2 = 0'); // Test 5: ARRAY_APPEND on new document (should use [] as default) $doc5 = $database->upsertDocument($collectionId, new Document([ @@ -4153,7 +4153,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'tags' => Operator::arrayAppend(['tag1', 'tag2']), ])); - $this->assertEquals(['tag1', 'tag2'], $doc5->getAttribute('tags'), 'ARRAY_APPEND on new doc: [] + [tag1, tag2]'); + $this->assertSame(['tag1', 'tag2'], $doc5->getAttribute('tags'), 'ARRAY_APPEND on new doc: [] + [tag1, tag2]'); // Test 6: ARRAY_PREPEND on new document (should use [] as default) $doc6 = $database->upsertDocument($collectionId, new Document([ @@ -4161,7 +4161,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'tags' => Operator::arrayPrepend(['first']), ])); - $this->assertEquals(['first'], $doc6->getAttribute('tags'), 'ARRAY_PREPEND on new doc: [first] + []'); + $this->assertSame(['first'], $doc6->getAttribute('tags'), 'ARRAY_PREPEND on new doc: [first] + []'); // Test 7: ARRAY_INSERT on new document (should use [] as default, insert at position 0) $doc7 = $database->upsertDocument($collectionId, new Document([ @@ -4169,7 +4169,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'numbers' => Operator::arrayInsert(0, 42), ])); - $this->assertEquals([42], $doc7->getAttribute('numbers'), 'ARRAY_INSERT on new doc: insert 42 at position 0'); + $this->assertSame([42], $doc7->getAttribute('numbers'), 'ARRAY_INSERT on new doc: insert 42 at position 0'); // Test 8: ARRAY_REMOVE on new document (should use [] as default, nothing to remove) $doc8 = $database->upsertDocument($collectionId, new Document([ @@ -4177,7 +4177,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'tags' => Operator::arrayRemove(['nonexistent']), ])); - $this->assertEquals([], $doc8->getAttribute('tags'), 'ARRAY_REMOVE on new doc: [] - [nonexistent] = []'); + $this->assertSame([], $doc8->getAttribute('tags'), 'ARRAY_REMOVE on new doc: [] - [nonexistent] = []'); // Test 9: ARRAY_UNIQUE on new document (should use [] as default) $doc9 = $database->upsertDocument($collectionId, new Document([ @@ -4185,7 +4185,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'tags' => Operator::arrayUnique(), ])); - $this->assertEquals([], $doc9->getAttribute('tags'), 'ARRAY_UNIQUE on new doc: unique([]) = []'); + $this->assertSame([], $doc9->getAttribute('tags'), 'ARRAY_UNIQUE on new doc: unique([]) = []'); // Test 10: CONCAT on new document (should use empty string as default) $doc10 = $database->upsertDocument($collectionId, new Document([ @@ -4193,7 +4193,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'name' => Operator::stringConcat(' World'), ])); - $this->assertEquals(' World', $doc10->getAttribute('name'), 'CONCAT on new doc: "" + " World" = " World"'); + $this->assertSame(' World', $doc10->getAttribute('name'), 'CONCAT on new doc: "" + " World" = " World"'); // Test 11: REPLACE on new document (should use empty string as default) $doc11 = $database->upsertDocument($collectionId, new Document([ @@ -4201,7 +4201,7 @@ public function testUpsertOperatorsOnNewDocuments(): void '$permissions' => [Permission::read(Role::any())], 'name' => Operator::stringReplace('old', 'new'), ])); - $this->assertEquals('', $doc11->getAttribute('name'), 'REPLACE on new doc: replace("old", "new") in "" = ""'); + $this->assertSame('', $doc11->getAttribute('name'), 'REPLACE on new doc: replace("old", "new") in "" = ""'); // Test 12: Multiple operators on same new document $doc12 = $database->upsertDocument($collectionId, new Document([ @@ -4212,10 +4212,10 @@ public function testUpsertOperatorsOnNewDocuments(): void 'tags' => Operator::arrayAppend(['multi1', 'multi2']), 'name' => Operator::stringConcat('MultiTest'), ])); - $this->assertEquals(100, $doc12->getAttribute('counter')); - $this->assertEquals(50.5, $doc12->getAttribute('score')); - $this->assertEquals(['multi1', 'multi2'], $doc12->getAttribute('tags')); - $this->assertEquals('MultiTest', $doc12->getAttribute('name')); + $this->assertSame(100, $doc12->getAttribute('counter')); + $this->assertSame(50.5, $doc12->getAttribute('score')); + $this->assertSame(['multi1', 'multi2'], $doc12->getAttribute('tags')); + $this->assertSame('MultiTest', $doc12->getAttribute('name')); // Cleanup $database->deleteCollection($collectionId); @@ -4387,7 +4387,7 @@ public function testUpsertDocumentsWithAllOperators(): void // Execute bulk upsert $count = $database->upsertDocuments($collectionId, $documents); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); // Verify all operators worked correctly on updated documents $updated = $database->find($collectionId, [Query::orderAsc('$id')]); @@ -4395,58 +4395,58 @@ public function testUpsertDocumentsWithAllOperators(): void // Check upsert_doc_1 (was updated with operators) $doc1 = $updated[0]; - $this->assertEquals(15, $doc1->getAttribute('counter')); // 10 + 5 - $this->assertEquals(1.0, $doc1->getAttribute('score')); // 1.5 - 0.5 - $this->assertEquals(2.0, $doc1->getAttribute('multiplier')); // 1.0 * 2 - $this->assertEquals(25.0, $doc1->getAttribute('divisor')); // 50.0 / 2 - $this->assertEquals(2, $doc1->getAttribute('remainder')); // 7 % 5 - $this->assertEquals(4.0, $doc1->getAttribute('power_val')); // 2^2 - $this->assertEquals('Title 1 - Updated', $doc1->getAttribute('title')); - $this->assertEquals('new content 1', $doc1->getAttribute('content')); + $this->assertSame(15, $doc1->getAttribute('counter')); // 10 + 5 + $this->assertSame(1.0, $doc1->getAttribute('score')); // 1.5 - 0.5 + $this->assertSame(2.0, $doc1->getAttribute('multiplier')); // 1.0 * 2 + $this->assertSame(25.0, $doc1->getAttribute('divisor')); // 50.0 / 2 + $this->assertSame(2, $doc1->getAttribute('remainder')); // 7 % 5 + $this->assertSame(4.0, $doc1->getAttribute('power_val')); // 2^2 + $this->assertSame('Title 1 - Updated', $doc1->getAttribute('title')); + $this->assertSame('new content 1', $doc1->getAttribute('content')); $this->assertContains('upsert', $doc1->getAttribute('tags')); $this->assertContains('priority', $doc1->getAttribute('categories')); $this->assertNotContains('shared', $doc1->getAttribute('items')); $this->assertCount(4, $doc1->getAttribute('duplicates')); // Should have unique values - $this->assertEquals([1, 2, 99, 3, 4, 5], $doc1->getAttribute('numbers')); // arrayInsert at index 2 - $this->assertEquals(['b', 'c'], $doc1->getAttribute('intersect_items')); // arrayIntersect - $this->assertEquals(['x', 'w'], $doc1->getAttribute('diff_items')); // arrayDiff (removed y, z) - $this->assertEquals([6, 7, 8, 9, 10], $doc1->getAttribute('filter_numbers')); // arrayFilter greaterThan 5 - $this->assertEquals(true, $doc1->getAttribute('active')); // Was false, toggled to true + $this->assertSame([1, 2, 99, 3, 4, 5], $doc1->getAttribute('numbers')); // arrayInsert at index 2 + $this->assertSame(['b', 'c'], $doc1->getAttribute('intersect_items')); // arrayIntersect + $this->assertSame(['x', 'w'], $doc1->getAttribute('diff_items')); // arrayDiff (removed y, z) + $this->assertSame([6, 7, 8, 9, 10], $doc1->getAttribute('filter_numbers')); // arrayFilter greaterThan 5 + $this->assertSame(true, $doc1->getAttribute('active')); // Was false, toggled to true $this->assertNotNull($doc1->getAttribute('date_field1')); // dateAddDays $this->assertNotNull($doc1->getAttribute('date_field2')); // dateSubDays $this->assertNotNull($doc1->getAttribute('date_field3')); // dateSetNow // Check upsert_doc_2 (was updated with operators) $doc2 = $updated[1]; - $this->assertEquals(25, $doc2->getAttribute('counter')); // 20 + 5 - $this->assertEquals(2.5, $doc2->getAttribute('score')); // 3.0 - 0.5 - $this->assertEquals(4.0, $doc2->getAttribute('multiplier')); // 2.0 * 2 - $this->assertEquals(50.0, $doc2->getAttribute('divisor')); // 100.0 / 2 - $this->assertEquals(4, $doc2->getAttribute('remainder')); // 14 % 5 - $this->assertEquals(9.0, $doc2->getAttribute('power_val')); // 3^2 - $this->assertEquals('Title 2 - Updated', $doc2->getAttribute('title')); - $this->assertEquals('new content 2', $doc2->getAttribute('content')); - $this->assertEquals(false, $doc2->getAttribute('active')); // Was true, toggled to false + $this->assertSame(25, $doc2->getAttribute('counter')); // 20 + 5 + $this->assertSame(2.5, $doc2->getAttribute('score')); // 3.0 - 0.5 + $this->assertSame(4.0, $doc2->getAttribute('multiplier')); // 2.0 * 2 + $this->assertSame(50.0, $doc2->getAttribute('divisor')); // 100.0 / 2 + $this->assertSame(4, $doc2->getAttribute('remainder')); // 14 % 5 + $this->assertSame(9.0, $doc2->getAttribute('power_val')); // 3^2 + $this->assertSame('Title 2 - Updated', $doc2->getAttribute('title')); + $this->assertSame('new content 2', $doc2->getAttribute('content')); + $this->assertSame(false, $doc2->getAttribute('active')); // Was true, toggled to false // Check upsert_doc_3 (was inserted without operators) $doc3 = $updated[2]; - $this->assertEquals(100, $doc3->getAttribute('counter')); - $this->assertEquals(50.0, $doc3->getAttribute('score')); - $this->assertEquals(5.0, $doc3->getAttribute('multiplier')); - $this->assertEquals(200.0, $doc3->getAttribute('divisor')); - $this->assertEquals(30, $doc3->getAttribute('remainder')); - $this->assertEquals(4.0, $doc3->getAttribute('power_val')); - $this->assertEquals('New Title', $doc3->getAttribute('title')); - $this->assertEquals('new content', $doc3->getAttribute('content')); - $this->assertEquals(['new_tag'], $doc3->getAttribute('tags')); - $this->assertEquals(['new_cat'], $doc3->getAttribute('categories')); - $this->assertEquals(['new_item'], $doc3->getAttribute('items')); - $this->assertEquals(['x', 'y', 'z'], $doc3->getAttribute('duplicates')); - $this->assertEquals([10, 20, 30], $doc3->getAttribute('numbers')); - $this->assertEquals(['p', 'q'], $doc3->getAttribute('intersect_items')); - $this->assertEquals(['m', 'n'], $doc3->getAttribute('diff_items')); - $this->assertEquals([11, 12, 13], $doc3->getAttribute('filter_numbers')); - $this->assertEquals(true, $doc3->getAttribute('active')); + $this->assertSame(100, $doc3->getAttribute('counter')); + $this->assertSame(50.0, $doc3->getAttribute('score')); + $this->assertSame(5.0, $doc3->getAttribute('multiplier')); + $this->assertSame(200.0, $doc3->getAttribute('divisor')); + $this->assertSame(30, $doc3->getAttribute('remainder')); + $this->assertSame(4.0, $doc3->getAttribute('power_val')); + $this->assertSame('New Title', $doc3->getAttribute('title')); + $this->assertSame('new content', $doc3->getAttribute('content')); + $this->assertSame(['new_tag'], $doc3->getAttribute('tags')); + $this->assertSame(['new_cat'], $doc3->getAttribute('categories')); + $this->assertSame(['new_item'], $doc3->getAttribute('items')); + $this->assertSame(['x', 'y', 'z'], $doc3->getAttribute('duplicates')); + $this->assertSame([10, 20, 30], $doc3->getAttribute('numbers')); + $this->assertSame(['p', 'q'], $doc3->getAttribute('intersect_items')); + $this->assertSame(['m', 'n'], $doc3->getAttribute('diff_items')); + $this->assertSame([11, 12, 13], $doc3->getAttribute('filter_numbers')); + $this->assertSame(true, $doc3->getAttribute('active')); $database->deleteCollection($collectionId); } @@ -4481,7 +4481,7 @@ public function testOperatorArrayEmptyResultsNotNull(): void 'items' => Operator::arrayUnique() ])); $this->assertIsArray($updated1->getAttribute('items'), 'ARRAY_UNIQUE should return array not NULL'); - $this->assertEquals([], $updated1->getAttribute('items'), 'ARRAY_UNIQUE on empty array should return []'); + $this->assertSame([], $updated1->getAttribute('items'), 'ARRAY_UNIQUE on empty array should return []'); // Test ARRAY_INTERSECT with no matches returns [] not NULL $doc2 = $database->createDocument($collectionId, new Document([ @@ -4494,7 +4494,7 @@ public function testOperatorArrayEmptyResultsNotNull(): void 'items' => Operator::arrayIntersect(['x', 'y', 'z']) ])); $this->assertIsArray($updated2->getAttribute('items'), 'ARRAY_INTERSECT should return array not NULL'); - $this->assertEquals([], $updated2->getAttribute('items'), 'ARRAY_INTERSECT with no matches should return []'); + $this->assertSame([], $updated2->getAttribute('items'), 'ARRAY_INTERSECT with no matches should return []'); // Test ARRAY_DIFF removing all elements returns [] not NULL $doc3 = $database->createDocument($collectionId, new Document([ @@ -4507,7 +4507,7 @@ public function testOperatorArrayEmptyResultsNotNull(): void 'items' => Operator::arrayDiff(['a', 'b', 'c']) ])); $this->assertIsArray($updated3->getAttribute('items'), 'ARRAY_DIFF should return array not NULL'); - $this->assertEquals([], $updated3->getAttribute('items'), 'ARRAY_DIFF removing all elements should return []'); + $this->assertSame([], $updated3->getAttribute('items'), 'ARRAY_DIFF removing all elements should return []'); // Cleanup $database->deleteCollection($collectionId); @@ -4541,7 +4541,7 @@ public function testUpdateDocumentsWithOperatorsCacheInvalidation(): void // First read to potentially cache $fetched1 = $database->getDocument($collectionId, 'cache_test'); - $this->assertEquals(10, $fetched1->getAttribute('counter')); + $this->assertSame(10, $fetched1->getAttribute('counter')); // Use updateDocuments with operator $count = $database->updateDocuments( @@ -4552,11 +4552,11 @@ public function testUpdateDocumentsWithOperatorsCacheInvalidation(): void [Query::equal('$id', ['cache_test'])] ); - $this->assertEquals(1, $count); + $this->assertSame(1, $count); // Read again - should get fresh value, not cached old value $fetched2 = $database->getDocument($collectionId, 'cache_test'); - $this->assertEquals(15, $fetched2->getAttribute('counter'), 'Cache should be invalidated after operator update'); + $this->assertSame(15, $fetched2->getAttribute('counter'), 'Cache should be invalidated after operator update'); // Do another operator update $database->updateDocuments( @@ -4568,7 +4568,7 @@ public function testUpdateDocumentsWithOperatorsCacheInvalidation(): void // Verify cache was invalidated again $fetched3 = $database->getDocument($collectionId, 'cache_test'); - $this->assertEquals(30, $fetched3->getAttribute('counter'), 'Cache should be invalidated after second operator update'); + $this->assertSame(30, $fetched3->getAttribute('counter'), 'Cache should be invalidated after second operator update'); $database->deleteCollection($collectionId); } diff --git a/tests/e2e/Adapter/Scopes/PermissionTests.php b/tests/e2e/Adapter/Scopes/PermissionTests.php index f1913fb8f..d939e2c47 100644 --- a/tests/e2e/Adapter/Scopes/PermissionTests.php +++ b/tests/e2e/Adapter/Scopes/PermissionTests.php @@ -48,11 +48,11 @@ public function testUnsetPermissions(): void $results[] = $doc; }); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); foreach ($results as $result) { - $this->assertEquals('Donald Trump', $result->getAttribute('president')); - $this->assertEquals($permissions, $result->getPermissions()); + $this->assertSame('Donald Trump', $result->getAttribute('president')); + $this->assertSame($permissions, $result->getPermissions()); } /** @@ -71,20 +71,20 @@ public function testUnsetPermissions(): void } ); - $this->assertEquals(3, $modified); + $this->assertSame(3, $modified); foreach ($results as $result) { - $this->assertEquals('George Washington', $result->getAttribute('president')); - $this->assertEquals($permissions, $result->getPermissions()); + $this->assertSame('George Washington', $result->getAttribute('president')); + $this->assertSame($permissions, $result->getPermissions()); } $documents = $database->find(__FUNCTION__); - $this->assertEquals(3, count($documents)); + $this->assertSame(3, count($documents)); foreach ($documents as $document) { - $this->assertEquals('George Washington', $document->getAttribute('president')); - $this->assertEquals($permissions, $document->getPermissions()); + $this->assertSame('George Washington', $document->getAttribute('president')); + $this->assertSame($permissions, $document->getPermissions()); } /** @@ -110,21 +110,21 @@ public function testUnsetPermissions(): void } ); - $this->assertEquals(3, $modified); + $this->assertSame(3, $modified); foreach ($results as $result) { - $this->assertEquals('Joe biden', $result->getAttribute('president')); - $this->assertEquals($permissions, $result->getPermissions()); + $this->assertSame('Joe biden', $result->getAttribute('president')); + $this->assertSame($permissions, $result->getPermissions()); $this->assertArrayNotHasKey('$skipPermissionsUpdate', $result); } $documents = $database->find(__FUNCTION__); - $this->assertEquals(3, count($documents)); + $this->assertSame(3, count($documents)); foreach ($documents as $document) { - $this->assertEquals('Joe biden', $document->getAttribute('president')); - $this->assertEquals($permissions, $document->getPermissions()); + $this->assertSame('Joe biden', $document->getAttribute('president')); + $this->assertSame($permissions, $document->getPermissions()); } /** @@ -144,25 +144,25 @@ public function testUnsetPermissions(): void } ); - $this->assertEquals(3, $modified); + $this->assertSame(3, $modified); foreach ($results as $result) { - $this->assertEquals('Richard Nixon', $result->getAttribute('president')); - $this->assertEquals([], $result->getPermissions()); + $this->assertSame('Richard Nixon', $result->getAttribute('president')); + $this->assertSame([], $result->getPermissions()); } $documents = $database->find(__FUNCTION__); - $this->assertEquals(0, count($documents)); + $this->assertSame(0, count($documents)); $this->getDatabase()->getAuthorization()->disable(); $documents = $database->find(__FUNCTION__); $this->getDatabase()->getAuthorization()->reset(); - $this->assertEquals(3, count($documents)); + $this->assertSame(3, count($documents)); foreach ($documents as $document) { - $this->assertEquals('Richard Nixon', $document->getAttribute('president')); - $this->assertEquals([], $document->getPermissions()); + $this->assertSame('Richard Nixon', $document->getAttribute('president')); + $this->assertSame([], $document->getPermissions()); $this->assertArrayNotHasKey('$skipPermissionsUpdate', $document); } } @@ -181,7 +181,7 @@ public function testCreateDocumentsEmptyPermission(): void $document = $database->createDocument(__FUNCTION__, new Document()); $this->assertArrayHasKey('$permissions', $document); - $this->assertEquals([], $document->getAttribute('$permissions')); + $this->assertSame([], $document->getAttribute('$permissions')); $documents = []; @@ -194,10 +194,10 @@ public function testCreateDocumentsEmptyPermission(): void $results[] = $doc; }); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); foreach ($results as $result) { $this->assertArrayHasKey('$permissions', $result); - $this->assertEquals([], $result->getAttribute('$permissions')); + $this->assertSame([], $result->getAttribute('$permissions')); } } @@ -231,7 +231,7 @@ public function testReadPermissionsFailure(): Document $document = $database->getDocument($document->getCollection(), $document->getId()); - $this->assertEquals(true, $document->isEmpty()); + $this->assertSame(true, $document->isEmpty()); $this->getDatabase()->getAuthorization()->addRole(Role::any()->toString()); @@ -267,7 +267,7 @@ public function testNoChangeUpdateDocumentWithoutPermission(): Document // Document should not be updated as there is no change. // It should also not throw any authorization exception without any permission because of no change. - $this->assertEquals($updatedDocument->getUpdatedAt(), $document->getUpdatedAt()); + $this->assertSame($updatedDocument->getUpdatedAt(), $document->getUpdatedAt()); $document = $database->createDocument('documents', new Document([ '$id' => ID::unique(), @@ -361,8 +361,8 @@ public function testUpdateDocumentsPermissions(): void return $database->find($collection); }); - $this->assertEquals(10, $modified); - $this->assertEquals(11, \count($documents)); + $this->assertSame(10, $modified); + $this->assertSame(11, \count($documents)); $modifiedDocuments = array_filter($documents, function (Document $document) { return $document->getAttribute('$permissions') == [ @@ -399,7 +399,7 @@ public function testUpdateDocumentsPermissions(): void 'string' => 'text📝 updated', ])); - $this->assertEquals(10, $modified); + $this->assertSame(10, $modified); $documents = $this->getDatabase()->getAuthorization()->skip(function () use ($collection) { return $this->getDatabase()->find($collection); @@ -417,7 +417,7 @@ public function testUpdateDocumentsPermissions(): void }); foreach ($modifiedDocuments as $document) { - $this->assertEquals('text📝 updated', $document->getAttribute('string')); + $this->assertSame('text📝 updated', $document->getAttribute('string')); } } @@ -784,7 +784,7 @@ public function testCollectionPermissionsRelationshipsCountWorks(array $data): v $collection->getId() ); - $this->assertEquals(1, $documents); + $this->assertSame(1, $documents); $this->getDatabase()->getAuthorization()->cleanRoles(); $this->getDatabase()->getAuthorization()->addRole(Role::user('random')->toString()); @@ -793,7 +793,7 @@ public function testCollectionPermissionsRelationshipsCountWorks(array $data): v $collection->getId() ); - $this->assertEquals(1, $documents); + $this->assertSame(1, $documents); $this->getDatabase()->getAuthorization()->cleanRoles(); $this->getDatabase()->getAuthorization()->addRole(Role::user('unknown')->toString()); @@ -802,7 +802,7 @@ public function testCollectionPermissionsRelationshipsCountWorks(array $data): v $collection->getId() ); - $this->assertEquals(0, $documents); + $this->assertSame(0, $documents); } /** @@ -1248,8 +1248,8 @@ public function testWritePermissions(): void $docs = $this->getDatabase()->getAuthorization()->skip(fn () => $database->find('animals')); $this->assertCount(1, $docs); - $this->assertEquals('cat', $docs[0]['$id']); - $this->assertEquals('newCat', $docs[0]['type']); + $this->assertSame('cat', $docs[0]['$id']); + $this->assertSame('newCat', $docs[0]['type']); } public function testCreateRelationDocumentWithoutUpdatePermission(): void @@ -1296,7 +1296,7 @@ public function testCreateRelationDocumentWithoutUpdatePermission(): void ], ], ])); - $this->assertEquals('child1', $parent->getAttribute('children')[0]->getId()); + $this->assertSame('child1', $parent->getAttribute('children')[0]->getId()); $parent->setAttribute('children', [ [ '$id' => 'child2', @@ -1304,7 +1304,7 @@ public function testCreateRelationDocumentWithoutUpdatePermission(): void ]); $updatedParent = $database->updateDocument('parentRelationTest', 'parent1', $parent); - $this->assertEquals('child2', $updatedParent->getAttribute('children')[0]->getId()); + $this->assertSame('child2', $updatedParent->getAttribute('children')[0]->getId()); $database->deleteCollection('parentRelationTest'); $database->deleteCollection('childRelationTest'); diff --git a/tests/e2e/Adapter/Scopes/RelationshipTests.php b/tests/e2e/Adapter/Scopes/RelationshipTests.php index be4b74a6f..e8d673c7a 100644 --- a/tests/e2e/Adapter/Scopes/RelationshipTests.php +++ b/tests/e2e/Adapter/Scopes/RelationshipTests.php @@ -103,7 +103,7 @@ public function testZoo(): void 'name' => 'Bronx Zoo' ])); - $this->assertEquals('zoo1', $zoo->getId()); + $this->assertSame('zoo1', $zoo->getId()); $this->assertArrayHasKey('animals', $zoo); $iguana = $database->createDocument('__animals', new Document([ @@ -226,19 +226,19 @@ public function testZoo(): void */ $zoo = $database->getDocument('zoo', 'zoo1'); - $this->assertEquals('zoo1', $zoo->getId()); - $this->assertEquals('Bronx Zoo', $zoo->getAttribute('name')); + $this->assertSame('zoo1', $zoo->getId()); + $this->assertSame('Bronx Zoo', $zoo->getAttribute('name')); $this->assertArrayHasKey('animals', $zoo); - $this->assertEquals(2, count($zoo->getAttribute('animals'))); + $this->assertSame(2, count($zoo->getAttribute('animals'))); $this->assertArrayHasKey('president', $zoo->getAttribute('animals')[0]); $this->assertArrayHasKey('veterinarian', $zoo->getAttribute('animals')[0]); $zoo = $database->findOne('zoo'); - $this->assertEquals('zoo1', $zoo->getId()); - $this->assertEquals('Bronx Zoo', $zoo->getAttribute('name')); + $this->assertSame('zoo1', $zoo->getId()); + $this->assertSame('Bronx Zoo', $zoo->getAttribute('name')); $this->assertArrayHasKey('animals', $zoo); - $this->assertEquals(2, count($zoo->getAttribute('animals'))); + $this->assertSame(2, count($zoo->getAttribute('animals'))); $this->assertArrayHasKey('president', $zoo->getAttribute('animals')[0]); $this->assertArrayHasKey('veterinarian', $zoo->getAttribute('animals')[0]); @@ -247,12 +247,12 @@ public function testZoo(): void */ $veterinarian = $database->getDocument('veterinarians', 'dr.pol'); - $this->assertEquals('dr.pol', $veterinarian->getId()); + $this->assertSame('dr.pol', $veterinarian->getId()); $this->assertArrayHasKey('presidents', $veterinarian); - $this->assertEquals(1, count($veterinarian->getAttribute('presidents'))); + $this->assertSame(1, count($veterinarian->getAttribute('presidents'))); $this->assertArrayHasKey('animal', $veterinarian->getAttribute('presidents')[0]); $this->assertArrayHasKey('animals', $veterinarian); - $this->assertEquals(1, count($veterinarian->getAttribute('animals'))); + $this->assertSame(1, count($veterinarian->getAttribute('animals'))); $this->assertArrayHasKey('zoo', $veterinarian->getAttribute('animals')[0]); $this->assertArrayHasKey('president', $veterinarian->getAttribute('animals')[0]); @@ -260,12 +260,12 @@ public function testZoo(): void Query::equal('$id', ['dr.pol']) ]); - $this->assertEquals('dr.pol', $veterinarian->getId()); + $this->assertSame('dr.pol', $veterinarian->getId()); $this->assertArrayHasKey('presidents', $veterinarian); - $this->assertEquals(1, count($veterinarian->getAttribute('presidents'))); + $this->assertSame(1, count($veterinarian->getAttribute('presidents'))); $this->assertArrayHasKey('animal', $veterinarian->getAttribute('presidents')[0]); $this->assertArrayHasKey('animals', $veterinarian); - $this->assertEquals(1, count($veterinarian->getAttribute('animals'))); + $this->assertSame(1, count($veterinarian->getAttribute('animals'))); $this->assertArrayHasKey('zoo', $veterinarian->getAttribute('animals')[0]); $this->assertArrayHasKey('president', $veterinarian->getAttribute('animals')[0]); @@ -274,37 +274,37 @@ public function testZoo(): void */ $animal = $database->getDocument('__animals', 'iguana'); - $this->assertEquals('iguana', $animal->getId()); + $this->assertSame('iguana', $animal->getId()); $this->assertArrayHasKey('zoo', $animal); - $this->assertEquals('Bronx Zoo', $animal['zoo']->getAttribute('name')); + $this->assertSame('Bronx Zoo', $animal['zoo']->getAttribute('name')); $this->assertArrayHasKey('veterinarian', $animal); - $this->assertEquals('dr.pol', $animal['veterinarian']->getId()); + $this->assertSame('dr.pol', $animal['veterinarian']->getId()); $this->assertArrayHasKey('presidents', $animal['veterinarian']); $this->assertArrayHasKey('president', $animal); - $this->assertEquals('bush', $animal['president']->getId()); + $this->assertSame('bush', $animal['president']->getId()); $animal = $database->findOne('__animals', [ Query::equal('$id', ['tiger']) ]); - $this->assertEquals('tiger', $animal->getId()); + $this->assertSame('tiger', $animal->getId()); $this->assertArrayHasKey('zoo', $animal); - $this->assertEquals('Bronx Zoo', $animal['zoo']->getAttribute('name')); + $this->assertSame('Bronx Zoo', $animal['zoo']->getAttribute('name')); $this->assertArrayHasKey('veterinarian', $animal); - $this->assertEquals('dr.seuss', $animal['veterinarian']->getId()); + $this->assertSame('dr.seuss', $animal['veterinarian']->getId()); $this->assertArrayHasKey('presidents', $animal['veterinarian']); $this->assertArrayHasKey('president', $animal); - $this->assertEquals('biden', $animal['president']->getId()); + $this->assertSame('biden', $animal['president']->getId()); /** * Check President data */ $president = $database->getDocument('presidents', 'trump'); - $this->assertEquals('trump', $president->getId()); + $this->assertSame('trump', $president->getId()); $this->assertArrayHasKey('animal', $president); $this->assertArrayHasKey('votes', $president); - $this->assertEquals(2, count($president['votes'])); + $this->assertSame(2, count($president['votes'])); /** * Check President data @@ -313,10 +313,10 @@ public function testZoo(): void Query::equal('$id', ['bush']) ]); - $this->assertEquals('bush', $president->getId()); + $this->assertSame('bush', $president->getId()); $this->assertArrayHasKey('animal', $president); $this->assertArrayHasKey('votes', $president); - $this->assertEquals(0, count($president['votes'])); + $this->assertSame(0, count($president['votes'])); $president = $database->findOne('presidents', [ Query::select([ @@ -326,9 +326,9 @@ public function testZoo(): void Query::equal('$id', ['trump']) ]); - $this->assertEquals('trump', $president->getId()); + $this->assertSame('trump', $president->getId()); $this->assertArrayHasKey('votes', $president); - $this->assertEquals(2, count($president['votes'])); + $this->assertSame(2, count($president['votes'])); $this->assertArrayNotHasKey('animals', $president['votes'][0]); // Not exist $president = $database->findOne('presidents', [ @@ -340,9 +340,9 @@ public function testZoo(): void Query::equal('$id', ['trump']) ]); - $this->assertEquals('trump', $president->getId()); + $this->assertSame('trump', $president->getId()); $this->assertArrayHasKey('votes', $president); - $this->assertEquals(2, count($president['votes'])); + $this->assertSame(2, count($president['votes'])); $this->assertArrayHasKey('animals', $president['votes'][0]); // Exist /** @@ -353,7 +353,7 @@ public function testZoo(): void Query::equal('$id', ['dr.pol']), ]); - $this->assertEquals('dr.pol', $veterinarian->getId()); + $this->assertSame('dr.pol', $veterinarian->getId()); $this->assertArrayNotHasKey('presidents', $veterinarian); $this->assertArrayNotHasKey('animals', $veterinarian); @@ -366,16 +366,16 @@ public function testZoo(): void ] ); - $this->assertEquals('dr.pol', $veterinarian->getId()); + $this->assertSame('dr.pol', $veterinarian->getId()); $this->assertArrayHasKey('animals', $veterinarian); $this->assertArrayNotHasKey('presidents', $veterinarian); $animal = $veterinarian['animals'][0]; $this->assertArrayHasKey('president', $animal); - $this->assertEquals('bush', $animal->getAttribute('president')); // Check president is a value + $this->assertSame('bush', $animal->getAttribute('president')); // Check president is a value $this->assertArrayHasKey('zoo', $animal); - $this->assertEquals('zoo1', $animal->getAttribute('zoo')); // Check zoo is a value + $this->assertSame('zoo1', $animal->getAttribute('zoo')); // Check zoo is a value $veterinarian = $database->findOne( 'veterinarians', @@ -388,16 +388,16 @@ public function testZoo(): void ] ); - $this->assertEquals('dr.pol', $veterinarian->getId()); + $this->assertSame('dr.pol', $veterinarian->getId()); $this->assertArrayHasKey('animals', $veterinarian); $this->assertArrayNotHasKey('presidents', $veterinarian); $animal = $veterinarian['animals'][0]; $this->assertArrayHasKey('president', $animal); - $this->assertEquals('Bush', $animal->getAttribute('president')->getAttribute('lastName')); // Check president is an object + $this->assertSame('Bush', $animal->getAttribute('president')->getAttribute('lastName')); // Check president is an object $this->assertArrayHasKey('zoo', $animal); - $this->assertEquals('Bronx Zoo', $animal->getAttribute('zoo')->getAttribute('name')); // Check zoo is an object + $this->assertSame('Bronx Zoo', $animal->getAttribute('zoo')->getAttribute('name')); // Check zoo is an object } public function testSimpleRelationshipPopulation(): void @@ -457,7 +457,7 @@ public function testSimpleRelationshipPopulation(): void if (!empty($posts)) { $this->assertInstanceOf(Document::class, $posts[0], 'First post should be a Document object'); - $this->assertEquals('First Post', $posts[0]->getAttribute('title'), 'First post title should be populated'); + $this->assertSame('First Post', $posts[0]->getAttribute('title'), 'First post title should be populated'); } // fetch posts with author populated @@ -468,7 +468,7 @@ public function testSimpleRelationshipPopulation(): void if (!empty($fetchedPosts)) { $author = $fetchedPosts[0]->getAttribute('author'); $this->assertInstanceOf(Document::class, $author, 'Author should be a Document object'); - $this->assertEquals('John Doe', $author->getAttribute('name'), 'Author name should be populated'); + $this->assertSame('John Doe', $author->getAttribute('name'), 'Author name should be populated'); } } @@ -492,7 +492,7 @@ public function testDeleteRelatedCollection(): void type: Database::RELATION_ONE_TO_ONE, ); - $this->assertEquals(true, $database->deleteCollection('c1')); + $this->assertSame(true, $database->deleteCollection('c1')); $collection = $database->getCollection('c2'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -504,7 +504,7 @@ public function testDeleteRelatedCollection(): void type: Database::RELATION_ONE_TO_ONE, ); - $this->assertEquals(true, $database->deleteCollection('c2')); + $this->assertSame(true, $database->deleteCollection('c2')); $collection = $database->getCollection('c1'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -517,7 +517,7 @@ public function testDeleteRelatedCollection(): void twoWay: true ); - $this->assertEquals(true, $database->deleteCollection('c1')); + $this->assertSame(true, $database->deleteCollection('c1')); $collection = $database->getCollection('c2'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -530,7 +530,7 @@ public function testDeleteRelatedCollection(): void twoWay: true ); - $this->assertEquals(true, $database->deleteCollection('c2')); + $this->assertSame(true, $database->deleteCollection('c2')); $collection = $database->getCollection('c1'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -543,7 +543,7 @@ public function testDeleteRelatedCollection(): void type: Database::RELATION_ONE_TO_MANY, ); - $this->assertEquals(true, $database->deleteCollection('c1')); + $this->assertSame(true, $database->deleteCollection('c1')); $collection = $database->getCollection('c2'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -555,7 +555,7 @@ public function testDeleteRelatedCollection(): void type: Database::RELATION_ONE_TO_MANY, ); - $this->assertEquals(true, $database->deleteCollection('c2')); + $this->assertSame(true, $database->deleteCollection('c2')); $collection = $database->getCollection('c1'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -568,7 +568,7 @@ public function testDeleteRelatedCollection(): void twoWay: true ); - $this->assertEquals(true, $database->deleteCollection('c1')); + $this->assertSame(true, $database->deleteCollection('c1')); $collection = $database->getCollection('c2'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -581,7 +581,7 @@ public function testDeleteRelatedCollection(): void twoWay: true ); - $this->assertEquals(true, $database->deleteCollection('c2')); + $this->assertSame(true, $database->deleteCollection('c2')); $collection = $database->getCollection('c1'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -594,7 +594,7 @@ public function testDeleteRelatedCollection(): void type: Database::RELATION_MANY_TO_ONE, ); - $this->assertEquals(true, $database->deleteCollection('c1')); + $this->assertSame(true, $database->deleteCollection('c1')); $collection = $database->getCollection('c2'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -606,7 +606,7 @@ public function testDeleteRelatedCollection(): void type: Database::RELATION_MANY_TO_ONE, ); - $this->assertEquals(true, $database->deleteCollection('c2')); + $this->assertSame(true, $database->deleteCollection('c2')); $collection = $database->getCollection('c1'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -619,7 +619,7 @@ public function testDeleteRelatedCollection(): void twoWay: true ); - $this->assertEquals(true, $database->deleteCollection('c1')); + $this->assertSame(true, $database->deleteCollection('c1')); $collection = $database->getCollection('c2'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -632,7 +632,7 @@ public function testDeleteRelatedCollection(): void twoWay: true ); - $this->assertEquals(true, $database->deleteCollection('c2')); + $this->assertSame(true, $database->deleteCollection('c2')); $collection = $database->getCollection('c1'); $this->assertCount(0, $collection->getAttribute('attributes')); $this->assertCount(0, $collection->getAttribute('indexes')); @@ -714,7 +714,7 @@ public function testVirtualRelationsAttributes(): void ] ])); - $this->assertEquals('man', $doc->getId()); + $this->assertSame('man', $doc->getId()); try { $database->updateDocument('v1', 'man', new Document([ @@ -796,7 +796,7 @@ public function testVirtualRelationsAttributes(): void ] ])); - $this->assertEquals('v2_uid', $doc->getId()); + $this->assertSame('v2_uid', $doc->getId()); /** * Test update @@ -939,7 +939,7 @@ public function testVirtualRelationsAttributes(): void ] ])); - $this->assertEquals('doc1', $doc->getId()); + $this->assertSame('doc1', $doc->getId()); try { $database->updateDocument('v1', 'doc1', new Document([ @@ -1059,7 +1059,7 @@ public function testVirtualRelationsAttributes(): void ] ])); - $this->assertEquals('class1', $doc->getId()); + $this->assertSame('class1', $doc->getId()); try { $database->updateDocument('v1', 'class1', new Document([ @@ -1196,7 +1196,7 @@ public function testNoChangeUpdateDocumentWithRelationWithoutPermission(): void ])); $database->updateDocument('level1', $level1->getId(), new Document($level1->getArrayCopy())); $updatedLevel1 = $database->getDocument('level1', $level1->getId()); - $this->assertEquals($level1, $updatedLevel1); + $this->assertSame($level1, $updatedLevel1); try { $database->updateDocument('level1', $level1->getId(), $level1->setAttribute('name', 'haha')); @@ -1219,7 +1219,7 @@ public function testNoChangeUpdateDocumentWithRelationWithoutPermission(): void $level1->setAttribute('level2', $level2); $level1 = $database->updateDocument('level1', $level1->getId(), $level1); - $this->assertEquals('updated value', $level1['level2']['level3']['name']); + $this->assertSame('updated value', $level1['level2']['level3']['name']); for ($i = 1; $i < 6; $i++) { $database->deleteCollection("level{$i}"); @@ -1265,7 +1265,7 @@ public function testUpdateAttributeRenameRelationshipTwoWay(): void $docB = $database->getDocument('rnRsTestB', 'b1'); $this->assertArrayHasKey('rnRsTestA', $docB->getAttributes()); - $this->assertEquals('B1', $docB->getAttribute('name')); + $this->assertSame('B1', $docB->getAttribute('name')); // Rename attribute $database->updateRelationship( @@ -1284,7 +1284,7 @@ public function testUpdateAttributeRenameRelationshipTwoWay(): void // Check our data is OK $docA = $database->getDocument('rnRsTestA', $docA->getId()); $this->assertArrayHasKey('rnRsTestB_renamed_2', $docA->getAttributes()); - $this->assertEquals($docB->getId(), $docA->getAttribute('rnRsTestB_renamed_2')['$id']); + $this->assertSame($docB->getId(), $docA->getAttribute('rnRsTestB_renamed_2')['$id']); } public function testNoInvalidKeysWithRelationships(): void @@ -1359,7 +1359,7 @@ public function testNoInvalidKeysWithRelationships(): void $updatedSpecies = $database->getDocument('species', $species->getId()); - $this->assertEquals($species, $updatedSpecies); + $this->assertSame($species, $updatedSpecies); } public function testSelectRelationshipAttributes(): void @@ -1425,10 +1425,10 @@ public function testSelectRelationshipAttributes(): void throw new Exception('Make not found'); } - $this->assertEquals('Ford', $make['name']); - $this->assertEquals(2, \count($make['models'])); - $this->assertEquals('Fiesta', $make['models'][0]['name']); - $this->assertEquals('Focus', $make['models'][1]['name']); + $this->assertSame('Ford', $make['name']); + $this->assertSame(2, \count($make['models'])); + $this->assertSame('Fiesta', $make['models'][0]['name']); + $this->assertSame('Focus', $make['models'][1]['name']); $this->assertArrayNotHasKey('year', $make['models'][0]); $this->assertArrayNotHasKey('year', $make['models'][1]); $this->assertArrayHasKey('$id', $make); @@ -1544,12 +1544,12 @@ public function testSelectRelationshipAttributes(): void throw new Exception('Make not found'); } - $this->assertEquals('Ford', $make['name']); - $this->assertEquals(2, \count($make['models'])); + $this->assertSame('Ford', $make['name']); + $this->assertSame(2, \count($make['models'])); $this->assertArrayNotHasKey('name', $make['models'][0]); $this->assertArrayNotHasKey('name', $make['models'][1]); - $this->assertEquals(2010, $make['models'][0]['year']); - $this->assertEquals(2011, $make['models'][1]['year']); + $this->assertSame(2010, $make['models'][0]['year']); + $this->assertSame(2011, $make['models'][1]['year']); // Select all parent attributes, all child attributes $make = $database->findOne('make', [ @@ -1560,12 +1560,12 @@ public function testSelectRelationshipAttributes(): void throw new Exception('Make not found'); } - $this->assertEquals('Ford', $make['name']); - $this->assertEquals(2, \count($make['models'])); - $this->assertEquals('Fiesta', $make['models'][0]['name']); - $this->assertEquals('Focus', $make['models'][1]['name']); - $this->assertEquals(2010, $make['models'][0]['year']); - $this->assertEquals(2011, $make['models'][1]['year']); + $this->assertSame('Ford', $make['name']); + $this->assertSame(2, \count($make['models'])); + $this->assertSame('Fiesta', $make['models'][0]['name']); + $this->assertSame('Focus', $make['models'][1]['name']); + $this->assertSame(2010, $make['models'][0]['year']); + $this->assertSame(2011, $make['models'][1]['year']); // Select all parent attributes, all child attributes // Must select parent if selecting children @@ -1577,12 +1577,12 @@ public function testSelectRelationshipAttributes(): void throw new Exception('Make not found'); } - $this->assertEquals('Ford', $make['name']); - $this->assertEquals(2, \count($make['models'])); - $this->assertEquals('Fiesta', $make['models'][0]['name']); - $this->assertEquals('Focus', $make['models'][1]['name']); - $this->assertEquals(2010, $make['models'][0]['year']); - $this->assertEquals(2011, $make['models'][1]['year']); + $this->assertSame('Ford', $make['name']); + $this->assertSame(2, \count($make['models'])); + $this->assertSame('Fiesta', $make['models'][0]['name']); + $this->assertSame('Focus', $make['models'][1]['name']); + $this->assertSame(2010, $make['models'][0]['year']); + $this->assertSame(2011, $make['models'][1]['year']); // Select all parent attributes, no child attributes $make = $database->findOne('make', [ @@ -1592,7 +1592,7 @@ public function testSelectRelationshipAttributes(): void if ($make->isEmpty()) { throw new Exception('Make not found'); } - $this->assertEquals('Ford', $make['name']); + $this->assertSame('Ford', $make['name']); $this->assertArrayNotHasKey('models', $make); // Select some parent attributes, all child attributes @@ -1600,8 +1600,8 @@ public function testSelectRelationshipAttributes(): void Query::select(['name', 'models.*']), ]); - $this->assertEquals('Ford', $make['name']); - $this->assertEquals(2, \count($make['models'])); + $this->assertSame('Ford', $make['name']); + $this->assertSame(2, \count($make['models'])); /* * FROM CHILD TO PARENT @@ -1612,8 +1612,8 @@ public function testSelectRelationshipAttributes(): void Query::select(['name', 'make.name']), ]); - $this->assertEquals('Fiesta', $model['name']); - $this->assertEquals('Ford', $model['make']['name']); + $this->assertSame('Fiesta', $model['name']); + $this->assertSame('Ford', $model['make']['name']); $this->assertArrayNotHasKey('origin', $model['make']); $this->assertArrayNotHasKey('year', $model); $this->assertArrayHasKey('name', $model); @@ -1623,8 +1623,8 @@ public function testSelectRelationshipAttributes(): void Query::select(['*', 'make.name']), ]); - $this->assertEquals('Fiesta', $model['name']); - $this->assertEquals('Ford', $model['make']['name']); + $this->assertSame('Fiesta', $model['name']); + $this->assertSame('Ford', $model['make']['name']); $this->assertArrayHasKey('year', $model); // Select all parent attributes, all child attributes @@ -1632,8 +1632,8 @@ public function testSelectRelationshipAttributes(): void Query::select(['*', 'make.*']), ]); - $this->assertEquals('Fiesta', $model['name']); - $this->assertEquals('Ford', $model['make']['name']); + $this->assertSame('Fiesta', $model['name']); + $this->assertSame('Ford', $model['make']['name']); $this->assertArrayHasKey('year', $model); $this->assertArrayHasKey('name', $model['make']); @@ -1642,7 +1642,7 @@ public function testSelectRelationshipAttributes(): void Query::select(['*']), ]); - $this->assertEquals('Fiesta', $model['name']); + $this->assertSame('Fiesta', $model['name']); $this->assertArrayHasKey('make', $model); $this->assertArrayHasKey('year', $model); @@ -1651,9 +1651,9 @@ public function testSelectRelationshipAttributes(): void Query::select(['name', 'make.*']), ]); - $this->assertEquals('Fiesta', $model['name']); - $this->assertEquals('Ford', $model['make']['name']); - $this->assertEquals('USA', $model['make']['origin']); + $this->assertSame('Fiesta', $model['name']); + $this->assertSame('Ford', $model['make']['name']); + $this->assertSame('USA', $model['make']['origin']); } public function testInheritRelationshipPermissions(): void @@ -1720,16 +1720,16 @@ public function testInheritRelationshipPermissions(): void ])); $lawn1 = $database->getDocument('lawns', 'lawn1'); - $this->assertEquals($permissions, $lawn1->getPermissions()); - $this->assertEquals($permissions, $lawn1['trees'][0]->getPermissions()); - $this->assertEquals($permissions, $lawn1['trees'][0]['birds'][0]->getPermissions()); - $this->assertEquals($permissions, $lawn1['trees'][0]['birds'][1]->getPermissions()); + $this->assertSame($permissions, $lawn1->getPermissions()); + $this->assertSame($permissions, $lawn1['trees'][0]->getPermissions()); + $this->assertSame($permissions, $lawn1['trees'][0]['birds'][0]->getPermissions()); + $this->assertSame($permissions, $lawn1['trees'][0]['birds'][1]->getPermissions()); $tree1 = $database->getDocument('trees', 'tree1'); - $this->assertEquals($permissions, $tree1->getPermissions()); - $this->assertEquals($permissions, $tree1['lawn']->getPermissions()); - $this->assertEquals($permissions, $tree1['birds'][0]->getPermissions()); - $this->assertEquals($permissions, $tree1['birds'][1]->getPermissions()); + $this->assertSame($permissions, $tree1->getPermissions()); + $this->assertSame($permissions, $tree1['lawn']->getPermissions()); + $this->assertSame($permissions, $tree1['birds'][0]->getPermissions()); + $this->assertSame($permissions, $tree1['birds'][1]->getPermissions()); } /** @@ -1747,7 +1747,7 @@ public function testEnforceRelationshipPermissions(): void $this->getDatabase()->getAuthorization()->cleanRoles(); $this->getDatabase()->getAuthorization()->addRole(Role::any()->toString()); $lawn1 = $database->getDocument('lawns', 'lawn1'); - $this->assertEquals('Lawn 1', $lawn1['name']); + $this->assertSame('Lawn 1', $lawn1['name']); // Try update root document try { @@ -1758,7 +1758,7 @@ public function testEnforceRelationshipPermissions(): void ); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Missing "update" permission for role "user:user1". Only "["any"]" scopes are allowed and "["user:user1"]" was given.', $e->getMessage()); + $this->assertSame('Missing "update" permission for role "user:user1". Only "["any"]" scopes are allowed and "["user:user1"]" was given.', $e->getMessage()); } // Try delete root document @@ -1769,7 +1769,7 @@ public function testEnforceRelationshipPermissions(): void ); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Missing "delete" permission for role "user:user2". Only "["any"]" scopes are allowed and "["user:user2"]" was given.', $e->getMessage()); + $this->assertSame('Missing "delete" permission for role "user:user2". Only "["any"]" scopes are allowed and "["user:user2"]" was given.', $e->getMessage()); } $tree1 = $database->getDocument('trees', 'tree1'); @@ -1783,7 +1783,7 @@ public function testEnforceRelationshipPermissions(): void ); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Missing "update" permission for role "user:user1". Only "["any"]" scopes are allowed and "["user:user1"]" was given.', $e->getMessage()); + $this->assertSame('Missing "update" permission for role "user:user1". Only "["any"]" scopes are allowed and "["user:user1"]" was given.', $e->getMessage()); } // Try delete nested document @@ -1794,7 +1794,7 @@ public function testEnforceRelationshipPermissions(): void ); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Missing "delete" permission for role "user:user2". Only "["any"]" scopes are allowed and "["user:user2"]" was given.', $e->getMessage()); + $this->assertSame('Missing "delete" permission for role "user:user2". Only "["any"]" scopes are allowed and "["user:user2"]" was given.', $e->getMessage()); } $bird1 = $database->getDocument('birds', 'bird1'); @@ -1808,7 +1808,7 @@ public function testEnforceRelationshipPermissions(): void ); $this->fail('Failed to throw exception when updating document with missing permissions'); } catch (Exception $e) { - $this->assertEquals('Missing "update" permission for role "user:user1". Only "["any"]" scopes are allowed and "["user:user1"]" was given.', $e->getMessage()); + $this->assertSame('Missing "update" permission for role "user:user1". Only "["any"]" scopes are allowed and "["user:user1"]" was given.', $e->getMessage()); } // Try delete multi-level nested document @@ -1819,7 +1819,7 @@ public function testEnforceRelationshipPermissions(): void ); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Missing "delete" permission for role "user:user2". Only "["any"]" scopes are allowed and "["user:user2"]" was given.', $e->getMessage()); + $this->assertSame('Missing "delete" permission for role "user:user2". Only "["any"]" scopes are allowed and "["user:user2"]" was given.', $e->getMessage()); } $this->getDatabase()->getAuthorization()->addRole(Role::user('user1')->toString()); @@ -1833,7 +1833,7 @@ public function testEnforceRelationshipPermissions(): void $bird1->setAttribute('name', 'Bird 1 Updated') ); - $this->assertEquals('Bird 1 Updated', $bird1['name']); + $this->assertSame('Bird 1 Updated', $bird1['name']); $this->getDatabase()->getAuthorization()->addRole(Role::user('user2')->toString()); @@ -1843,9 +1843,9 @@ public function testEnforceRelationshipPermissions(): void $bird1->getId(), ); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $tree1 = $database->getDocument('trees', 'tree1'); - $this->assertEquals(1, count($tree1['birds'])); + $this->assertSame(1, count($tree1['birds'])); // Try update nested document $tree1 = $database->updateDocument( @@ -1854,7 +1854,7 @@ public function testEnforceRelationshipPermissions(): void $tree1->setAttribute('name', 'Tree 1 Updated') ); - $this->assertEquals('Tree 1 Updated', $tree1['name']); + $this->assertSame('Tree 1 Updated', $tree1['name']); // Try delete nested document $deleted = $database->deleteDocument( @@ -1862,9 +1862,9 @@ public function testEnforceRelationshipPermissions(): void $tree1->getId(), ); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $lawn1 = $database->getDocument('lawns', 'lawn1'); - $this->assertEquals(0, count($lawn1['trees'])); + $this->assertSame(0, count($lawn1['trees'])); // Create document with no permissions $database->createDocument('lawns', new Document([ @@ -1885,13 +1885,13 @@ public function testEnforceRelationshipPermissions(): void ])); $lawn2 = $database->getDocument('lawns', 'lawn2'); - $this->assertEquals(true, $lawn2->isEmpty()); + $this->assertSame(true, $lawn2->isEmpty()); $tree2 = $database->getDocument('trees', 'tree2'); - $this->assertEquals(true, $tree2->isEmpty()); + $this->assertSame(true, $tree2->isEmpty()); $bird3 = $database->getDocument('birds', 'bird3'); - $this->assertEquals(true, $bird3->isEmpty()); + $this->assertSame(true, $bird3->isEmpty()); } public function testCreateRelationshipMissingCollection(): void @@ -2008,7 +2008,7 @@ public function testDeleteMissingRelationship(): void $database->deleteRelationship('test', 'test2'); $this->fail('Failed to throw exception'); } catch (\Throwable $e) { - $this->assertEquals('Relationship not found', $e->getMessage()); + $this->assertSame('Relationship not found', $e->getMessage()); } } @@ -2143,14 +2143,14 @@ public function testCreateEmptyValueRelationship(): void 'null2' => null, ])); - $this->assertEquals(null, $document->getAttribute('null2')); + $this->assertSame(null, $document->getAttribute('null2')); $document = $database->createDocument('null2', new Document([ '$id' => ID::unique(), 'null1' => null, ])); - $this->assertEquals(null, $document->getAttribute('null1')); + $this->assertSame(null, $document->getAttribute('null1')); $document = $database->createDocument('null1', new Document([ '$id' => ID::unique(), @@ -2158,42 +2158,42 @@ public function testCreateEmptyValueRelationship(): void ])); // One to many will be empty array instead of null - $this->assertEquals([], $document->getAttribute('null3')); + $this->assertSame([], $document->getAttribute('null3')); $document = $database->createDocument('null2', new Document([ '$id' => ID::unique(), 'null4' => null, ])); - $this->assertEquals(null, $document->getAttribute('null4')); + $this->assertSame(null, $document->getAttribute('null4')); $document = $database->createDocument('null1', new Document([ '$id' => ID::unique(), 'null4' => null, ])); - $this->assertEquals(null, $document->getAttribute('null4')); + $this->assertSame(null, $document->getAttribute('null4')); $document = $database->createDocument('null2', new Document([ '$id' => ID::unique(), 'null5' => null, ])); - $this->assertEquals([], $document->getAttribute('null5')); + $this->assertSame([], $document->getAttribute('null5')); $document = $database->createDocument('null1', new Document([ '$id' => ID::unique(), 'null6' => null, ])); - $this->assertEquals([], $document->getAttribute('null6')); + $this->assertSame([], $document->getAttribute('null6')); $document = $database->createDocument('null2', new Document([ '$id' => ID::unique(), 'null7' => null, ])); - $this->assertEquals([], $document->getAttribute('null7')); + $this->assertSame([], $document->getAttribute('null7')); } public function testUpdateRelationshipToExistingKey(): void @@ -2227,14 +2227,14 @@ public function testUpdateRelationshipToExistingKey(): void $database->updateRelationship('ovens', 'cakes', newKey: 'owner'); $this->fail('Failed to throw exception'); } catch (DuplicateException $e) { - $this->assertEquals('Relationship already exists', $e->getMessage()); + $this->assertSame('Relationship already exists', $e->getMessage()); } try { $database->updateRelationship('ovens', 'cakes', newTwoWayKey: 'height'); $this->fail('Failed to throw exception'); } catch (DuplicateException $e) { - $this->assertEquals('Related attribute already exists', $e->getMessage()); + $this->assertSame('Related attribute already exists', $e->getMessage()); } } @@ -2304,13 +2304,13 @@ public function testUpdateDocumentsRelationships(): void $document = $this->getDatabase()->findOne('testUpdateDocumentsRelationships1'); $this->assertNotFalse($document); - $this->assertEquals('text📝 updated', $document->getAttribute('string')); + $this->assertSame('text📝 updated', $document->getAttribute('string')); $sisterDocument = $this->getDatabase()->getDocument('testUpdateDocumentsRelationships2', 'doc1'); $this->assertNotNull($sisterDocument); $relationalDocument = $sisterDocument->getAttribute('testUpdateDocumentsRelationships1'); - $this->assertEquals('text📝 updated', $relationalDocument->getAttribute('string')); + $this->assertSame('text📝 updated', $relationalDocument->getAttribute('string')); // Check relationship value updating between each other. $this->getDatabase()->deleteRelationship('testUpdateDocumentsRelationships1', 'testUpdateDocumentsRelationships2'); @@ -2346,7 +2346,7 @@ public function testUpdateDocumentsRelationships(): void $documents = $this->getDatabase()->find('testUpdateDocumentsRelationships2'); foreach ($documents as $document) { - $this->assertEquals('doc1', $document->getAttribute('testUpdateDocumentsRelationships1')->getId()); + $this->assertSame('doc1', $document->getAttribute('testUpdateDocumentsRelationships1')->getId()); } } @@ -2593,13 +2593,13 @@ public function testUpdateDocumentWithRelationships(): void 'name' => 'Community 1', ], ])); - $this->assertEquals('link1', $profile->getAttribute('links')[0]->getId()); - $this->assertEquals('settings1', $profile->getAttribute('settings')->getId()); - $this->assertEquals('group1', $profile->getAttribute('group')->getId()); - $this->assertEquals('community1', $profile->getAttribute('community')->getId()); - $this->assertEquals('video1', $profile->getAttribute('videos')[0]->getId()); - $this->assertEquals('product1', $profile->getAttribute('products')[0]->getId()); - $this->assertEquals('appearance1', $profile->getAttribute('appearance')->getId()); + $this->assertSame('link1', $profile->getAttribute('links')[0]->getId()); + $this->assertSame('settings1', $profile->getAttribute('settings')->getId()); + $this->assertSame('group1', $profile->getAttribute('group')->getId()); + $this->assertSame('community1', $profile->getAttribute('community')->getId()); + $this->assertSame('video1', $profile->getAttribute('videos')[0]->getId()); + $this->assertSame('product1', $profile->getAttribute('products')[0]->getId()); + $this->assertSame('appearance1', $profile->getAttribute('appearance')->getId()); $profile->setAttribute('links', [ [ @@ -2620,15 +2620,15 @@ public function testUpdateDocumentWithRelationships(): void $updatedProfile = $database->updateDocument('userProfiles', '1', $profile); - $this->assertEquals('New Link Value', $updatedProfile->getAttribute('links')[0]->getAttribute('title')); - $this->assertEquals('New Meta Title', $updatedProfile->getAttribute('settings')->getAttribute('metaTitle')); - $this->assertEquals('New Group Name', $updatedProfile->getAttribute('group')->getAttribute('name')); + $this->assertSame('New Link Value', $updatedProfile->getAttribute('links')[0]->getAttribute('title')); + $this->assertSame('New Meta Title', $updatedProfile->getAttribute('settings')->getAttribute('metaTitle')); + $this->assertSame('New Group Name', $updatedProfile->getAttribute('group')->getAttribute('name')); // This is the point of test, related documents should be present if they are not updated - $this->assertEquals('Video 1', $updatedProfile->getAttribute('videos')[0]->getAttribute('title')); - $this->assertEquals('Product 1', $updatedProfile->getAttribute('products')[0]->getAttribute('title')); - $this->assertEquals('Meta Title', $updatedProfile->getAttribute('appearance')->getAttribute('metaTitle')); - $this->assertEquals('Community 1', $updatedProfile->getAttribute('community')->getAttribute('name')); + $this->assertSame('Video 1', $updatedProfile->getAttribute('videos')[0]->getAttribute('title')); + $this->assertSame('Product 1', $updatedProfile->getAttribute('products')[0]->getAttribute('title')); + $this->assertSame('Meta Title', $updatedProfile->getAttribute('appearance')->getAttribute('metaTitle')); + $this->assertSame('Community 1', $updatedProfile->getAttribute('community')->getAttribute('name')); // updating document using two way key in one to many relationship $product = $database->getDocument('products', 'product1'); @@ -2637,10 +2637,10 @@ public function testUpdateDocumentWithRelationships(): void 'username' => 'updated user value', ]); $updatedProduct = $database->updateDocument('products', 'product1', $product); - $this->assertEquals('updated user value', $updatedProduct->getAttribute('userProfile')->getAttribute('username')); - $this->assertEquals('Product 1', $updatedProduct->getAttribute('title')); - $this->assertEquals('product1', $updatedProduct->getId()); - $this->assertEquals('1', $updatedProduct->getAttribute('userProfile')->getId()); + $this->assertSame('updated user value', $updatedProduct->getAttribute('userProfile')->getAttribute('username')); + $this->assertSame('Product 1', $updatedProduct->getAttribute('title')); + $this->assertSame('product1', $updatedProduct->getId()); + $this->assertSame('1', $updatedProduct->getAttribute('userProfile')->getId()); $database->deleteCollection('userProfiles'); $database->deleteCollection('links'); @@ -2808,22 +2808,22 @@ public function testMultiDocumentNestedRelationships(): void $this->assertCount(3, $cars); - $this->assertEquals('ABC123', $cars[0]['plateNumber']); - $this->assertEquals('Customer 1', $cars[0]['customer']['name']); + $this->assertSame('ABC123', $cars[0]['plateNumber']); + $this->assertSame('Customer 1', $cars[0]['customer']['name']); $this->assertCount(2, $cars[0]['customer']['inspections']); - $this->assertEquals('annual', $cars[0]['customer']['inspections'][0]['type']); - $this->assertEquals('safety', $cars[0]['customer']['inspections'][1]['type']); + $this->assertSame('annual', $cars[0]['customer']['inspections'][0]['type']); + $this->assertSame('safety', $cars[0]['customer']['inspections'][1]['type']); - $this->assertEquals('DEF456', $cars[1]['plateNumber']); - $this->assertEquals('Customer 2', $cars[1]['customer']['name']); + $this->assertSame('DEF456', $cars[1]['plateNumber']); + $this->assertSame('Customer 2', $cars[1]['customer']['name']); $this->assertCount(2, $cars[1]['customer']['inspections']); - $this->assertEquals('emissions', $cars[1]['customer']['inspections'][0]['type']); - $this->assertEquals('annual', $cars[1]['customer']['inspections'][1]['type']); + $this->assertSame('emissions', $cars[1]['customer']['inspections'][0]['type']); + $this->assertSame('annual', $cars[1]['customer']['inspections'][1]['type']); - $this->assertEquals('GHI789', $cars[2]['plateNumber']); - $this->assertEquals('Customer 3', $cars[2]['customer']['name']); + $this->assertSame('GHI789', $cars[2]['plateNumber']); + $this->assertSame('Customer 3', $cars[2]['customer']['name']); $this->assertCount(1, $cars[2]['customer']['inspections']); - $this->assertEquals('safety', $cars[2]['customer']['inspections'][0]['type']); + $this->assertSame('safety', $cars[2]['customer']['inspections'][0]['type']); // Test with createDocuments as well $database->deleteDocument('car', 'car1'); @@ -2925,8 +2925,8 @@ public function testNestedDocumentCreationWithDepthHandling(): void 'storeName' => 'Main Store', ])); - $this->assertEquals('store1', $store->getId()); - $this->assertEquals('Main Store', $store->getAttribute('storeName')); + $this->assertSame('store1', $store->getId()); + $this->assertSame('Main Store', $store->getAttribute('storeName')); // Create an order with a nested product that references the existing store // The nested product is created at depth 1 @@ -2951,23 +2951,23 @@ public function testNestedDocumentCreationWithDepthHandling(): void ])); // Verify the order was created - $this->assertEquals('order1', $order->getId()); - $this->assertEquals('ORD-001', $order->getAttribute('orderNumber')); + $this->assertSame('order1', $order->getId()); + $this->assertSame('ORD-001', $order->getAttribute('orderNumber')); // Verify the nested product relationship is populated (depth 1) $this->assertArrayHasKey('product', $order); $product = $order->getAttribute('product'); $this->assertInstanceOf(Document::class, $product); - $this->assertEquals('product1', $product->getId()); - $this->assertEquals('Widget', $product->getAttribute('productName')); + $this->assertSame('product1', $product->getId()); + $this->assertSame('Widget', $product->getAttribute('productName')); // CRITICAL: Verify the product's store relationship is populated (depth 2) // This is the key assertion that would fail with the bug $this->assertArrayHasKey('store', $product); $productStore = $product->getAttribute('store'); $this->assertInstanceOf(Document::class, $productStore); - $this->assertEquals('store1', $productStore->getId()); - $this->assertEquals('Main Store', $productStore->getAttribute('storeName')); + $this->assertSame('store1', $productStore->getId()); + $this->assertSame('Main Store', $productStore->getAttribute('storeName')); // Also test with update - create another order and update it with nested product $order2 = $database->createDocument('orderDepthTest', new Document([ @@ -2991,16 +2991,16 @@ public function testNestedDocumentCreationWithDepthHandling(): void ])); // Verify the updated order has the nested product with populated store - $this->assertEquals('order2', $order2Updated->getId()); + $this->assertSame('order2', $order2Updated->getId()); $product2 = $order2Updated->getAttribute('product'); $this->assertInstanceOf(Document::class, $product2); - $this->assertEquals('product2', $product2->getId()); + $this->assertSame('product2', $product2->getId()); // Verify the product's store is populated after update $this->assertArrayHasKey('store', $product2); $product2Store = $product2->getAttribute('store'); $this->assertInstanceOf(Document::class, $product2Store); - $this->assertEquals('store1', $product2Store->getId()); + $this->assertSame('store1', $product2Store->getId()); // Clean up $database->deleteCollection('orderDepthTest'); @@ -3084,15 +3084,15 @@ public function testRelationshipTypeQueries(): void Query::equal('author.name', ['Alice']), ]); $this->assertCount(2, $posts); - $this->assertEquals('post1', $posts[0]->getId()); - $this->assertEquals('post2', $posts[1]->getId()); + $this->assertSame('post1', $posts[0]->getId()); + $this->assertSame('post2', $posts[1]->getId()); // Filter posts by author age $posts = $database->find('postsFilter', [ Query::lessThan('author.age', 30), ]); $this->assertCount(1, $posts); - $this->assertEquals('post3', $posts[0]->getId()); + $this->assertSame('post3', $posts[0]->getId()); // Filter authors by their posts' published status $authors = $database->find('authorsFilter', [ @@ -3137,14 +3137,14 @@ public function testRelationshipTypeQueries(): void Query::equal('user.username', ['alice']), ]); $this->assertCount(1, $profiles); - $this->assertEquals('profile1', $profiles[0]->getId()); + $this->assertSame('profile1', $profiles[0]->getId()); // Filter users by profile bio $users = $database->find('usersOto', [ Query::equal('profile.bio', ['Software Engineer']), ]); $this->assertCount(1, $users); - $this->assertEquals('user1', $users[0]->getId()); + $this->assertSame('user1', $users[0]->getId()); // Clean up ONE_TO_ONE test $database->deleteCollection('usersOto'); @@ -3197,7 +3197,7 @@ public function testRelationshipTypeQueries(): void Query::equal('comments.content', ['Great post!']), ]); $this->assertCount(1, $users); - $this->assertEquals('userA', $users[0]->getId()); + $this->assertSame('userA', $users[0]->getId()); // Clean up MANY_TO_ONE test $database->deleteCollection('commentsMto'); @@ -3237,14 +3237,14 @@ public function testRelationshipTypeQueries(): void Query::equal('enrolledCourses.courseName', ['Physics']), ]); $this->assertCount(1, $students); - $this->assertEquals('student1', $students[0]->getId()); + $this->assertSame('student1', $students[0]->getId()); // Filter courses by student name $courses = $database->find('coursesMtm', [ Query::equal('students.studentName', ['John']), ]); $this->assertCount(1, $courses); - $this->assertEquals('course1', $courses[0]->getId()); + $this->assertSame('course1', $courses[0]->getId()); // Clean up MANY_TO_MANY test $database->deleteCollection('studentsMtm'); @@ -3334,15 +3334,15 @@ public function testQueryByRelationshipId(): void Query::equal('user.$id', ['user1']), ]); $this->assertCount(2, $posts); - $this->assertEquals('post1', $posts[0]->getId()); - $this->assertEquals('post2', $posts[1]->getId()); + $this->assertSame('post1', $posts[0]->getId()); + $this->assertSame('post2', $posts[1]->getId()); // Query posts by different user.$id $posts = $database->find('postsRelId', [ Query::equal('user.$id', ['user2']), ]); $this->assertCount(1, $posts); - $this->assertEquals('post3', $posts[0]->getId()); + $this->assertSame('post3', $posts[0]->getId()); // Query posts by multiple user.$id values $posts = $database->find('postsRelId', [ @@ -3355,7 +3355,7 @@ public function testQueryByRelationshipId(): void Query::equal('posts.$id', ['post1']), ]); $this->assertCount(1, $users); - $this->assertEquals('user1', $users[0]->getId()); + $this->assertSame('user1', $users[0]->getId()); // Clean up MANY_TO_ONE test $database->deleteCollection('usersRelId'); @@ -3401,14 +3401,14 @@ public function testQueryByRelationshipId(): void Query::equal('user.$id', ['userOto1']), ]); $this->assertCount(1, $profiles); - $this->assertEquals('profileOto1', $profiles[0]->getId()); + $this->assertSame('profileOto1', $profiles[0]->getId()); // Query users by profile.$id (inverse) $users = $database->find('usersOtoId', [ Query::equal('profile.$id', ['profileOto1']), ]); $this->assertCount(1, $users); - $this->assertEquals('userOto1', $users[0]->getId()); + $this->assertSame('userOto1', $users[0]->getId()); // Clean up ONE_TO_ONE test $database->deleteCollection('usersOtoId'); @@ -3478,7 +3478,7 @@ public function testQueryByRelationshipId(): void Query::equal('developers.$id', ['dev2']), ]); $this->assertCount(1, $projects); - $this->assertEquals('project1', $projects[0]->getId()); + $this->assertSame('project1', $projects[0]->getId()); // Query developers by project.$id (inverse) $developers = $database->find('developersMtmId', [ @@ -3490,7 +3490,7 @@ public function testQueryByRelationshipId(): void Query::equal('projects.$id', ['project2']), ]); $this->assertCount(1, $developers); - $this->assertEquals('dev1', $developers[0]->getId()); + $this->assertSame('dev1', $developers[0]->getId()); // Clean up MANY_TO_MANY test $database->deleteCollection('developersMtmId'); @@ -3588,7 +3588,7 @@ public function testRelationshipFilterQueries(): void Query::equal('vendor.company', ['Acme Corp']) ]); $this->assertCount(1, $products); - $this->assertEquals('product1', $products[0]->getId()); + $this->assertSame('product1', $products[0]->getId()); // Query::notEqual() $products = $database->find('productsQt', [ @@ -3613,7 +3613,7 @@ public function testRelationshipFilterQueries(): void Query::greaterThan('vendor.rating', 4.0) ]); $this->assertCount(1, $products); - $this->assertEquals('product1', $products[0]->getId()); + $this->assertSame('product1', $products[0]->getId()); // Query::greaterThanEqual() $products = $database->find('productsQt', [ @@ -3626,7 +3626,7 @@ public function testRelationshipFilterQueries(): void Query::startsWith('vendor.email', 'sales@') ]); $this->assertCount(1, $products); - $this->assertEquals('product1', $products[0]->getId()); + $this->assertSame('product1', $products[0]->getId()); // Query::endsWith() $products = $database->find('productsQt', [ @@ -3639,7 +3639,7 @@ public function testRelationshipFilterQueries(): void Query::contains('vendor.company', ['Corp']) ]); $this->assertCount(1, $products); - $this->assertEquals('product1', $products[0]->getId()); + $this->assertSame('product1', $products[0]->getId()); // Boolean query $products = $database->find('productsQt', [ @@ -3651,7 +3651,7 @@ public function testRelationshipFilterQueries(): void Query::equal('vendor.verified', [false]) ]); $this->assertCount(1, $products); - $this->assertEquals('product3', $products[0]->getId()); + $this->assertSame('product3', $products[0]->getId()); // Multiple conditions on same relationship (query grouping optimization) $products = $database->find('productsQt', [ @@ -3660,7 +3660,7 @@ public function testRelationshipFilterQueries(): void Query::startsWith('vendor.company', 'Acme') ]); $this->assertCount(1, $products); - $this->assertEquals('product1', $products[0]->getId()); + $this->assertSame('product1', $products[0]->getId()); // Clean up $database->deleteCollection('productsQt'); @@ -3791,14 +3791,14 @@ public function testRelationshipSpatialQueries(): void Query::distanceLessThan('supplier.warehouseLocation', [-74.0060, 40.7128], 1.0) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // distanceEqual on relationship point attribute $restaurants = $database->find('restaurantsSpatial', [ Query::distanceEqual('supplier.warehouseLocation', [-74.0060, 40.7128], 0.0) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // distanceGreaterThan on relationship point attribute $restaurants = $database->find('restaurantsSpatial', [ @@ -3817,7 +3817,7 @@ public function testRelationshipSpatialQueries(): void Query::contains('supplier.deliveryArea', [[-74.0, 40.75]]) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // contains on relationship linestring attribute // Note: ST_Contains on linestrings is implementation-dependent (some DBs require exact point-on-line) @@ -3839,7 +3839,7 @@ public function testRelationshipSpatialQueries(): void Query::intersects('supplier.deliveryArea', [$testPolygon]) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // intersects on relationship linestring attribute // Note: Linestring intersection semantics vary by DB (MariaDB/MySQL/PostgreSQL differ) @@ -3875,7 +3875,7 @@ public function testRelationshipSpatialQueries(): void Query::overlaps('supplier.deliveryArea', [$overlappingPolygon]) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // touches on relationship polygon (polygon shares boundary) $touchingPolygon = [ @@ -3889,7 +3889,7 @@ public function testRelationshipSpatialQueries(): void Query::touches('supplier.deliveryArea', [$touchingPolygon]) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // Multiple spatial queries combined $restaurants = $database->find('restaurantsSpatial', [ @@ -3897,7 +3897,7 @@ public function testRelationshipSpatialQueries(): void Query::contains('supplier.deliveryArea', [[-74.0, 40.75]]) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // Spatial query combined with regular query $restaurants = $database->find('restaurantsSpatial', [ @@ -3905,13 +3905,13 @@ public function testRelationshipSpatialQueries(): void Query::equal('supplier.company', ['Fresh Foods Inc']) ]); $this->assertCount(1, $restaurants); - $this->assertEquals('rest1', $restaurants[0]->getId()); + $this->assertSame('rest1', $restaurants[0]->getId()); // count with spatial relationship query $count = $database->count('restaurantsSpatial', [ Query::distanceLessThan('supplier.warehouseLocation', [-74.0060, 40.7128], 1.0) ]); - $this->assertEquals(1, $count); + $this->assertSame(1, $count); // Clean up $database->deleteCollection('restaurantsSpatial'); @@ -3999,21 +3999,21 @@ public function testRelationshipVirtualQueries(): void Query::equal('members.senior', [true]) ]); $this->assertCount(1, $teams); - $this->assertEquals('team1', $teams[0]->getId()); + $this->assertSame('team1', $teams[0]->getId()); // Find teams with managers $teams = $database->find('teamsParent', [ Query::equal('members.role', ['Manager']) ]); $this->assertCount(1, $teams); - $this->assertEquals('team2', $teams[0]->getId()); + $this->assertSame('team2', $teams[0]->getId()); // Find teams with members named 'Alice' $teams = $database->find('teamsParent', [ Query::startsWith('members.memberName', 'A') ]); $this->assertCount(1, $teams); - $this->assertEquals('team1', $teams[0]->getId()); + $this->assertSame('team1', $teams[0]->getId()); // No teams with junior managers $teams = $database->find('teamsParent', [ @@ -4118,7 +4118,7 @@ public function testRelationshipQueryEdgeCases(): void Query::greaterThan('total', 75.00) ]); $this->assertCount(1, $orders); - $this->assertEquals('order1', $orders[0]->getId()); + $this->assertSame('order1', $orders[0]->getId()); // Query with limit and offset $orders = $database->find('ordersEdge', [ @@ -4215,7 +4215,7 @@ public function testRelationshipManyToManyComplex(): void Query::greaterThanEqual('assignedDevelopers.experience', 10) ]); $this->assertCount(1, $projects); - $this->assertEquals('proj1', $projects[0]->getId()); + $this->assertSame('proj1', $projects[0]->getId()); // Find projects with junior developers $projects = $database->find('projectsMtm', [ @@ -4229,7 +4229,7 @@ public function testRelationshipManyToManyComplex(): void Query::equal('priority', ['low']) ]); $this->assertCount(1, $projects); - $this->assertEquals('proj2', $projects[0]->getId()); + $this->assertSame('proj2', $projects[0]->getId()); // Clean up $database->deleteCollection('developersMtm'); @@ -4412,35 +4412,35 @@ public function testNestedRelationshipQueriesMultipleDepths(): void Query::equal('company.name', ['TechCorp']), ]); $this->assertCount(1, $employees); - $this->assertEquals('emp1', $employees[0]->getId()); + $this->assertSame('emp1', $employees[0]->getId()); // Query employees by department name (1 level deep MANY_TO_ONE) $employees = $database->find('employeesNested', [ Query::equal('department.name', ['Engineering']), ]); $this->assertCount(1, $employees); - $this->assertEquals('emp1', $employees[0]->getId()); + $this->assertSame('emp1', $employees[0]->getId()); // Query projects by employee name (1 level deep) $projects = $database->find('projectsNested', [ Query::equal('employee.name', ['Alice Johnson']), ]); $this->assertCount(1, $projects); - $this->assertEquals('proj1', $projects[0]->getId()); + $this->assertSame('proj1', $projects[0]->getId()); // Query projects by employee's company name (2 levels deep) $projects = $database->find('projectsNested', [ Query::equal('employee.company.name', ['TechCorp']), ]); $this->assertCount(1, $projects); - $this->assertEquals('proj1', $projects[0]->getId()); + $this->assertSame('proj1', $projects[0]->getId()); // Query projects by employee's department name (2 levels deep, MANY_TO_ONE) $projects = $database->find('projectsNested', [ Query::equal('employee.department.name', ['Engineering']), ]); $this->assertCount(1, $projects); - $this->assertEquals('proj1', $projects[0]->getId()); + $this->assertSame('proj1', $projects[0]->getId()); // Query tasks by project employee name (2 levels deep) $tasks = $database->find('tasksNested', [ @@ -4453,8 +4453,8 @@ public function testNestedRelationshipQueriesMultipleDepths(): void Query::equal('project.employee.company.name', ['TechCorp']), ]); $this->assertCount(2, $tasks); - $this->assertEquals('task1', $tasks[0]->getId()); - $this->assertEquals('task3', $tasks[1]->getId()); + $this->assertSame('task1', $tasks[0]->getId()); + $this->assertSame('task3', $tasks[1]->getId()); // Query tasks by project->employee->department budget (3 levels deep with MANY_TO_ONE) $tasks = $database->find('tasksNested', [ @@ -4467,7 +4467,7 @@ public function testNestedRelationshipQueriesMultipleDepths(): void Query::equal('project.employee.company.industry', ['Marketing']), ]); $this->assertCount(1, $tasks); - $this->assertEquals('task2', $tasks[0]->getId()); + $this->assertSame('task2', $tasks[0]->getId()); // Combine depth 1 and depth 3 queries $tasks = $database->find('tasksNested', [ @@ -4482,7 +4482,7 @@ public function testNestedRelationshipQueriesMultipleDepths(): void Query::equal('employee.department.name', ['Engineering']), ]); $this->assertCount(1, $projects); - $this->assertEquals('proj1', $projects[0]->getId()); + $this->assertSame('proj1', $projects[0]->getId()); // Clean up $database->deleteCollection('tasksNested'); @@ -4593,51 +4593,51 @@ public function testCountAndSumWithRelationshipQueries(): void $count = $database->count('postsCount', [ Query::equal('author.name', ['Alice']), ]); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); // Count published posts by author age filter $count = $database->count('postsCount', [ Query::lessThan('author.age', 30), Query::equal('published', [true]), ]); - $this->assertEquals(1, $count); + $this->assertSame(1, $count); // Count posts by author name (different author) $count = $database->count('postsCount', [ Query::equal('author.name', ['Bob']), ]); - $this->assertEquals(2, $count); + $this->assertSame(2, $count); // Count with no matches (author with no posts) $count = $database->count('postsCount', [ Query::equal('author.name', ['Charlie']), ]); - $this->assertEquals(0, $count); + $this->assertSame(0, $count); // Sum views for posts by author name $sum = $database->sum('postsCount', 'views', [ Query::equal('author.name', ['Alice']), ]); - $this->assertEquals(350, $sum); // 100 + 200 + 50 + $this->assertSame(350, $sum); // 100 + 200 + 50 // Sum views for published posts by author age $sum = $database->sum('postsCount', 'views', [ Query::lessThan('author.age', 30), Query::equal('published', [true]), ]); - $this->assertEquals(150, $sum); + $this->assertSame(150, $sum); // Sum views for Bob's posts $sum = $database->sum('postsCount', 'views', [ Query::equal('author.name', ['Bob']), ]); - $this->assertEquals(225, $sum); + $this->assertSame(225, $sum); // Sum with no matches $sum = $database->sum('postsCount', 'views', [ Query::equal('author.name', ['Charlie']), ]); - $this->assertEquals(0, $sum); + $this->assertSame(0, $sum); // Clean up $database->deleteCollection('authorsCount'); diff --git a/tests/e2e/Adapter/Scopes/Relationships/ManyToManyTests.php b/tests/e2e/Adapter/Scopes/Relationships/ManyToManyTests.php index 4df1ad461..96e8d3756 100644 --- a/tests/e2e/Adapter/Scopes/Relationships/ManyToManyTests.php +++ b/tests/e2e/Adapter/Scopes/Relationships/ManyToManyTests.php @@ -44,13 +44,13 @@ public function testManyToManyOneWayRelationship(): void foreach ($attributes as $attribute) { if ($attribute['key'] === 'songs') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('songs', $attribute['$id']); - $this->assertEquals('songs', $attribute['key']); - $this->assertEquals('song', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_MANY_TO_MANY, $attribute['options']['relationType']); - $this->assertEquals(false, $attribute['options']['twoWay']); - $this->assertEquals('playlist', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('songs', $attribute['$id']); + $this->assertSame('songs', $attribute['key']); + $this->assertSame('song', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_MANY_TO_MANY, $attribute['options']['relationType']); + $this->assertSame(false, $attribute['options']['twoWay']); + $this->assertSame('playlist', $attribute['options']['twoWayKey']); } } @@ -106,7 +106,7 @@ public function testManyToManyOneWayRelationship(): void $playlist1Document = $database->getDocument('playlist', 'playlist1'); // Assert document does not contain non existing relation document. - $this->assertEquals(1, \count($playlist1Document->getAttribute('songs'))); + $this->assertSame(1, \count($playlist1Document->getAttribute('songs'))); $documents = $database->find('playlist', [ Query::select(['name']), @@ -118,12 +118,12 @@ public function testManyToManyOneWayRelationship(): void // Get document with relationship $playlist = $database->getDocument('playlist', 'playlist1'); $songs = $playlist->getAttribute('songs', []); - $this->assertEquals('song1', $songs[0]['$id']); + $this->assertSame('song1', $songs[0]['$id']); $this->assertArrayNotHasKey('playlist', $songs[0]); $playlist = $database->getDocument('playlist', 'playlist2'); $songs = $playlist->getAttribute('songs', []); - $this->assertEquals('song2', $songs[0]['$id']); + $this->assertSame('song2', $songs[0]['$id']); $this->assertArrayNotHasKey('playlist', $songs[0]); // Get related document @@ -135,7 +135,7 @@ public function testManyToManyOneWayRelationship(): void $playlists = $database->find('playlist'); - $this->assertEquals(2, \count($playlists)); + $this->assertSame(2, \count($playlists)); // Select related document attributes $playlist = $database->findOne('playlist', [ @@ -146,14 +146,14 @@ public function testManyToManyOneWayRelationship(): void throw new Exception('Playlist not found'); } - $this->assertEquals('Song 1', $playlist->getAttribute('songs')[0]->getAttribute('name')); + $this->assertSame('Song 1', $playlist->getAttribute('songs')[0]->getAttribute('name')); $this->assertArrayNotHasKey('length', $playlist->getAttribute('songs')[0]); $playlist = $database->getDocument('playlist', 'playlist1', [ Query::select(['*', 'songs.name']) ]); - $this->assertEquals('Song 1', $playlist->getAttribute('songs')[0]->getAttribute('name')); + $this->assertSame('Song 1', $playlist->getAttribute('songs')[0]->getAttribute('name')); $this->assertArrayNotHasKey('length', $playlist->getAttribute('songs')[0]); // Update root document attribute without altering relationship @@ -163,9 +163,9 @@ public function testManyToManyOneWayRelationship(): void $playlist1->setAttribute('name', 'Playlist 1 Updated') ); - $this->assertEquals('Playlist 1 Updated', $playlist1->getAttribute('name')); + $this->assertSame('Playlist 1 Updated', $playlist1->getAttribute('name')); $playlist1 = $database->getDocument('playlist', 'playlist1'); - $this->assertEquals('Playlist 1 Updated', $playlist1->getAttribute('name')); + $this->assertSame('Playlist 1 Updated', $playlist1->getAttribute('name')); // Update nested document attribute $songs = $playlist1->getAttribute('songs', []); @@ -177,9 +177,9 @@ public function testManyToManyOneWayRelationship(): void $playlist1->setAttribute('songs', $songs) ); - $this->assertEquals('Song 1 Updated', $playlist1->getAttribute('songs')[0]->getAttribute('name')); + $this->assertSame('Song 1 Updated', $playlist1->getAttribute('songs')[0]->getAttribute('name')); $playlist1 = $database->getDocument('playlist', 'playlist1'); - $this->assertEquals('Song 1 Updated', $playlist1->getAttribute('songs')[0]->getAttribute('name')); + $this->assertSame('Song 1 Updated', $playlist1->getAttribute('songs')[0]->getAttribute('name')); // Create new document with no relationship $playlist5 = $database->createDocument('playlist', new Document([ @@ -224,9 +224,9 @@ public function testManyToManyOneWayRelationship(): void ] ])); - $this->assertEquals('Song 5', $playlist5->getAttribute('songs')[0]->getAttribute('name')); + $this->assertSame('Song 5', $playlist5->getAttribute('songs')[0]->getAttribute('name')); $playlist5 = $database->getDocument('playlist', 'playlist5'); - $this->assertEquals('Song 5', $playlist5->getAttribute('songs')[0]->getAttribute('name')); + $this->assertSame('Song 5', $playlist5->getAttribute('songs')[0]->getAttribute('name')); // Update document with new related document $database->updateDocument( @@ -245,7 +245,7 @@ public function testManyToManyOneWayRelationship(): void // Get document with new relationship key $playlist = $database->getDocument('playlist', 'playlist1'); $songs = $playlist->getAttribute('newSongs'); - $this->assertEquals('song2', $songs[0]['$id']); + $this->assertSame('song2', $songs[0]['$id']); // Create new document with no relationship $database->createDocument('playlist', new Document([ @@ -260,17 +260,17 @@ public function testManyToManyOneWayRelationship(): void // Can delete document with no relationship when on delete is set to restrict $deleted = $database->deleteDocument('playlist', 'playlist3'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $playlist3 = $database->getDocument('playlist', 'playlist3'); - $this->assertEquals(true, $playlist3->isEmpty()); + $this->assertSame(true, $playlist3->isEmpty()); // Try to delete document while still related to another with on delete: restrict try { $database->deleteDocument('playlist', 'playlist1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Change on delete to set null @@ -294,7 +294,7 @@ public function testManyToManyOneWayRelationship(): void // Check relation was set to null $playlist1 = $database->getDocument('playlist', 'playlist1'); - $this->assertEquals(0, \count($playlist1->getAttribute('newSongs'))); + $this->assertSame(0, \count($playlist1->getAttribute('newSongs'))); // Change on delete to cascade $database->updateRelationship( @@ -308,10 +308,10 @@ public function testManyToManyOneWayRelationship(): void // Check parent and child were deleted $library = $database->getDocument('playlist', 'playlist2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $library = $database->getDocument('song', 'song2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete relationship $database->deleteRelationship( @@ -322,7 +322,7 @@ public function testManyToManyOneWayRelationship(): void // Try to get document again $playlist = $database->getDocument('playlist', 'playlist1'); $songs = $playlist->getAttribute('newSongs'); - $this->assertEquals(null, $songs); + $this->assertSame(null, $songs); } public function testManyToManyTwoWayRelationship(): void @@ -354,13 +354,13 @@ public function testManyToManyTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'students') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('students', $attribute['$id']); - $this->assertEquals('students', $attribute['key']); - $this->assertEquals('students', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_MANY_TO_MANY, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('classes', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('students', $attribute['$id']); + $this->assertSame('students', $attribute['key']); + $this->assertSame('students', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_MANY_TO_MANY, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('classes', $attribute['options']['twoWayKey']); } } @@ -369,13 +369,13 @@ public function testManyToManyTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'classes') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('classes', $attribute['$id']); - $this->assertEquals('classes', $attribute['key']); - $this->assertEquals('classes', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_MANY_TO_MANY, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('students', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('classes', $attribute['$id']); + $this->assertSame('classes', $attribute['key']); + $this->assertSame('classes', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_MANY_TO_MANY, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('students', $attribute['options']['twoWayKey']); } } @@ -407,7 +407,7 @@ public function testManyToManyTwoWayRelationship(): void $student1Document = $database->getDocument('students', 'student1'); // Assert document does not contain non existing relation document. - $this->assertEquals(1, \count($student1Document->getAttribute('classes'))); + $this->assertSame(1, \count($student1Document->getAttribute('classes'))); // Create document with relationship with related ID $database->createDocument('classes', new Document([ @@ -483,43 +483,43 @@ public function testManyToManyTwoWayRelationship(): void // Get document with relationship $student = $database->getDocument('students', 'student1'); $classes = $student->getAttribute('classes', []); - $this->assertEquals('class1', $classes[0]['$id']); + $this->assertSame('class1', $classes[0]['$id']); $this->assertArrayNotHasKey('students', $classes[0]); $student = $database->getDocument('students', 'student2'); $classes = $student->getAttribute('classes', []); - $this->assertEquals('class2', $classes[0]['$id']); + $this->assertSame('class2', $classes[0]['$id']); $this->assertArrayNotHasKey('students', $classes[0]); $student = $database->getDocument('students', 'student3'); $classes = $student->getAttribute('classes', []); - $this->assertEquals('class3', $classes[0]['$id']); + $this->assertSame('class3', $classes[0]['$id']); $this->assertArrayNotHasKey('students', $classes[0]); $student = $database->getDocument('students', 'student4'); $classes = $student->getAttribute('classes', []); - $this->assertEquals('class4', $classes[0]['$id']); + $this->assertSame('class4', $classes[0]['$id']); $this->assertArrayNotHasKey('students', $classes[0]); // Get related document $class = $database->getDocument('classes', 'class1'); $student = $class->getAttribute('students'); - $this->assertEquals('student1', $student[0]['$id']); + $this->assertSame('student1', $student[0]['$id']); $this->assertArrayNotHasKey('classes', $student[0]); $class = $database->getDocument('classes', 'class2'); $student = $class->getAttribute('students'); - $this->assertEquals('student2', $student[0]['$id']); + $this->assertSame('student2', $student[0]['$id']); $this->assertArrayNotHasKey('classes', $student[0]); $class = $database->getDocument('classes', 'class3'); $student = $class->getAttribute('students'); - $this->assertEquals('student3', $student[0]['$id']); + $this->assertSame('student3', $student[0]['$id']); $this->assertArrayNotHasKey('classes', $student[0]); $class = $database->getDocument('classes', 'class4'); $student = $class->getAttribute('students'); - $this->assertEquals('student4', $student[0]['$id']); + $this->assertSame('student4', $student[0]['$id']); $this->assertArrayNotHasKey('classes', $student[0]); // Select related document attributes @@ -531,14 +531,14 @@ public function testManyToManyTwoWayRelationship(): void throw new Exception('Student not found'); } - $this->assertEquals('Class 1', $student->getAttribute('classes')[0]->getAttribute('name')); + $this->assertSame('Class 1', $student->getAttribute('classes')[0]->getAttribute('name')); $this->assertArrayNotHasKey('number', $student->getAttribute('classes')[0]); $student = $database->getDocument('students', 'student1', [ Query::select(['*', 'classes.name']) ]); - $this->assertEquals('Class 1', $student->getAttribute('classes')[0]->getAttribute('name')); + $this->assertSame('Class 1', $student->getAttribute('classes')[0]->getAttribute('name')); $this->assertArrayNotHasKey('number', $student->getAttribute('classes')[0]); // Update root document attribute without altering relationship @@ -548,9 +548,9 @@ public function testManyToManyTwoWayRelationship(): void $student1->setAttribute('name', 'Student 1 Updated') ); - $this->assertEquals('Student 1 Updated', $student1->getAttribute('name')); + $this->assertSame('Student 1 Updated', $student1->getAttribute('name')); $student1 = $database->getDocument('students', 'student1'); - $this->assertEquals('Student 1 Updated', $student1->getAttribute('name')); + $this->assertSame('Student 1 Updated', $student1->getAttribute('name')); // Update inverse root document attribute without altering relationship $class2 = $database->getDocument('classes', 'class2'); @@ -560,9 +560,9 @@ public function testManyToManyTwoWayRelationship(): void $class2->setAttribute('name', 'Class 2 Updated') ); - $this->assertEquals('Class 2 Updated', $class2->getAttribute('name')); + $this->assertSame('Class 2 Updated', $class2->getAttribute('name')); $class2 = $database->getDocument('classes', 'class2'); - $this->assertEquals('Class 2 Updated', $class2->getAttribute('name')); + $this->assertSame('Class 2 Updated', $class2->getAttribute('name')); // Update nested document attribute $classes = $student1->getAttribute('classes', []); @@ -574,9 +574,9 @@ public function testManyToManyTwoWayRelationship(): void $student1->setAttribute('classes', $classes) ); - $this->assertEquals('Class 1 Updated', $student1->getAttribute('classes')[0]->getAttribute('name')); + $this->assertSame('Class 1 Updated', $student1->getAttribute('classes')[0]->getAttribute('name')); $student1 = $database->getDocument('students', 'student1'); - $this->assertEquals('Class 1 Updated', $student1->getAttribute('classes')[0]->getAttribute('name')); + $this->assertSame('Class 1 Updated', $student1->getAttribute('classes')[0]->getAttribute('name')); // Update inverse nested document attribute $students = $class2->getAttribute('students', []); @@ -588,9 +588,9 @@ public function testManyToManyTwoWayRelationship(): void $class2->setAttribute('students', $students) ); - $this->assertEquals('Student 2 Updated', $class2->getAttribute('students')[0]->getAttribute('name')); + $this->assertSame('Student 2 Updated', $class2->getAttribute('students')[0]->getAttribute('name')); $class2 = $database->getDocument('classes', 'class2'); - $this->assertEquals('Student 2 Updated', $class2->getAttribute('students')[0]->getAttribute('name')); + $this->assertSame('Student 2 Updated', $class2->getAttribute('students')[0]->getAttribute('name')); // Create new document with no relationship $student5 = $database->createDocument('students', new Document([ @@ -619,9 +619,9 @@ public function testManyToManyTwoWayRelationship(): void ])]) ); - $this->assertEquals('Class 5', $student5->getAttribute('classes')[0]->getAttribute('name')); + $this->assertSame('Class 5', $student5->getAttribute('classes')[0]->getAttribute('name')); $student5 = $database->getDocument('students', 'student5'); - $this->assertEquals('Class 5', $student5->getAttribute('classes')[0]->getAttribute('name')); + $this->assertSame('Class 5', $student5->getAttribute('classes')[0]->getAttribute('name')); // Create child document with no relationship $class6 = $database->createDocument('classes', new Document([ @@ -650,9 +650,9 @@ public function testManyToManyTwoWayRelationship(): void ])]) ); - $this->assertEquals('Student 6', $class6->getAttribute('students')[0]->getAttribute('name')); + $this->assertSame('Student 6', $class6->getAttribute('students')[0]->getAttribute('name')); $class6 = $database->getDocument('classes', 'class6'); - $this->assertEquals('Student 6', $class6->getAttribute('students')[0]->getAttribute('name')); + $this->assertSame('Student 6', $class6->getAttribute('students')[0]->getAttribute('name')); // Update document with new related document $database->updateDocument( @@ -681,12 +681,12 @@ public function testManyToManyTwoWayRelationship(): void // Get document with new relationship key $students = $database->getDocument('students', 'student1'); $classes = $students->getAttribute('newClasses'); - $this->assertEquals('class2', $classes[0]['$id']); + $this->assertSame('class2', $classes[0]['$id']); // Get inverse document with new relationship key $class = $database->getDocument('classes', 'class1'); $students = $class->getAttribute('newStudents'); - $this->assertEquals('student1', $students[0]['$id']); + $this->assertSame('student1', $students[0]['$id']); // Create new document with no relationship $database->createDocument('students', new Document([ @@ -701,17 +701,17 @@ public function testManyToManyTwoWayRelationship(): void // Can delete document with no relationship when on delete is set to restrict $deleted = $database->deleteDocument('students', 'student7'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $student6 = $database->getDocument('students', 'student7'); - $this->assertEquals(true, $student6->isEmpty()); + $this->assertSame(true, $student6->isEmpty()); // Try to delete document while still related to another with on delete: restrict try { $database->deleteDocument('students', 'student1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Change on delete to set null @@ -735,7 +735,7 @@ public function testManyToManyTwoWayRelationship(): void // Check relation was set to null $student1 = $database->getDocument('students', 'student1'); - $this->assertEquals(0, \count($student1->getAttribute('newClasses'))); + $this->assertSame(0, \count($student1->getAttribute('newClasses'))); // Change on delete to cascade $database->updateRelationship( @@ -749,18 +749,18 @@ public function testManyToManyTwoWayRelationship(): void // Check parent and child were deleted $library = $database->getDocument('students', 'student2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete child, should not delete parent $database->deleteDocument('classes', 'class6'); // Check only child was deleted $student6 = $database->getDocument('students', 'student6'); - $this->assertEquals(false, $student6->isEmpty()); + $this->assertSame(false, $student6->isEmpty()); $this->assertEmpty($student6->getAttribute('newClasses')); $library = $database->getDocument('classes', 'class2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete relationship $database->deleteRelationship( @@ -771,12 +771,12 @@ public function testManyToManyTwoWayRelationship(): void // Try to get documents again $student = $database->getDocument('students', 'student1'); $classes = $student->getAttribute('newClasses'); - $this->assertEquals(null, $classes); + $this->assertSame(null, $classes); // Try to get inverse documents again $classes = $database->getDocument('classes', 'class1'); $students = $classes->getAttribute('newStudents'); - $this->assertEquals(null, $students); + $this->assertSame(null, $students); } public function testNestedManyToMany_OneToOneRelationship(): void @@ -851,12 +851,12 @@ public function testNestedManyToMany_OneToOneRelationship(): void ])); $stone1 = $database->getDocument('stones', 'stone1'); - $this->assertEquals(2, \count($stone1['hearths'])); - $this->assertEquals('hearth1', $stone1['hearths'][0]['$id']); - $this->assertEquals('hearth2', $stone1['hearths'][1]['$id']); + $this->assertSame(2, \count($stone1['hearths'])); + $this->assertSame('hearth1', $stone1['hearths'][0]['$id']); + $this->assertSame('hearth2', $stone1['hearths'][1]['$id']); $this->assertArrayNotHasKey('stone', $stone1['hearths'][0]); - $this->assertEquals('plot1', $stone1['hearths'][0]['plot']['$id']); - $this->assertEquals('plot2', $stone1['hearths'][1]['plot']['$id']); + $this->assertSame('plot1', $stone1['hearths'][0]['plot']['$id']); + $this->assertSame('plot2', $stone1['hearths'][1]['plot']['$id']); $this->assertArrayNotHasKey('hearth', $stone1['hearths'][0]['plot']); $database->createDocument('plots', new Document([ @@ -884,9 +884,9 @@ public function testNestedManyToMany_OneToOneRelationship(): void ])); $plot3 = $database->getDocument('plots', 'plot3'); - $this->assertEquals('hearth3', $plot3['hearth']['$id']); + $this->assertSame('hearth3', $plot3['hearth']['$id']); $this->assertArrayNotHasKey('plot', $plot3['hearth']); - $this->assertEquals('stone2', $plot3['hearth']['stones'][0]['$id']); + $this->assertSame('stone2', $plot3['hearth']['stones'][0]['$id']); $this->assertArrayNotHasKey('hearths', $plot3['hearth']['stones'][0]); } @@ -980,13 +980,13 @@ public function testNestedManyToMany_OneToManyRelationship(): void ])); $group1 = $database->getDocument('groups', 'group1'); - $this->assertEquals(2, \count($group1['tounaments'])); - $this->assertEquals('tounament1', $group1['tounaments'][0]['$id']); - $this->assertEquals('tounament2', $group1['tounaments'][1]['$id']); + $this->assertSame(2, \count($group1['tounaments'])); + $this->assertSame('tounament1', $group1['tounaments'][0]['$id']); + $this->assertSame('tounament2', $group1['tounaments'][1]['$id']); $this->assertArrayNotHasKey('group', $group1['tounaments'][0]); - $this->assertEquals(2, \count($group1['tounaments'][0]['prizes'])); - $this->assertEquals('prize1', $group1['tounaments'][0]['prizes'][0]['$id']); - $this->assertEquals('prize2', $group1['tounaments'][0]['prizes'][1]['$id']); + $this->assertSame(2, \count($group1['tounaments'][0]['prizes'])); + $this->assertSame('prize1', $group1['tounaments'][0]['prizes'][0]['$id']); + $this->assertSame('prize2', $group1['tounaments'][0]['prizes'][1]['$id']); $this->assertArrayNotHasKey('tounament', $group1['tounaments'][0]['prizes'][0]); } @@ -1062,12 +1062,12 @@ public function testNestedManyToMany_ManyToOneRelationship(): void ])); $platform1 = $database->getDocument('platforms', 'platform1'); - $this->assertEquals(2, \count($platform1['games'])); - $this->assertEquals('game1', $platform1['games'][0]['$id']); - $this->assertEquals('game2', $platform1['games'][1]['$id']); + $this->assertSame(2, \count($platform1['games'])); + $this->assertSame('game1', $platform1['games'][0]['$id']); + $this->assertSame('game2', $platform1['games'][1]['$id']); $this->assertArrayNotHasKey('platforms', $platform1['games'][0]); - $this->assertEquals('publisher1', $platform1['games'][0]['publisher']['$id']); - $this->assertEquals('publisher2', $platform1['games'][1]['publisher']['$id']); + $this->assertSame('publisher1', $platform1['games'][0]['publisher']['$id']); + $this->assertSame('publisher2', $platform1['games'][1]['publisher']['$id']); $this->assertArrayNotHasKey('games', $platform1['games'][0]['publisher']); $database->createDocument('publishers', new Document([ @@ -1097,10 +1097,10 @@ public function testNestedManyToMany_ManyToOneRelationship(): void ])); $publisher3 = $database->getDocument('publishers', 'publisher3'); - $this->assertEquals(1, \count($publisher3['games'])); - $this->assertEquals('game3', $publisher3['games'][0]['$id']); + $this->assertSame(1, \count($publisher3['games'])); + $this->assertSame('game3', $publisher3['games'][0]['$id']); $this->assertArrayNotHasKey('publisher', $publisher3['games'][0]); - $this->assertEquals('platform2', $publisher3['games'][0]['platforms'][0]['$id']); + $this->assertSame('platform2', $publisher3['games'][0]['platforms'][0]['$id']); $this->assertArrayNotHasKey('games', $publisher3['games'][0]['platforms'][0]); } @@ -1194,17 +1194,17 @@ public function testNestedManyToMany_ManyToManyRelationship(): void ])); $sauce1 = $database->getDocument('sauces', 'sauce1'); - $this->assertEquals(2, \count($sauce1['pizzas'])); - $this->assertEquals('pizza1', $sauce1['pizzas'][0]['$id']); - $this->assertEquals('pizza2', $sauce1['pizzas'][1]['$id']); + $this->assertSame(2, \count($sauce1['pizzas'])); + $this->assertSame('pizza1', $sauce1['pizzas'][0]['$id']); + $this->assertSame('pizza2', $sauce1['pizzas'][1]['$id']); $this->assertArrayNotHasKey('sauces', $sauce1['pizzas'][0]); - $this->assertEquals(2, \count($sauce1['pizzas'][0]['toppings'])); - $this->assertEquals('topping1', $sauce1['pizzas'][0]['toppings'][0]['$id']); - $this->assertEquals('topping2', $sauce1['pizzas'][0]['toppings'][1]['$id']); + $this->assertSame(2, \count($sauce1['pizzas'][0]['toppings'])); + $this->assertSame('topping1', $sauce1['pizzas'][0]['toppings'][0]['$id']); + $this->assertSame('topping2', $sauce1['pizzas'][0]['toppings'][1]['$id']); $this->assertArrayNotHasKey('pizzas', $sauce1['pizzas'][0]['toppings'][0]); - $this->assertEquals(2, \count($sauce1['pizzas'][1]['toppings'])); - $this->assertEquals('topping3', $sauce1['pizzas'][1]['toppings'][0]['$id']); - $this->assertEquals('topping4', $sauce1['pizzas'][1]['toppings'][1]['$id']); + $this->assertSame(2, \count($sauce1['pizzas'][1]['toppings'])); + $this->assertSame('topping3', $sauce1['pizzas'][1]['toppings'][0]['$id']); + $this->assertSame('topping4', $sauce1['pizzas'][1]['toppings'][1]['$id']); $this->assertArrayNotHasKey('pizzas', $sauce1['pizzas'][1]['toppings'][0]); } @@ -1247,8 +1247,8 @@ public function testManyToManyRelationshipKeyWithSymbols(): void $doc1 = $database->getDocument('$symbols_coll.ection8', $doc1->getId()); $doc2 = $database->getDocument('$symbols_coll.ection7', $doc2->getId()); - $this->assertEquals($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection7')[0]->getId()); - $this->assertEquals($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection8')[0]->getId()); + $this->assertSame($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection7')[0]->getId()); + $this->assertSame($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection8')[0]->getId()); } public function testRecreateManyToManyOneWayRelationshipFromChild(): void @@ -1585,14 +1585,14 @@ public function testSelectManyToMany(): void ]); $this->assertCount(1, $docs); - $this->assertEquals('Document 1', $docs[0]->getAttribute('name')); + $this->assertSame('Document 1', $docs[0]->getAttribute('name')); $this->assertArrayNotHasKey('type', $docs[0]); $relatedDocs = $docs[0]->getAttribute('select_m2m_collection2'); $this->assertCount(2, $relatedDocs); - $this->assertEquals('Related Document 1', $relatedDocs[0]->getAttribute('name')); - $this->assertEquals('Related Document 2', $relatedDocs[1]->getAttribute('name')); + $this->assertSame('Related Document 1', $relatedDocs[0]->getAttribute('name')); + $this->assertSame('Related Document 2', $relatedDocs[1]->getAttribute('name')); $this->assertArrayNotHasKey('type', $relatedDocs[0]); $this->assertArrayNotHasKey('type', $relatedDocs[1]); } @@ -1690,31 +1690,31 @@ public function testSelectAcrossMultipleCollections(): void $this->assertCount(1, $artists); $artist = $artists[0]; - $this->assertEquals('The Great Artist', $artist->getAttribute('name')); + $this->assertSame('The Great Artist', $artist->getAttribute('name')); $this->assertArrayHasKey('albums', $artist->getArrayCopy()); $albums = $artist->getAttribute('albums'); $this->assertCount(2, $albums); $album1 = $albums[0]; - $this->assertEquals('First Album', $album1->getAttribute('name')); + $this->assertSame('First Album', $album1->getAttribute('name')); $this->assertArrayHasKey('tracks', $album1->getArrayCopy()); $this->assertArrayNotHasKey('artists', $album1->getArrayCopy()); $album2 = $albums[1]; - $this->assertEquals('Second Album', $album2->getAttribute('name')); + $this->assertSame('Second Album', $album2->getAttribute('name')); $this->assertArrayHasKey('tracks', $album2->getArrayCopy()); $album1Tracks = $album1->getAttribute('tracks'); $this->assertCount(2, $album1Tracks); - $this->assertEquals('Hit Song 1', $album1Tracks[0]->getAttribute('title')); + $this->assertSame('Hit Song 1', $album1Tracks[0]->getAttribute('title')); $this->assertArrayNotHasKey('duration', $album1Tracks[0]->getArrayCopy()); - $this->assertEquals('Hit Song 2', $album1Tracks[1]->getAttribute('title')); + $this->assertSame('Hit Song 2', $album1Tracks[1]->getAttribute('title')); $this->assertArrayNotHasKey('duration', $album1Tracks[1]->getArrayCopy()); $album2Tracks = $album2->getAttribute('tracks'); $this->assertCount(1, $album2Tracks); - $this->assertEquals('Ballad 3', $album2Tracks[0]->getAttribute('title')); + $this->assertSame('Ballad 3', $album2Tracks[0]->getAttribute('title')); $this->assertArrayNotHasKey('duration', $album2Tracks[0]->getArrayCopy()); } @@ -1784,7 +1784,7 @@ public function testDeleteBulkDocumentsManyToManyRelationship(): void $this->getDatabase()->deleteDocuments('bulk_delete_person_m2m'); $this->fail('Failed to throw exception'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Restrict Cleanup @@ -1854,10 +1854,10 @@ public function testUpdateParentAndChild_ManyToMany(): void ); $parentDoc = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); + $this->assertSame('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); $childDoc = $database->getDocument($childCollection, 'child1'); - $this->assertEquals('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); + $this->assertSame('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); // invalid update to child try { @@ -1873,7 +1873,7 @@ public function testUpdateParentAndChild_ManyToMany(): void // parent remains unaffected $parentDocAfter = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); + $this->assertSame('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); $database->deleteCollection($parentCollection); $database->deleteCollection($childCollection); @@ -1930,7 +1930,7 @@ public function testDeleteDocumentsRelationshipErrorDoesNotDeleteParent_ManyToMa $database->deleteDocuments($parentCollection, [Query::equal('$id', ['parent1'])]); $this->fail('Expected exception was not thrown'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } $parentDoc = $database->getDocument($parentCollection, 'parent1'); $childDoc = $database->getDocument($childCollection, 'child1'); @@ -1988,8 +1988,8 @@ public function testPartialUpdateManyToManyBothSides(): void ])); $student = $database->getDocument('partial_students', 'student1'); - $this->assertEquals('David', $student->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals('A+', $student->getAttribute('grade'), 'Grade should be updated'); + $this->assertSame('David', $student->getAttribute('name'), 'Name should be preserved'); + $this->assertSame('A+', $student->getAttribute('grade'), 'Grade should be updated'); $this->assertCount(2, $student->getAttribute('partial_courses'), 'Courses should be preserved'); // Partial update from course side - update credits only, preserve students @@ -2001,8 +2001,8 @@ public function testPartialUpdateManyToManyBothSides(): void ])); $course = $database->getDocument('partial_courses', 'course1'); - $this->assertEquals('Math', $course->getAttribute('title'), 'Title should be preserved'); - $this->assertEquals(5, $course->getAttribute('credits'), 'Credits should be updated'); + $this->assertSame('Math', $course->getAttribute('title'), 'Title should be preserved'); + $this->assertSame(5, $course->getAttribute('credits'), 'Credits should be updated'); $this->assertCount(1, $course->getAttribute('partial_students'), 'Students should be preserved'); $database->deleteCollection('partial_students'); @@ -2063,7 +2063,7 @@ public function testPartialUpdateManyToManyWithStringIdsAndDocuments(): void ])); $article = $database->getDocument('articles', 'article1'); - $this->assertEquals('Great Article', $article->getAttribute('title')); + $this->assertSame('Great Article', $article->getAttribute('title')); $this->assertFalse($article->getAttribute('published')); $this->assertCount(2, $article->getAttribute('tags')); @@ -2086,8 +2086,8 @@ public function testPartialUpdateManyToManyWithStringIdsAndDocuments(): void ])); $tag = $database->getDocument('tags', 'tag1'); - $this->assertEquals('Tech', $tag->getAttribute('name')); - $this->assertEquals('blue', $tag->getAttribute('color')); + $this->assertSame('Tech', $tag->getAttribute('name')); + $this->assertSame('blue', $tag->getAttribute('color')); $this->assertCount(2, $tag->getAttribute('articles')); $database->deleteCollection('tags'); diff --git a/tests/e2e/Adapter/Scopes/Relationships/ManyToOneTests.php b/tests/e2e/Adapter/Scopes/Relationships/ManyToOneTests.php index e62ff735c..7f7f8c878 100644 --- a/tests/e2e/Adapter/Scopes/Relationships/ManyToOneTests.php +++ b/tests/e2e/Adapter/Scopes/Relationships/ManyToOneTests.php @@ -44,13 +44,13 @@ public function testManyToOneOneWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'movie') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('movie', $attribute['$id']); - $this->assertEquals('movie', $attribute['key']); - $this->assertEquals('movie', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); - $this->assertEquals(false, $attribute['options']['twoWay']); - $this->assertEquals('reviews', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('movie', $attribute['$id']); + $this->assertSame('movie', $attribute['key']); + $this->assertSame('movie', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); + $this->assertSame(false, $attribute['options']['twoWay']); + $this->assertSame('reviews', $attribute['options']['twoWayKey']); } } @@ -59,13 +59,13 @@ public function testManyToOneOneWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'reviews') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('reviews', $attribute['$id']); - $this->assertEquals('reviews', $attribute['key']); - $this->assertEquals('review', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); - $this->assertEquals(false, $attribute['options']['twoWay']); - $this->assertEquals('movie', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('reviews', $attribute['$id']); + $this->assertSame('reviews', $attribute['key']); + $this->assertSame('review', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); + $this->assertSame(false, $attribute['options']['twoWay']); + $this->assertSame('movie', $attribute['options']['twoWayKey']); } } @@ -97,7 +97,7 @@ public function testManyToOneOneWayRelationship(): void $review1Document = $database->getDocument('review', 'review1'); // Assert document does not contain non existing relation document. - $this->assertEquals(null, $review1Document->getAttribute('movie')); + $this->assertSame(null, $review1Document->getAttribute('movie')); $database->updateDocument('review', 'review1', $review1->setAttribute('movie', 'movie1')); @@ -141,7 +141,7 @@ public function testManyToOneOneWayRelationship(): void // Get document with relationship $review = $database->getDocument('review', 'review1'); $movie = $review->getAttribute('movie', []); - $this->assertEquals('movie1', $movie['$id']); + $this->assertSame('movie1', $movie['$id']); $this->assertArrayNotHasKey('reviews', $movie); $documents = $database->find('review', [ @@ -155,12 +155,12 @@ public function testManyToOneOneWayRelationship(): void $this->assertArrayHasKey('movie', $document); $this->assertArrayHasKey('date', $document->getAttribute('movie')); $this->assertArrayNotHasKey('name', $document); - $this->assertEquals(29, strlen($document['date'])); // checks filter - $this->assertEquals(29, strlen($document['movie']['date'])); + $this->assertSame(29, strlen($document['date'])); // checks filter + $this->assertSame(29, strlen($document['movie']['date'])); $review = $database->getDocument('review', 'review2'); $movie = $review->getAttribute('movie', []); - $this->assertEquals('movie2', $movie['$id']); + $this->assertSame('movie2', $movie['$id']); $this->assertArrayNotHasKey('reviews', $movie); // Get related document @@ -172,7 +172,7 @@ public function testManyToOneOneWayRelationship(): void $reviews = $database->find('review'); - $this->assertEquals(3, \count($reviews)); + $this->assertSame(3, \count($reviews)); // Select related document attributes $review = $database->findOne('review', [ @@ -183,14 +183,14 @@ public function testManyToOneOneWayRelationship(): void throw new Exception('Review not found'); } - $this->assertEquals('Movie 1', $review->getAttribute('movie')->getAttribute('name')); + $this->assertSame('Movie 1', $review->getAttribute('movie')->getAttribute('name')); $this->assertArrayNotHasKey('length', $review->getAttribute('movie')); $review = $database->getDocument('review', 'review1', [ Query::select(['*', 'movie.name']) ]); - $this->assertEquals('Movie 1', $review->getAttribute('movie')->getAttribute('name')); + $this->assertSame('Movie 1', $review->getAttribute('movie')->getAttribute('name')); $this->assertArrayNotHasKey('length', $review->getAttribute('movie')); // Update root document attribute without altering relationship @@ -200,9 +200,9 @@ public function testManyToOneOneWayRelationship(): void $review1->setAttribute('name', 'Review 1 Updated') ); - $this->assertEquals('Review 1 Updated', $review1->getAttribute('name')); + $this->assertSame('Review 1 Updated', $review1->getAttribute('name')); $review1 = $database->getDocument('review', 'review1'); - $this->assertEquals('Review 1 Updated', $review1->getAttribute('name')); + $this->assertSame('Review 1 Updated', $review1->getAttribute('name')); // Update nested document attribute $movie = $review1->getAttribute('movie'); @@ -214,9 +214,9 @@ public function testManyToOneOneWayRelationship(): void $review1->setAttribute('movie', $movie) ); - $this->assertEquals('Movie 1 Updated', $review1->getAttribute('movie')->getAttribute('name')); + $this->assertSame('Movie 1 Updated', $review1->getAttribute('movie')->getAttribute('name')); $review1 = $database->getDocument('review', 'review1'); - $this->assertEquals('Movie 1 Updated', $review1->getAttribute('movie')->getAttribute('name')); + $this->assertSame('Movie 1 Updated', $review1->getAttribute('movie')->getAttribute('name')); // Create new document with no relationship $review5 = $database->createDocument('review', new Document([ @@ -245,9 +245,9 @@ public function testManyToOneOneWayRelationship(): void ])) ); - $this->assertEquals('Movie 5', $review5->getAttribute('movie')->getAttribute('name')); + $this->assertSame('Movie 5', $review5->getAttribute('movie')->getAttribute('name')); $review5 = $database->getDocument('review', 'review5'); - $this->assertEquals('Movie 5', $review5->getAttribute('movie')->getAttribute('name')); + $this->assertSame('Movie 5', $review5->getAttribute('movie')->getAttribute('name')); // Update document with new related document $database->updateDocument( @@ -266,7 +266,7 @@ public function testManyToOneOneWayRelationship(): void // Get document with new relationship key $review = $database->getDocument('review', 'review1'); $movie = $review->getAttribute('newMovie'); - $this->assertEquals('movie2', $movie['$id']); + $this->assertSame('movie2', $movie['$id']); // Reset values $review1 = $database->getDocument('review', 'review1'); @@ -291,17 +291,17 @@ public function testManyToOneOneWayRelationship(): void // Can delete document with no relationship when on delete is set to restrict $deleted = $database->deleteDocument('movie', 'movie3'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $movie3 = $database->getDocument('movie', 'movie3'); - $this->assertEquals(true, $movie3->isEmpty()); + $this->assertSame(true, $movie3->isEmpty()); // Try to delete document while still related to another with on delete: restrict try { $database->deleteDocument('movie', 'movie1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Change on delete to set null @@ -316,7 +316,7 @@ public function testManyToOneOneWayRelationship(): void // Check relation was set to null $review1 = $database->getDocument('review', 'review1'); - $this->assertEquals(null, $review1->getAttribute('newMovie')); + $this->assertSame(null, $review1->getAttribute('newMovie')); // Change on delete to cascade $database->updateRelationship( @@ -330,10 +330,10 @@ public function testManyToOneOneWayRelationship(): void // Check parent and child were deleted $library = $database->getDocument('movie', 'movie2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $library = $database->getDocument('review', 'review2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete relationship @@ -345,7 +345,7 @@ public function testManyToOneOneWayRelationship(): void // Try to get document again $review = $database->getDocument('review', 'review1'); $movie = $review->getAttribute('newMovie'); - $this->assertEquals(null, $movie); + $this->assertSame(null, $movie); } public function testManyToOneTwoWayRelationship(): void @@ -385,13 +385,13 @@ public function testManyToOneTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'store') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('store', $attribute['$id']); - $this->assertEquals('store', $attribute['key']); - $this->assertEquals('store', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('products', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('store', $attribute['$id']); + $this->assertSame('store', $attribute['key']); + $this->assertSame('store', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('products', $attribute['options']['twoWayKey']); } } @@ -400,13 +400,13 @@ public function testManyToOneTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'products') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('products', $attribute['$id']); - $this->assertEquals('products', $attribute['key']); - $this->assertEquals('product', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('store', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('products', $attribute['$id']); + $this->assertSame('products', $attribute['key']); + $this->assertSame('product', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_MANY_TO_ONE, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('store', $attribute['options']['twoWayKey']); } } @@ -436,7 +436,7 @@ public function testManyToOneTwoWayRelationship(): void $product1Document = $database->getDocument('product', 'product1'); // Assert document does not contain non existing relation document. - $this->assertEquals(null, $product1Document->getAttribute('store')); + $this->assertSame(null, $product1Document->getAttribute('store')); $database->updateDocument('product', 'product1', $product1->setAttribute('store', 'store1')); @@ -511,48 +511,48 @@ public function testManyToOneTwoWayRelationship(): void // Get document with relationship $product = $database->getDocument('product', 'product1'); $store = $product->getAttribute('store', []); - $this->assertEquals('store1', $store['$id']); + $this->assertSame('store1', $store['$id']); $this->assertArrayNotHasKey('products', $store); $product = $database->getDocument('product', 'product2'); $store = $product->getAttribute('store', []); - $this->assertEquals('store2', $store['$id']); + $this->assertSame('store2', $store['$id']); $this->assertArrayNotHasKey('products', $store); $product = $database->getDocument('product', 'product3'); $store = $product->getAttribute('store', []); - $this->assertEquals('store3', $store['$id']); + $this->assertSame('store3', $store['$id']); $this->assertArrayNotHasKey('products', $store); $product = $database->getDocument('product', 'product4'); $store = $product->getAttribute('store', []); - $this->assertEquals('store4', $store['$id']); + $this->assertSame('store4', $store['$id']); $this->assertArrayNotHasKey('products', $store); // Get related document $store = $database->getDocument('store', 'store1'); $products = $store->getAttribute('products'); - $this->assertEquals('product1', $products[0]['$id']); + $this->assertSame('product1', $products[0]['$id']); $this->assertArrayNotHasKey('store', $products[0]); $store = $database->getDocument('store', 'store2'); $products = $store->getAttribute('products'); - $this->assertEquals('product2', $products[0]['$id']); + $this->assertSame('product2', $products[0]['$id']); $this->assertArrayNotHasKey('store', $products[0]); $store = $database->getDocument('store', 'store3'); $products = $store->getAttribute('products'); - $this->assertEquals('product3', $products[0]['$id']); + $this->assertSame('product3', $products[0]['$id']); $this->assertArrayNotHasKey('store', $products[0]); $store = $database->getDocument('store', 'store4'); $products = $store->getAttribute('products'); - $this->assertEquals('product4', $products[0]['$id']); + $this->assertSame('product4', $products[0]['$id']); $this->assertArrayNotHasKey('store', $products[0]); $products = $database->find('product'); - $this->assertEquals(4, \count($products)); + $this->assertSame(4, \count($products)); // Select related document attributes $product = $database->findOne('product', [ @@ -563,14 +563,14 @@ public function testManyToOneTwoWayRelationship(): void throw new Exception('Product not found'); } - $this->assertEquals('Store 1', $product->getAttribute('store')->getAttribute('name')); + $this->assertSame('Store 1', $product->getAttribute('store')->getAttribute('name')); $this->assertArrayNotHasKey('opensAt', $product->getAttribute('store')); $product = $database->getDocument('product', 'product1', [ Query::select(['*', 'store.name']) ]); - $this->assertEquals('Store 1', $product->getAttribute('store')->getAttribute('name')); + $this->assertSame('Store 1', $product->getAttribute('store')->getAttribute('name')); $this->assertArrayNotHasKey('opensAt', $product->getAttribute('store')); // Update root document attribute without altering relationship @@ -580,9 +580,9 @@ public function testManyToOneTwoWayRelationship(): void $product1->setAttribute('name', 'Product 1 Updated') ); - $this->assertEquals('Product 1 Updated', $product1->getAttribute('name')); + $this->assertSame('Product 1 Updated', $product1->getAttribute('name')); $product1 = $database->getDocument('product', 'product1'); - $this->assertEquals('Product 1 Updated', $product1->getAttribute('name')); + $this->assertSame('Product 1 Updated', $product1->getAttribute('name')); // Update inverse document attribute without altering relationship $store1 = $database->getDocument('store', 'store1'); @@ -592,9 +592,9 @@ public function testManyToOneTwoWayRelationship(): void $store1->setAttribute('name', 'Store 1 Updated') ); - $this->assertEquals('Store 1 Updated', $store1->getAttribute('name')); + $this->assertSame('Store 1 Updated', $store1->getAttribute('name')); $store1 = $database->getDocument('store', 'store1'); - $this->assertEquals('Store 1 Updated', $store1->getAttribute('name')); + $this->assertSame('Store 1 Updated', $store1->getAttribute('name')); // Update nested document attribute $store = $product1->getAttribute('store'); @@ -606,9 +606,9 @@ public function testManyToOneTwoWayRelationship(): void $product1->setAttribute('store', $store) ); - $this->assertEquals('Store 1 Updated', $product1->getAttribute('store')->getAttribute('name')); + $this->assertSame('Store 1 Updated', $product1->getAttribute('store')->getAttribute('name')); $product1 = $database->getDocument('product', 'product1'); - $this->assertEquals('Store 1 Updated', $product1->getAttribute('store')->getAttribute('name')); + $this->assertSame('Store 1 Updated', $product1->getAttribute('store')->getAttribute('name')); // Update inverse nested document attribute $product = $store1->getAttribute('products')[0]; @@ -620,9 +620,9 @@ public function testManyToOneTwoWayRelationship(): void $store1->setAttribute('products', [$product]) ); - $this->assertEquals('Product 1 Updated', $store1->getAttribute('products')[0]->getAttribute('name')); + $this->assertSame('Product 1 Updated', $store1->getAttribute('products')[0]->getAttribute('name')); $store1 = $database->getDocument('store', 'store1'); - $this->assertEquals('Product 1 Updated', $store1->getAttribute('products')[0]->getAttribute('name')); + $this->assertSame('Product 1 Updated', $store1->getAttribute('products')[0]->getAttribute('name')); // Create new document with no relationship $product5 = $database->createDocument('product', new Document([ @@ -651,9 +651,9 @@ public function testManyToOneTwoWayRelationship(): void ])) ); - $this->assertEquals('Store 5', $product5->getAttribute('store')->getAttribute('name')); + $this->assertSame('Store 5', $product5->getAttribute('store')->getAttribute('name')); $product5 = $database->getDocument('product', 'product5'); - $this->assertEquals('Store 5', $product5->getAttribute('store')->getAttribute('name')); + $this->assertSame('Store 5', $product5->getAttribute('store')->getAttribute('name')); // Create new child document with no relationship $store6 = $database->createDocument('store', new Document([ @@ -682,9 +682,9 @@ public function testManyToOneTwoWayRelationship(): void ])]) ); - $this->assertEquals('Product 6', $store6->getAttribute('products')[0]->getAttribute('name')); + $this->assertSame('Product 6', $store6->getAttribute('products')[0]->getAttribute('name')); $store6 = $database->getDocument('store', 'store6'); - $this->assertEquals('Product 6', $store6->getAttribute('products')[0]->getAttribute('name')); + $this->assertSame('Product 6', $store6->getAttribute('products')[0]->getAttribute('name')); // Update document with new related document $database->updateDocument( @@ -722,12 +722,12 @@ public function testManyToOneTwoWayRelationship(): void // Get document with new relationship key $store = $database->getDocument('store', 'store2'); $products = $store->getAttribute('newProducts'); - $this->assertEquals('product1', $products[0]['$id']); + $this->assertSame('product1', $products[0]['$id']); // Get inverse document with new relationship key $product = $database->getDocument('product', 'product1'); $store = $product->getAttribute('newStore'); - $this->assertEquals('store2', $store['$id']); + $this->assertSame('store2', $store['$id']); // Reset relationships $store1 = $database->getDocument('store', 'store1'); @@ -751,22 +751,22 @@ public function testManyToOneTwoWayRelationship(): void // Can delete document with no relationship when on delete is set to restrict $deleted = $database->deleteDocument('store', 'store7'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $store7 = $database->getDocument('store', 'store7'); - $this->assertEquals(true, $store7->isEmpty()); + $this->assertSame(true, $store7->isEmpty()); // Try to delete child while still related to another with on delete: restrict try { $database->deleteDocument('store', 'store1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Delete parent while still related to another with on delete: restrict $result = $database->deleteDocument('product', 'product5'); - $this->assertEquals(true, $result); + $this->assertSame(true, $result); // Change on delete to set null $database->updateRelationship( @@ -780,7 +780,7 @@ public function testManyToOneTwoWayRelationship(): void // Check relation was set to null $database->getDocument('product', 'product1'); - $this->assertEquals(null, $product1->getAttribute('newStore')); + $this->assertSame(null, $product1->getAttribute('newStore')); // Change on delete to cascade $database->updateRelationship( @@ -794,10 +794,10 @@ public function testManyToOneTwoWayRelationship(): void // Check parent and child were deleted $library = $database->getDocument('store', 'store2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $library = $database->getDocument('product', 'product2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete relationship $database->deleteRelationship( @@ -808,12 +808,12 @@ public function testManyToOneTwoWayRelationship(): void // Try to get document again $products = $database->getDocument('product', 'product1'); $store = $products->getAttribute('newStore'); - $this->assertEquals(null, $store); + $this->assertSame(null, $store); // Try to get inverse document again $store = $database->getDocument('store', 'store1'); $products = $store->getAttribute('newProducts'); - $this->assertEquals(null, $products); + $this->assertSame(null, $products); } public function testNestedManyToOne_OneToOneRelationship(): void @@ -873,9 +873,9 @@ public function testNestedManyToOne_OneToOneRelationship(): void ])); $town1 = $database->getDocument('towns', 'town1'); - $this->assertEquals('homeland1', $town1['homeland']['$id']); + $this->assertSame('homeland1', $town1['homeland']['$id']); $this->assertArrayNotHasKey('towns', $town1['homeland']); - $this->assertEquals('capital1', $town1['homeland']['capital']['$id']); + $this->assertSame('capital1', $town1['homeland']['capital']['$id']); $this->assertArrayNotHasKey('homeland', $town1['homeland']['capital']); $database->createDocument('capitals', new Document([ @@ -910,11 +910,11 @@ public function testNestedManyToOne_OneToOneRelationship(): void ])); $capital2 = $database->getDocument('capitals', 'capital2'); - $this->assertEquals('homeland2', $capital2['homeland']['$id']); + $this->assertSame('homeland2', $capital2['homeland']['$id']); $this->assertArrayNotHasKey('capital', $capital2['homeland']); - $this->assertEquals(2, \count($capital2['homeland']['towns'])); - $this->assertEquals('town2', $capital2['homeland']['towns'][0]['$id']); - $this->assertEquals('town3', $capital2['homeland']['towns'][1]['$id']); + $this->assertSame(2, \count($capital2['homeland']['towns'])); + $this->assertSame('town2', $capital2['homeland']['towns'][0]['$id']); + $this->assertSame('town3', $capital2['homeland']['towns'][1]['$id']); } public function testNestedManyToOne_OneToManyRelationship(): void @@ -983,11 +983,11 @@ public function testNestedManyToOne_OneToManyRelationship(): void ])); $player1 = $database->getDocument('players', 'player1'); - $this->assertEquals('team1', $player1['team']['$id']); + $this->assertSame('team1', $player1['team']['$id']); $this->assertArrayNotHasKey('players', $player1['team']); - $this->assertEquals(2, \count($player1['team']['supporters'])); - $this->assertEquals('supporter1', $player1['team']['supporters'][0]['$id']); - $this->assertEquals('supporter2', $player1['team']['supporters'][1]['$id']); + $this->assertSame(2, \count($player1['team']['supporters'])); + $this->assertSame('supporter1', $player1['team']['supporters'][0]['$id']); + $this->assertSame('supporter2', $player1['team']['supporters'][1]['$id']); $database->createDocument('supporters', new Document([ '$id' => 'supporter3', @@ -1021,11 +1021,11 @@ public function testNestedManyToOne_OneToManyRelationship(): void ])); $supporter3 = $database->getDocument('supporters', 'supporter3'); - $this->assertEquals('team2', $supporter3['team']['$id']); + $this->assertSame('team2', $supporter3['team']['$id']); $this->assertArrayNotHasKey('supporters', $supporter3['team']); - $this->assertEquals(2, \count($supporter3['team']['players'])); - $this->assertEquals('player2', $supporter3['team']['players'][0]['$id']); - $this->assertEquals('player3', $supporter3['team']['players'][1]['$id']); + $this->assertSame(2, \count($supporter3['team']['players'])); + $this->assertSame('player2', $supporter3['team']['players'][0]['$id']); + $this->assertSame('player3', $supporter3['team']['players'][1]['$id']); } public function testNestedManyToOne_ManyToOne(): void @@ -1084,9 +1084,9 @@ public function testNestedManyToOne_ManyToOne(): void ])); $cow1 = $database->getDocument('cows', 'cow1'); - $this->assertEquals('farm1', $cow1['farm']['$id']); + $this->assertSame('farm1', $cow1['farm']['$id']); $this->assertArrayNotHasKey('cows', $cow1['farm']); - $this->assertEquals('farmer1', $cow1['farm']['farmer']['$id']); + $this->assertSame('farmer1', $cow1['farm']['farmer']['$id']); $this->assertArrayNotHasKey('farms', $cow1['farm']['farmer']); $database->createDocument('farmer', new Document([ @@ -1123,11 +1123,11 @@ public function testNestedManyToOne_ManyToOne(): void ])); $farmer2 = $database->getDocument('farmer', 'farmer2'); - $this->assertEquals('farm2', $farmer2['farms'][0]['$id']); + $this->assertSame('farm2', $farmer2['farms'][0]['$id']); $this->assertArrayNotHasKey('farmer', $farmer2['farms'][0]); - $this->assertEquals(2, \count($farmer2['farms'][0]['cows'])); - $this->assertEquals('cow2', $farmer2['farms'][0]['cows'][0]['$id']); - $this->assertEquals('cow3', $farmer2['farms'][0]['cows'][1]['$id']); + $this->assertSame(2, \count($farmer2['farms'][0]['cows'])); + $this->assertSame('cow2', $farmer2['farms'][0]['cows'][0]['$id']); + $this->assertSame('cow3', $farmer2['farms'][0]['cows'][1]['$id']); } public function testNestedManyToOne_ManyToManyRelationship(): void @@ -1194,11 +1194,11 @@ public function testNestedManyToOne_ManyToManyRelationship(): void ])); $book1 = $database->getDocument('books', 'book1'); - $this->assertEquals('entrant1', $book1['entrant']['$id']); + $this->assertSame('entrant1', $book1['entrant']['$id']); $this->assertArrayNotHasKey('books', $book1['entrant']); - $this->assertEquals(2, \count($book1['entrant']['rooms'])); - $this->assertEquals('class1', $book1['entrant']['rooms'][0]['$id']); - $this->assertEquals('class2', $book1['entrant']['rooms'][1]['$id']); + $this->assertSame(2, \count($book1['entrant']['rooms'])); + $this->assertSame('class1', $book1['entrant']['rooms'][0]['$id']); + $this->assertSame('class2', $book1['entrant']['rooms'][1]['$id']); } public function testExceedMaxDepthManyToOneParent(): void @@ -1257,9 +1257,9 @@ public function testExceedMaxDepthManyToOneParent(): void ], ])); $this->assertArrayHasKey($level2Collection, $level1); - $this->assertEquals('level2', $level1[$level2Collection]->getId()); + $this->assertSame('level2', $level1[$level2Collection]->getId()); $this->assertArrayHasKey($level3Collection, $level1[$level2Collection]); - $this->assertEquals('level3', $level1[$level2Collection][$level3Collection]->getId()); + $this->assertSame('level3', $level1[$level2Collection][$level3Collection]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][$level3Collection]); // Confirm the 4th level document does not exist @@ -1271,16 +1271,16 @@ public function testExceedMaxDepthManyToOneParent(): void '$id' => 'level4', ])); $level3 = $database->updateDocument($level3Collection, $level3->getId(), $level3); - $this->assertEquals('level4', $level3[$level4Collection]->getId()); + $this->assertSame('level4', $level3[$level4Collection]->getId()); $level3 = $database->getDocument($level3Collection, 'level3'); - $this->assertEquals('level4', $level3[$level4Collection]->getId()); + $this->assertSame('level4', $level3[$level4Collection]->getId()); // Exceed fetch depth $level1 = $database->getDocument($level1Collection, 'level1'); $this->assertArrayHasKey($level2Collection, $level1); - $this->assertEquals('level2', $level1[$level2Collection]->getId()); + $this->assertSame('level2', $level1[$level2Collection]->getId()); $this->assertArrayHasKey($level3Collection, $level1[$level2Collection]); - $this->assertEquals('level3', $level1[$level2Collection][$level3Collection]->getId()); + $this->assertSame('level3', $level1[$level2Collection][$level3Collection]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][$level3Collection]); } @@ -1323,8 +1323,8 @@ public function testManyToOneRelationshipKeyWithSymbols(): void $doc1 = $database->getDocument('$symbols_coll.ection6', $doc1->getId()); $doc2 = $database->getDocument('$symbols_coll.ection5', $doc2->getId()); - $this->assertEquals($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection5')[0]->getId()); - $this->assertEquals($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection6')->getId()); + $this->assertSame($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection5')[0]->getId()); + $this->assertSame($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection6')->getId()); } @@ -1655,21 +1655,21 @@ public function testDeleteBulkDocumentsManyToOneRelationship(): void $person1 = $this->getDatabase()->getDocument('bulk_delete_person_m2o', 'person1'); $library = $person1->getAttribute('bulk_delete_library_m2o'); - $this->assertEquals('library1', $library['$id']); + $this->assertSame('library1', $library['$id']); // Delete library try { $this->getDatabase()->deleteDocuments('bulk_delete_library_m2o'); $this->fail('Failed to throw exception'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } - $this->assertEquals(2, count($this->getDatabase()->find('bulk_delete_person_m2o'))); + $this->assertSame(2, count($this->getDatabase()->find('bulk_delete_person_m2o'))); // Test delete people $this->getDatabase()->deleteDocuments('bulk_delete_person_m2o'); - $this->assertEquals(0, count($this->getDatabase()->find('bulk_delete_person_m2o'))); + $this->assertSame(0, count($this->getDatabase()->find('bulk_delete_person_m2o'))); // Restrict Cleanup $this->getDatabase()->deleteDocuments('bulk_delete_library_m2o'); @@ -1735,10 +1735,10 @@ public function testUpdateParentAndChild_ManyToOne(): void ); $parentDoc = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); + $this->assertSame('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); $childDoc = $database->getDocument($childCollection, 'child1'); - $this->assertEquals('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); + $this->assertSame('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); // invalid update to child try { @@ -1754,7 +1754,7 @@ public function testUpdateParentAndChild_ManyToOne(): void // parent remains unaffected $parentDocAfter = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); + $this->assertSame('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); $database->deleteCollection($parentCollection); $database->deleteCollection($childCollection); @@ -1810,7 +1810,7 @@ public function testDeleteDocumentsRelationshipErrorDoesNotDeleteParent_ManyToOn $database->deleteDocuments($parentCollection, [Query::equal('$id', ['parent1'])]); $this->fail('Expected exception was not thrown'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } $parentDoc = $database->getDocument($parentCollection, 'parent1'); $childDoc = $database->getDocument($childCollection, 'child1'); @@ -1877,9 +1877,9 @@ public function testPartialUpdateManyToOneParentSide(): void ])); $emp = $database->getDocument('employees', 'emp1'); - $this->assertEquals('Alice', $emp->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals(120000, $emp->getAttribute('salary'), 'Salary should be updated'); - $this->assertEquals('company1', $emp->getAttribute('company')->getId(), 'Company relationship should be preserved'); + $this->assertSame('Alice', $emp->getAttribute('name'), 'Name should be preserved'); + $this->assertSame(120000, $emp->getAttribute('salary'), 'Salary should be updated'); + $this->assertSame('company1', $emp->getAttribute('company')->getId(), 'Company relationship should be preserved'); // Partial update - change only company relationship $database->updateDocument('employees', 'emp1', new Document([ @@ -1890,9 +1890,9 @@ public function testPartialUpdateManyToOneParentSide(): void ])); $emp = $database->getDocument('employees', 'emp1'); - $this->assertEquals('Alice', $emp->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals(120000, $emp->getAttribute('salary'), 'Salary should be preserved'); - $this->assertEquals('company2', $emp->getAttribute('company')->getId(), 'Company should be updated'); + $this->assertSame('Alice', $emp->getAttribute('name'), 'Name should be preserved'); + $this->assertSame(120000, $emp->getAttribute('salary'), 'Salary should be preserved'); + $this->assertSame('company2', $emp->getAttribute('company')->getId(), 'Company should be updated'); $database->deleteCollection('companies'); $database->deleteCollection('employees'); @@ -1945,8 +1945,8 @@ public function testPartialUpdateManyToOneChildSide(): void ])); $dept = $database->getDocument('departments', 'dept1'); - $this->assertEquals('Engineering', $dept->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals(1200000, $dept->getAttribute('budget'), 'Budget should be updated'); + $this->assertSame('Engineering', $dept->getAttribute('name'), 'Name should be preserved'); + $this->assertSame(1200000, $dept->getAttribute('budget'), 'Budget should be updated'); $this->assertCount(2, $dept->getAttribute('staff'), 'Staff should be preserved'); $database->deleteCollection('departments'); diff --git a/tests/e2e/Adapter/Scopes/Relationships/OneToManyTests.php b/tests/e2e/Adapter/Scopes/Relationships/OneToManyTests.php index 97b4cca4e..e631f7682 100644 --- a/tests/e2e/Adapter/Scopes/Relationships/OneToManyTests.php +++ b/tests/e2e/Adapter/Scopes/Relationships/OneToManyTests.php @@ -44,13 +44,13 @@ public function testOneToManyOneWayRelationship(): void foreach ($attributes as $attribute) { if ($attribute['key'] === 'albums') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('albums', $attribute['$id']); - $this->assertEquals('albums', $attribute['key']); - $this->assertEquals('album', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_ONE_TO_MANY, $attribute['options']['relationType']); - $this->assertEquals(false, $attribute['options']['twoWay']); - $this->assertEquals('artist', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('albums', $attribute['$id']); + $this->assertSame('albums', $attribute['key']); + $this->assertSame('album', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_ONE_TO_MANY, $attribute['options']['relationType']); + $this->assertSame(false, $attribute['options']['twoWay']); + $this->assertSame('artist', $attribute['options']['twoWayKey']); } } @@ -81,7 +81,7 @@ public function testOneToManyOneWayRelationship(): void $artist1Document = $database->getDocument('artist', 'artist1'); // Assert document does not contain non existing relation document. - $this->assertEquals(1, \count($artist1Document->getAttribute('albums'))); + $this->assertSame(1, \count($artist1Document->getAttribute('albums'))); // Create document with relationship with related ID $database->createDocument('album', new Document([ @@ -125,14 +125,14 @@ public function testOneToManyOneWayRelationship(): void // Get document with relationship $artist = $database->getDocument('artist', 'artist1'); $albums = $artist->getAttribute('albums', []); - $this->assertEquals('album1', $albums[0]['$id']); + $this->assertSame('album1', $albums[0]['$id']); $this->assertArrayNotHasKey('artist', $albums[0]); $artist = $database->getDocument('artist', 'artist2'); $albums = $artist->getAttribute('albums', []); - $this->assertEquals('album2', $albums[0]['$id']); + $this->assertSame('album2', $albums[0]['$id']); $this->assertArrayNotHasKey('artist', $albums[0]); - $this->assertEquals('album33', $albums[1]['$id']); + $this->assertSame('album33', $albums[1]['$id']); $this->assertCount(2, $albums); // Get related document @@ -144,7 +144,7 @@ public function testOneToManyOneWayRelationship(): void $artists = $database->find('artist'); - $this->assertEquals(2, \count($artists)); + $this->assertSame(2, \count($artists)); // Select related document attributes $artist = $database->findOne('artist', [ @@ -155,14 +155,14 @@ public function testOneToManyOneWayRelationship(): void $this->fail('Artist not found'); } - $this->assertEquals('Album 1', $artist->getAttribute('albums')[0]->getAttribute('name')); + $this->assertSame('Album 1', $artist->getAttribute('albums')[0]->getAttribute('name')); $this->assertArrayNotHasKey('price', $artist->getAttribute('albums')[0]); $artist = $database->getDocument('artist', 'artist1', [ Query::select(['*', 'albums.name']) ]); - $this->assertEquals('Album 1', $artist->getAttribute('albums')[0]->getAttribute('name')); + $this->assertSame('Album 1', $artist->getAttribute('albums')[0]->getAttribute('name')); $this->assertArrayNotHasKey('price', $artist->getAttribute('albums')[0]); // Update root document attribute without altering relationship @@ -172,9 +172,9 @@ public function testOneToManyOneWayRelationship(): void $artist1->setAttribute('name', 'Artist 1 Updated') ); - $this->assertEquals('Artist 1 Updated', $artist1->getAttribute('name')); + $this->assertSame('Artist 1 Updated', $artist1->getAttribute('name')); $artist1 = $database->getDocument('artist', 'artist1'); - $this->assertEquals('Artist 1 Updated', $artist1->getAttribute('name')); + $this->assertSame('Artist 1 Updated', $artist1->getAttribute('name')); // Update nested document attribute $albums = $artist1->getAttribute('albums', []); @@ -186,9 +186,9 @@ public function testOneToManyOneWayRelationship(): void $artist1->setAttribute('albums', $albums) ); - $this->assertEquals('Album 1 Updated', $artist1->getAttribute('albums')[0]->getAttribute('name')); + $this->assertSame('Album 1 Updated', $artist1->getAttribute('albums')[0]->getAttribute('name')); $artist1 = $database->getDocument('artist', 'artist1'); - $this->assertEquals('Album 1 Updated', $artist1->getAttribute('albums')[0]->getAttribute('name')); + $this->assertSame('Album 1 Updated', $artist1->getAttribute('albums')[0]->getAttribute('name')); $albumId = $artist1->getAttribute('albums')[0]->getAttribute('$id'); $albumDocument = $database->getDocument('album', $albumId); @@ -197,9 +197,9 @@ public function testOneToManyOneWayRelationship(): void $albumDocument = $database->getDocument('album', $albumDocument->getId()); $artist1 = $database->getDocument('artist', $artist1->getId()); - $this->assertEquals('Album 1 Updated!!!', $albumDocument['name']); - $this->assertEquals($albumDocument->getId(), $artist1->getAttribute('albums')[0]->getId()); - $this->assertEquals($albumDocument->getAttribute('name'), $artist1->getAttribute('albums')[0]->getAttribute('name')); + $this->assertSame('Album 1 Updated!!!', $albumDocument['name']); + $this->assertSame($albumDocument->getId(), $artist1->getAttribute('albums')[0]->getId()); + $this->assertSame($albumDocument->getAttribute('name'), $artist1->getAttribute('albums')[0]->getAttribute('name')); // Create new document with no relationship $artist3 = $database->createDocument('artist', new Document([ @@ -228,9 +228,9 @@ public function testOneToManyOneWayRelationship(): void ])]) ); - $this->assertEquals('Album 3', $artist3->getAttribute('albums')[0]->getAttribute('name')); + $this->assertSame('Album 3', $artist3->getAttribute('albums')[0]->getAttribute('name')); $artist3 = $database->getDocument('artist', 'artist3'); - $this->assertEquals('Album 3', $artist3->getAttribute('albums')[0]->getAttribute('name')); + $this->assertSame('Album 3', $artist3->getAttribute('albums')[0]->getAttribute('name')); // Update document with new related documents, will remove existing relations $database->updateDocument( @@ -256,7 +256,7 @@ public function testOneToManyOneWayRelationship(): void // Get document with new relationship key $artist = $database->getDocument('artist', 'artist1'); $albums = $artist->getAttribute('newAlbums'); - $this->assertEquals('album1', $albums[0]['$id']); + $this->assertSame('album1', $albums[0]['$id']); // Create new document with no relationship $database->createDocument('artist', new Document([ @@ -271,17 +271,17 @@ public function testOneToManyOneWayRelationship(): void // Can delete document with no relationship when on delete is set to restrict $deleted = $database->deleteDocument('artist', 'artist4'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $artist4 = $database->getDocument('artist', 'artist4'); - $this->assertEquals(true, $artist4->isEmpty()); + $this->assertSame(true, $artist4->isEmpty()); // Try to delete document while still related to another with on delete: restrict try { $database->deleteDocument('artist', 'artist1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Change on delete to set null @@ -296,7 +296,7 @@ public function testOneToManyOneWayRelationship(): void // Check relation was set to null $album2 = $database->getDocument('album', 'album2'); - $this->assertEquals(null, $album2->getAttribute('artist', '')); + $this->assertSame(null, $album2->getAttribute('artist', '')); // Relate again $database->updateDocument( @@ -317,10 +317,10 @@ public function testOneToManyOneWayRelationship(): void // Check parent and child were deleted $library = $database->getDocument('artist', 'artist2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $library = $database->getDocument('album', 'album2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $albums = []; for ($i = 1 ; $i <= 50 ; $i++) { @@ -359,7 +359,7 @@ public function testOneToManyOneWayRelationship(): void Query::equal('artist', [$artist->getId()]), ]); - $this->assertEquals(50, $count); + $this->assertSame(50, $count); $database->deleteDocument('album', 'album_1'); $artist = $database->getDocument('artist', $artist->getId()); @@ -383,7 +383,7 @@ public function testOneToManyOneWayRelationship(): void // Try to get document again $artist = $database->getDocument('artist', 'artist1'); $albums = $artist->getAttribute('newAlbums', ''); - $this->assertEquals(null, $albums); + $this->assertSame(null, $albums); } public function testOneToManyTwoWayRelationship(): void @@ -416,13 +416,13 @@ public function testOneToManyTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'accounts') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('accounts', $attribute['$id']); - $this->assertEquals('accounts', $attribute['key']); - $this->assertEquals('account', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_ONE_TO_MANY, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('customer', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('accounts', $attribute['$id']); + $this->assertSame('accounts', $attribute['key']); + $this->assertSame('account', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_ONE_TO_MANY, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('customer', $attribute['options']['twoWayKey']); } } @@ -431,13 +431,13 @@ public function testOneToManyTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'customer') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('customer', $attribute['$id']); - $this->assertEquals('customer', $attribute['key']); - $this->assertEquals('customer', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_ONE_TO_MANY, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('accounts', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('customer', $attribute['$id']); + $this->assertSame('customer', $attribute['key']); + $this->assertSame('customer', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_ONE_TO_MANY, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('accounts', $attribute['options']['twoWayKey']); } } @@ -469,7 +469,7 @@ public function testOneToManyTwoWayRelationship(): void $customer1Document = $database->getDocument('customer', 'customer1'); // Assert document does not contain non existing relation document. - $this->assertEquals(1, \count($customer1Document->getAttribute('accounts'))); + $this->assertSame(1, \count($customer1Document->getAttribute('accounts'))); // Create document with relationship with related ID $account2 = $database->createDocument('account', new Document([ @@ -539,48 +539,48 @@ public function testOneToManyTwoWayRelationship(): void // Get documents with relationship $customer = $database->getDocument('customer', 'customer1'); $accounts = $customer->getAttribute('accounts', []); - $this->assertEquals('account1', $accounts[0]['$id']); + $this->assertSame('account1', $accounts[0]['$id']); $this->assertArrayNotHasKey('customer', $accounts[0]); $customer = $database->getDocument('customer', 'customer2'); $accounts = $customer->getAttribute('accounts', []); - $this->assertEquals('account2', $accounts[0]['$id']); + $this->assertSame('account2', $accounts[0]['$id']); $this->assertArrayNotHasKey('customer', $accounts[0]); $customer = $database->getDocument('customer', 'customer3'); $accounts = $customer->getAttribute('accounts', []); - $this->assertEquals('account3', $accounts[0]['$id']); + $this->assertSame('account3', $accounts[0]['$id']); $this->assertArrayNotHasKey('customer', $accounts[0]); $customer = $database->getDocument('customer', 'customer4'); $accounts = $customer->getAttribute('accounts', []); - $this->assertEquals('account4', $accounts[0]['$id']); + $this->assertSame('account4', $accounts[0]['$id']); $this->assertArrayNotHasKey('customer', $accounts[0]); // Get related documents $account = $database->getDocument('account', 'account1'); $customer = $account->getAttribute('customer'); - $this->assertEquals('customer1', $customer['$id']); + $this->assertSame('customer1', $customer['$id']); $this->assertArrayNotHasKey('accounts', $customer); $account = $database->getDocument('account', 'account2'); $customer = $account->getAttribute('customer'); - $this->assertEquals('customer2', $customer['$id']); + $this->assertSame('customer2', $customer['$id']); $this->assertArrayNotHasKey('accounts', $customer); $account = $database->getDocument('account', 'account3'); $customer = $account->getAttribute('customer'); - $this->assertEquals('customer3', $customer['$id']); + $this->assertSame('customer3', $customer['$id']); $this->assertArrayNotHasKey('accounts', $customer); $account = $database->getDocument('account', 'account4'); $customer = $account->getAttribute('customer'); - $this->assertEquals('customer4', $customer['$id']); + $this->assertSame('customer4', $customer['$id']); $this->assertArrayNotHasKey('accounts', $customer); $customers = $database->find('customer'); - $this->assertEquals(4, \count($customers)); + $this->assertSame(4, \count($customers)); // Select related document attributes $customer = $database->findOne('customer', [ @@ -591,14 +591,14 @@ public function testOneToManyTwoWayRelationship(): void throw new Exception('Customer not found'); } - $this->assertEquals('Account 1', $customer->getAttribute('accounts')[0]->getAttribute('name')); + $this->assertSame('Account 1', $customer->getAttribute('accounts')[0]->getAttribute('name')); $this->assertArrayNotHasKey('number', $customer->getAttribute('accounts')[0]); $customer = $database->getDocument('customer', 'customer1', [ Query::select(['*', 'accounts.name']) ]); - $this->assertEquals('Account 1', $customer->getAttribute('accounts')[0]->getAttribute('name')); + $this->assertSame('Account 1', $customer->getAttribute('accounts')[0]->getAttribute('name')); $this->assertArrayNotHasKey('number', $customer->getAttribute('accounts')[0]); // Update root document attribute without altering relationship @@ -608,9 +608,9 @@ public function testOneToManyTwoWayRelationship(): void $customer1->setAttribute('name', 'Customer 1 Updated') ); - $this->assertEquals('Customer 1 Updated', $customer1->getAttribute('name')); + $this->assertSame('Customer 1 Updated', $customer1->getAttribute('name')); $customer1 = $database->getDocument('customer', 'customer1'); - $this->assertEquals('Customer 1 Updated', $customer1->getAttribute('name')); + $this->assertSame('Customer 1 Updated', $customer1->getAttribute('name')); $account2 = $database->getDocument('account', 'account2'); @@ -621,9 +621,9 @@ public function testOneToManyTwoWayRelationship(): void $account2->setAttribute('name', 'Account 2 Updated') ); - $this->assertEquals('Account 2 Updated', $account2->getAttribute('name')); + $this->assertSame('Account 2 Updated', $account2->getAttribute('name')); $account2 = $database->getDocument('account', 'account2'); - $this->assertEquals('Account 2 Updated', $account2->getAttribute('name')); + $this->assertSame('Account 2 Updated', $account2->getAttribute('name')); // Update nested document attribute $accounts = $customer1->getAttribute('accounts', []); @@ -635,9 +635,9 @@ public function testOneToManyTwoWayRelationship(): void $customer1->setAttribute('accounts', $accounts) ); - $this->assertEquals('Account 1 Updated', $customer1->getAttribute('accounts')[0]->getAttribute('name')); + $this->assertSame('Account 1 Updated', $customer1->getAttribute('accounts')[0]->getAttribute('name')); $customer1 = $database->getDocument('customer', 'customer1'); - $this->assertEquals('Account 1 Updated', $customer1->getAttribute('accounts')[0]->getAttribute('name')); + $this->assertSame('Account 1 Updated', $customer1->getAttribute('accounts')[0]->getAttribute('name')); // Update inverse nested document attribute $account2 = $database->updateDocument( @@ -651,9 +651,9 @@ public function testOneToManyTwoWayRelationship(): void ) ); - $this->assertEquals('Customer 2 Updated', $account2->getAttribute('customer')->getAttribute('name')); + $this->assertSame('Customer 2 Updated', $account2->getAttribute('customer')->getAttribute('name')); $account2 = $database->getDocument('account', 'account2'); - $this->assertEquals('Customer 2 Updated', $account2->getAttribute('customer')->getAttribute('name')); + $this->assertSame('Customer 2 Updated', $account2->getAttribute('customer')->getAttribute('name')); // Create new document with no relationship $customer5 = $database->createDocument('customer', new Document([ @@ -682,9 +682,9 @@ public function testOneToManyTwoWayRelationship(): void ])]) ); - $this->assertEquals('Account 5', $customer5->getAttribute('accounts')[0]->getAttribute('name')); + $this->assertSame('Account 5', $customer5->getAttribute('accounts')[0]->getAttribute('name')); $customer5 = $database->getDocument('customer', 'customer5'); - $this->assertEquals('Account 5', $customer5->getAttribute('accounts')[0]->getAttribute('name')); + $this->assertSame('Account 5', $customer5->getAttribute('accounts')[0]->getAttribute('name')); // Create new child document with no relationship $account6 = $database->createDocument('account', new Document([ @@ -713,9 +713,9 @@ public function testOneToManyTwoWayRelationship(): void ])) ); - $this->assertEquals('Customer 6', $account6->getAttribute('customer')->getAttribute('name')); + $this->assertSame('Customer 6', $account6->getAttribute('customer')->getAttribute('name')); $account6 = $database->getDocument('account', 'account6'); - $this->assertEquals('Customer 6', $account6->getAttribute('customer')->getAttribute('name')); + $this->assertSame('Customer 6', $account6->getAttribute('customer')->getAttribute('name')); // Update document with new related document, will remove existing relations $database->updateDocument( @@ -749,12 +749,12 @@ public function testOneToManyTwoWayRelationship(): void // Get document with new relationship key $customer = $database->getDocument('customer', 'customer1'); $accounts = $customer->getAttribute('newAccounts'); - $this->assertEquals('account1', $accounts[0]['$id']); + $this->assertSame('account1', $accounts[0]['$id']); // Get inverse document with new relationship key $account = $database->getDocument('account', 'account1'); $customer = $account->getAttribute('newCustomer'); - $this->assertEquals('customer1', $customer['$id']); + $this->assertSame('customer1', $customer['$id']); // Create new document with no relationship $database->createDocument('customer', new Document([ @@ -769,17 +769,17 @@ public function testOneToManyTwoWayRelationship(): void // Can delete document with no relationship when on delete is set to restrict $deleted = $database->deleteDocument('customer', 'customer7'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $customer7 = $database->getDocument('customer', 'customer7'); - $this->assertEquals(true, $customer7->isEmpty()); + $this->assertSame(true, $customer7->isEmpty()); // Try to delete document while still related to another with on delete: restrict try { $database->deleteDocument('customer', 'customer1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Change on delete to set null @@ -794,7 +794,7 @@ public function testOneToManyTwoWayRelationship(): void // Check relation was set to null $account1 = $database->getDocument('account', 'account1'); - $this->assertEquals(null, $account2->getAttribute('newCustomer', '')); + $this->assertSame(null, $account2->getAttribute('newCustomer', '')); // Relate again $database->updateDocument( @@ -815,10 +815,10 @@ public function testOneToManyTwoWayRelationship(): void // Check parent and child were deleted $library = $database->getDocument('customer', 'customer2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $library = $database->getDocument('account', 'account2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete relationship $database->deleteRelationship( @@ -829,12 +829,12 @@ public function testOneToManyTwoWayRelationship(): void // Try to get document again $customer = $database->getDocument('customer', 'customer1'); $accounts = $customer->getAttribute('newAccounts'); - $this->assertEquals(null, $accounts); + $this->assertSame(null, $accounts); // Try to get inverse document again $accounts = $database->getDocument('account', 'account1'); $customer = $accounts->getAttribute('newCustomer'); - $this->assertEquals(null, $customer); + $this->assertSame(null, $customer); } public function testNestedOneToMany_OneToOneRelationship(): void @@ -915,7 +915,7 @@ public function testNestedOneToMany_OneToOneRelationship(): void $documents = $database->find('countries', [ Query::limit(1) ]); - $this->assertEquals('Mayor 1', $documents[0]['cities'][0]['mayor']['name']); + $this->assertSame('Mayor 1', $documents[0]['cities'][0]['mayor']['name']); $documents = $database->find('countries', [ Query::select(['name']), @@ -936,13 +936,13 @@ public function testNestedOneToMany_OneToOneRelationship(): void Query::limit(1) ]); - $this->assertEquals('Mayor 1', $documents[0]['cities'][0]['mayor']['name']); + $this->assertSame('Mayor 1', $documents[0]['cities'][0]['mayor']['name']); // Insert docs to cache: $country1 = $database->getDocument('countries', 'country1'); $mayor1 = $database->getDocument('mayors', 'mayor1'); - $this->assertEquals('City 1', $mayor1['city']['name']); - $this->assertEquals('City 1', $country1['cities'][0]['name']); + $this->assertSame('City 1', $mayor1['city']['name']); + $this->assertSame('City 1', $country1['cities'][0]['name']); $database->updateDocument('cities', 'city1', new Document([ '$id' => 'city1', @@ -958,12 +958,12 @@ public function testNestedOneToMany_OneToOneRelationship(): void $mayor1 = $database->getDocument('mayors', 'mayor1'); $country1 = $database->getDocument('countries', 'country1'); - $this->assertEquals('City 1 updated', $mayor1['city']['name']); - $this->assertEquals('City 1 updated', $country1['cities'][0]['name']); - $this->assertEquals('city1', $country1['cities'][0]['$id']); - $this->assertEquals('city2', $country1['cities'][1]['$id']); - $this->assertEquals('mayor1', $country1['cities'][0]['mayor']['$id']); - $this->assertEquals('mayor2', $country1['cities'][1]['mayor']['$id']); + $this->assertSame('City 1 updated', $mayor1['city']['name']); + $this->assertSame('City 1 updated', $country1['cities'][0]['name']); + $this->assertSame('city1', $country1['cities'][0]['$id']); + $this->assertSame('city2', $country1['cities'][1]['$id']); + $this->assertSame('mayor1', $country1['cities'][0]['mayor']['$id']); + $this->assertSame('mayor2', $country1['cities'][1]['mayor']['$id']); $this->assertArrayNotHasKey('city', $country1['cities'][0]['mayor']); $this->assertArrayNotHasKey('city', $country1['cities'][1]['mayor']); @@ -990,8 +990,8 @@ public function testNestedOneToMany_OneToOneRelationship(): void ])); $country2 = $database->getDocument('countries', 'country2'); - $this->assertEquals('city3', $country2['cities'][0]['$id']); - $this->assertEquals('mayor3', $country2['cities'][0]['mayor']['$id']); + $this->assertSame('city3', $country2['cities'][0]['$id']); + $this->assertSame('mayor3', $country2['cities'][0]['mayor']['$id']); $this->assertArrayNotHasKey('country', $country2['cities'][0]); $this->assertArrayNotHasKey('city', $country2['cities'][0]['mayor']); } @@ -1086,12 +1086,12 @@ public function testNestedOneToMany_OneToManyRelationship(): void ])); $dormitory1 = $database->getDocument('dormitories', 'dormitory1'); - $this->assertEquals('occupant1', $dormitory1['occupants'][0]['$id']); - $this->assertEquals('occupant2', $dormitory1['occupants'][1]['$id']); - $this->assertEquals('pet1', $dormitory1['occupants'][0]['pets'][0]['$id']); - $this->assertEquals('pet2', $dormitory1['occupants'][0]['pets'][1]['$id']); - $this->assertEquals('pet3', $dormitory1['occupants'][1]['pets'][0]['$id']); - $this->assertEquals('pet4', $dormitory1['occupants'][1]['pets'][1]['$id']); + $this->assertSame('occupant1', $dormitory1['occupants'][0]['$id']); + $this->assertSame('occupant2', $dormitory1['occupants'][1]['$id']); + $this->assertSame('pet1', $dormitory1['occupants'][0]['pets'][0]['$id']); + $this->assertSame('pet2', $dormitory1['occupants'][0]['pets'][1]['$id']); + $this->assertSame('pet3', $dormitory1['occupants'][1]['pets'][0]['$id']); + $this->assertSame('pet4', $dormitory1['occupants'][1]['pets'][1]['$id']); $this->assertArrayNotHasKey('dormitory', $dormitory1['occupants'][0]); $this->assertArrayNotHasKey('dormitory', $dormitory1['occupants'][1]); $this->assertArrayNotHasKey('occupant', $dormitory1['occupants'][0]['pets'][0]); @@ -1122,8 +1122,8 @@ public function testNestedOneToMany_OneToManyRelationship(): void ])); $pet5 = $database->getDocument('pets', 'pet5'); - $this->assertEquals('occupant3', $pet5['occupant']['$id']); - $this->assertEquals('dormitory2', $pet5['occupant']['dormitory']['$id']); + $this->assertSame('occupant3', $pet5['occupant']['$id']); + $this->assertSame('dormitory2', $pet5['occupant']['dormitory']['$id']); $this->assertArrayNotHasKey('pets', $pet5['occupant']); $this->assertArrayNotHasKey('occupant', $pet5['occupant']['dormitory']); } @@ -1185,8 +1185,8 @@ public function testNestedOneToMany_ManyToOneRelationship(): void ])); $home1 = $database->getDocument('home', 'home1'); - $this->assertEquals('renter1', $home1['renters'][0]['$id']); - $this->assertEquals('floor1', $home1['renters'][0]['floor']['$id']); + $this->assertSame('renter1', $home1['renters'][0]['$id']); + $this->assertSame('floor1', $home1['renters'][0]['floor']['$id']); $this->assertArrayNotHasKey('home', $home1['renters'][0]); $this->assertArrayNotHasKey('renters', $home1['renters'][0]['floor']); @@ -1215,9 +1215,9 @@ public function testNestedOneToMany_ManyToOneRelationship(): void ])); $floor2 = $database->getDocument('floors', 'floor2'); - $this->assertEquals('renter2', $floor2['renters'][0]['$id']); + $this->assertSame('renter2', $floor2['renters'][0]['$id']); $this->assertArrayNotHasKey('floor', $floor2['renters'][0]); - $this->assertEquals('home2', $floor2['renters'][0]['home']['$id']); + $this->assertSame('home2', $floor2['renters'][0]['home']['$id']); $this->assertArrayNotHasKey('renter', $floor2['renters'][0]['home']); } @@ -1280,9 +1280,9 @@ public function testNestedOneToMany_ManyToManyRelationship(): void ])); $owner1 = $database->getDocument('owners', 'owner1'); - $this->assertEquals('cat1', $owner1['cats'][0]['$id']); + $this->assertSame('cat1', $owner1['cats'][0]['$id']); $this->assertArrayNotHasKey('owner', $owner1['cats'][0]); - $this->assertEquals('toy1', $owner1['cats'][0]['toys'][0]['$id']); + $this->assertSame('toy1', $owner1['cats'][0]['toys'][0]['$id']); $this->assertArrayNotHasKey('cats', $owner1['cats'][0]['toys'][0]); $database->createDocument('toys', new Document([ @@ -1310,9 +1310,9 @@ public function testNestedOneToMany_ManyToManyRelationship(): void ])); $toy2 = $database->getDocument('toys', 'toy2'); - $this->assertEquals('cat2', $toy2['cats'][0]['$id']); + $this->assertSame('cat2', $toy2['cats'][0]['$id']); $this->assertArrayNotHasKey('toys', $toy2['cats'][0]); - $this->assertEquals('owner2', $toy2['cats'][0]['owner']['$id']); + $this->assertSame('owner2', $toy2['cats'][0]['owner']['$id']); $this->assertArrayNotHasKey('cats', $toy2['cats'][0]['owner']); } @@ -1378,24 +1378,24 @@ public function testExceedMaxDepthOneToMany(): void ], ], ])); - $this->assertEquals(1, count($level1[$level2Collection])); - $this->assertEquals('level2', $level1[$level2Collection][0]->getId()); - $this->assertEquals(1, count($level1[$level2Collection][0][$level3Collection])); - $this->assertEquals('level3', $level1[$level2Collection][0][$level3Collection][0]->getId()); + $this->assertSame(1, count($level1[$level2Collection])); + $this->assertSame('level2', $level1[$level2Collection][0]->getId()); + $this->assertSame(1, count($level1[$level2Collection][0][$level3Collection])); + $this->assertSame('level3', $level1[$level2Collection][0][$level3Collection][0]->getId()); $this->assertArrayNotHasKey('level4', $level1[$level2Collection][0][$level3Collection][0]); // Make sure level 4 document was not created $level3 = $database->getDocument($level3Collection, 'level3'); - $this->assertEquals(0, count($level3[$level4Collection])); + $this->assertSame(0, count($level3[$level4Collection])); $level4 = $database->getDocument($level4Collection, 'level4'); $this->assertTrue($level4->isEmpty()); // Exceed fetch depth $level1 = $database->getDocument($level1Collection, 'level1'); - $this->assertEquals(1, count($level1[$level2Collection])); - $this->assertEquals('level2', $level1[$level2Collection][0]->getId()); - $this->assertEquals(1, count($level1[$level2Collection][0][$level3Collection])); - $this->assertEquals('level3', $level1[$level2Collection][0][$level3Collection][0]->getId()); + $this->assertSame(1, count($level1[$level2Collection])); + $this->assertSame('level2', $level1[$level2Collection][0]->getId()); + $this->assertSame(1, count($level1[$level2Collection][0][$level3Collection])); + $this->assertSame('level3', $level1[$level2Collection][0][$level3Collection][0]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][0][$level3Collection][0]); @@ -1418,15 +1418,15 @@ public function testExceedMaxDepthOneToMany(): void ], ])]) ); - $this->assertEquals(1, count($level1[$level2Collection])); - $this->assertEquals('level2new', $level1[$level2Collection][0]->getId()); - $this->assertEquals(1, count($level1[$level2Collection][0][$level3Collection])); - $this->assertEquals('level3new', $level1[$level2Collection][0][$level3Collection][0]->getId()); + $this->assertSame(1, count($level1[$level2Collection])); + $this->assertSame('level2new', $level1[$level2Collection][0]->getId()); + $this->assertSame(1, count($level1[$level2Collection][0][$level3Collection])); + $this->assertSame('level3new', $level1[$level2Collection][0][$level3Collection][0]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][0][$level3Collection][0]); // Make sure level 4 document was not created $level3 = $database->getDocument($level3Collection, 'level3new'); - $this->assertEquals(0, count($level3[$level4Collection])); + $this->assertSame(0, count($level3[$level4Collection])); $level4 = $database->getDocument($level4Collection, 'level4new'); $this->assertTrue($level4->isEmpty()); } @@ -1492,33 +1492,33 @@ public function testExceedMaxDepthOneToManyChild(): void ], ])); $this->assertArrayHasKey($level2Collection, $level1); - $this->assertEquals('level2', $level1[$level2Collection][0]->getId()); + $this->assertSame('level2', $level1[$level2Collection][0]->getId()); $this->assertArrayHasKey($level3Collection, $level1[$level2Collection][0]); - $this->assertEquals('level3', $level1[$level2Collection][0][$level3Collection][0]->getId()); + $this->assertSame('level3', $level1[$level2Collection][0][$level3Collection][0]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][0][$level3Collection][0]); // Confirm the 4th level document does not exist $level3 = $database->getDocument($level3Collection, 'level3'); - $this->assertEquals(0, count($level3[$level4Collection])); + $this->assertSame(0, count($level3[$level4Collection])); // Create level 4 document $level3->setAttribute($level4Collection, [new Document([ '$id' => 'level4', ])]); $level3 = $database->updateDocument($level3Collection, $level3->getId(), $level3); - $this->assertEquals('level4', $level3[$level4Collection][0]->getId()); + $this->assertSame('level4', $level3[$level4Collection][0]->getId()); // Verify level 4 document is set $level3 = $database->getDocument($level3Collection, 'level3'); $this->assertArrayHasKey($level4Collection, $level3); - $this->assertEquals('level4', $level3[$level4Collection][0]->getId()); + $this->assertSame('level4', $level3[$level4Collection][0]->getId()); // Exceed fetch depth $level4 = $database->getDocument($level4Collection, 'level4'); $this->assertArrayHasKey($level3Collection, $level4); - $this->assertEquals('level3', $level4[$level3Collection]->getId()); + $this->assertSame('level3', $level4[$level3Collection]->getId()); $this->assertArrayHasKey($level2Collection, $level4[$level3Collection]); - $this->assertEquals('level2', $level4[$level3Collection][$level2Collection]->getId()); + $this->assertSame('level2', $level4[$level3Collection][$level2Collection]->getId()); $this->assertArrayNotHasKey($level1Collection, $level4[$level3Collection][$level2Collection]); } @@ -1561,8 +1561,8 @@ public function testOneToManyRelationshipKeyWithSymbols(): void $doc1 = $database->getDocument('$symbols_coll.ection4', $doc1->getId()); $doc2 = $database->getDocument('$symbols_coll.ection3', $doc2->getId()); - $this->assertEquals($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection3')->getId()); - $this->assertEquals($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection4')[0]->getId()); + $this->assertSame($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection3')->getId()); + $this->assertSame($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection4')[0]->getId()); } public function testRecreateOneToManyOneWayRelationshipFromChild(): void @@ -1899,7 +1899,7 @@ public function testDeleteBulkDocumentsOneToManyRelationship(): void $this->getDatabase()->deleteDocuments('bulk_delete_person_o2m'); $this->fail('Failed to throw exception'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Restrict Cleanup @@ -2131,10 +2131,10 @@ public function testUpdateParentAndChild_OneToMany(): void ); $parentDoc = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); + $this->assertSame('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); $childDoc = $database->getDocument($childCollection, 'child1'); - $this->assertEquals('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); + $this->assertSame('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); // invalid update to child try { @@ -2150,7 +2150,7 @@ public function testUpdateParentAndChild_OneToMany(): void // parent remains unaffected $parentDocAfter = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); + $this->assertSame('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); $database->deleteCollection($parentCollection); $database->deleteCollection($childCollection); @@ -2205,7 +2205,7 @@ public function testDeleteDocumentsRelationshipErrorDoesNotDeleteParent_OneToMan $database->deleteDocuments($parentCollection, [Query::equal('$id', ['parent1'])]); $this->fail('Expected exception was not thrown'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } $parentDoc = $database->getDocument($parentCollection, 'parent1'); $childDoc = $database->getDocument($childCollection, 'child1'); @@ -2274,14 +2274,14 @@ public function testPartialBatchUpdateWithRelationships(): void // Verify initial state $product1 = $database->getDocument('products', 'product1'); - $this->assertEquals('Laptop', $product1->getAttribute('name')); - $this->assertEquals(999.99, $product1->getAttribute('price')); - $this->assertEquals('electronics', $product1->getAttribute('category')->getId()); + $this->assertSame('Laptop', $product1->getAttribute('name')); + $this->assertSame(999.99, $product1->getAttribute('price')); + $this->assertSame('electronics', $product1->getAttribute('category')->getId()); $product2 = $database->getDocument('products', 'product2'); - $this->assertEquals('Mouse', $product2->getAttribute('name')); - $this->assertEquals(25.50, $product2->getAttribute('price')); - $this->assertEquals('electronics', $product2->getAttribute('category')->getId()); + $this->assertSame('Mouse', $product2->getAttribute('name')); + $this->assertSame(25.50, $product2->getAttribute('price')); + $this->assertSame('electronics', $product2->getAttribute('category')->getId()); // Perform a BATCH partial update - ONLY update price, NOT the category relationship // This is the critical test case - batch updates with relationships @@ -2296,25 +2296,25 @@ public function testPartialBatchUpdateWithRelationships(): void // Verify that prices were updated but category relationships were preserved $product1After = $database->getDocument('products', 'product1'); - $this->assertEquals('Laptop', $product1After->getAttribute('name'), 'Product name should be preserved'); - $this->assertEquals(50.00, $product1After->getAttribute('price'), 'Price should be updated'); + $this->assertSame('Laptop', $product1After->getAttribute('name'), 'Product name should be preserved'); + $this->assertSame(50.00, $product1After->getAttribute('price'), 'Price should be updated'); // This is the critical assertion - the category relationship should still exist after batch partial update $categoryAfter = $product1After->getAttribute('category'); $this->assertNotNull($categoryAfter, 'Category relationship should be preserved after batch partial update'); - $this->assertEquals('electronics', $categoryAfter->getId(), 'Category should still be electronics'); + $this->assertSame('electronics', $categoryAfter->getId(), 'Category should still be electronics'); $product2After = $database->getDocument('products', 'product2'); - $this->assertEquals('Mouse', $product2After->getAttribute('name'), 'Product name should be preserved'); - $this->assertEquals(50.00, $product2After->getAttribute('price'), 'Price should be updated'); - $this->assertEquals('electronics', $product2After->getAttribute('category')->getId(), 'Category should still be electronics'); + $this->assertSame('Mouse', $product2After->getAttribute('name'), 'Product name should be preserved'); + $this->assertSame(50.00, $product2After->getAttribute('price'), 'Price should be updated'); + $this->assertSame('electronics', $product2After->getAttribute('category')->getId(), 'Category should still be electronics'); // Verify the reverse relationship is still intact $category = $database->getDocument('categories', 'electronics'); $products = $category->getAttribute('products'); $this->assertCount(2, $products, 'Category should still have 2 products'); - $this->assertEquals('product1', $products[0]->getId()); - $this->assertEquals('product2', $products[1]->getId()); + $this->assertSame('product1', $products[0]->getId()); + $this->assertSame('product2', $products[1]->getId()); $database->deleteCollection('products'); $database->deleteCollection('categories'); @@ -2380,10 +2380,10 @@ public function testPartialUpdateOnlyRelationship(): void // Verify initial state $author = $database->getDocument('authors', 'author1'); - $this->assertEquals('John Doe', $author->getAttribute('name')); - $this->assertEquals('A great author', $author->getAttribute('bio')); + $this->assertSame('John Doe', $author->getAttribute('name')); + $this->assertSame('A great author', $author->getAttribute('bio')); $this->assertCount(1, $author->getAttribute('books')); - $this->assertEquals('book1', $author->getAttribute('books')[0]->getId()); + $this->assertSame('book1', $author->getAttribute('books')[0]->getId()); // Partial update that ONLY changes the relationship (adds book2 to the author) // Do NOT update name or bio @@ -2400,8 +2400,8 @@ public function testPartialUpdateOnlyRelationship(): void // Verify that the relationship was updated but other fields preserved $authorAfter = $database->getDocument('authors', 'author1'); - $this->assertEquals('John Doe', $authorAfter->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals('A great author', $authorAfter->getAttribute('bio'), 'Bio should be preserved'); + $this->assertSame('John Doe', $authorAfter->getAttribute('name'), 'Name should be preserved'); + $this->assertSame('A great author', $authorAfter->getAttribute('bio'), 'Bio should be preserved'); $this->assertCount(2, $authorAfter->getAttribute('books'), 'Should now have 2 books'); $bookIds = array_map(fn ($book) => $book->getId(), $authorAfter->getAttribute('books')); @@ -2410,10 +2410,10 @@ public function testPartialUpdateOnlyRelationship(): void // Verify reverse relationships $book1 = $database->getDocument('books', 'book1'); - $this->assertEquals('author1', $book1->getAttribute('author')->getId()); + $this->assertSame('author1', $book1->getAttribute('author')->getId()); $book2 = $database->getDocument('books', 'book2'); - $this->assertEquals('author1', $book2->getAttribute('author')->getId()); + $this->assertSame('author1', $book2->getAttribute('author')->getId()); $database->deleteCollection('authors'); $database->deleteCollection('books'); @@ -2489,9 +2489,9 @@ public function testPartialUpdateBothDataAndRelationship(): void // Verify initial state $team = $database->getDocument('teams', 'team1'); - $this->assertEquals('The Warriors', $team->getAttribute('name')); - $this->assertEquals('San Francisco', $team->getAttribute('city')); - $this->assertEquals(1946, $team->getAttribute('founded')); + $this->assertSame('The Warriors', $team->getAttribute('name')); + $this->assertSame('San Francisco', $team->getAttribute('city')); + $this->assertSame(1946, $team->getAttribute('founded')); $this->assertCount(2, $team->getAttribute('players')); // Partial update that changes BOTH flat data (city) AND relationship (players) @@ -2510,9 +2510,9 @@ public function testPartialUpdateBothDataAndRelationship(): void // Verify that both updates worked and other fields preserved $teamAfter = $database->getDocument('teams', 'team1'); - $this->assertEquals('The Warriors', $teamAfter->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals('Oakland', $teamAfter->getAttribute('city'), 'City should be updated'); - $this->assertEquals(1946, $teamAfter->getAttribute('founded'), 'Founded should be preserved'); + $this->assertSame('The Warriors', $teamAfter->getAttribute('name'), 'Name should be preserved'); + $this->assertSame('Oakland', $teamAfter->getAttribute('city'), 'City should be updated'); + $this->assertSame(1946, $teamAfter->getAttribute('founded'), 'Founded should be preserved'); $this->assertCount(2, $teamAfter->getAttribute('players'), 'Should still have 2 players'); $playerIds = array_map(fn ($player) => $player->getId(), $teamAfter->getAttribute('players')); @@ -2522,13 +2522,13 @@ public function testPartialUpdateBothDataAndRelationship(): void // Verify reverse relationships $player1 = $database->getDocument('players', 'player1'); - $this->assertEquals('team1', $player1->getAttribute('team')->getId()); + $this->assertSame('team1', $player1->getAttribute('team')->getId()); $player2 = $database->getDocument('players', 'player2'); $this->assertNull($player2->getAttribute('team'), 'Player2 should no longer have a team'); $player3 = $database->getDocument('players', 'player3'); - $this->assertEquals('team1', $player3->getAttribute('team')->getId()); + $this->assertSame('team1', $player3->getAttribute('team')->getId()); $database->deleteCollection('teams'); $database->deleteCollection('players'); @@ -2581,9 +2581,9 @@ public function testPartialUpdateOneToManyChildSide(): void ])); $post = $database->getDocument('posts', 'post1'); - $this->assertEquals('Post 1', $post->getAttribute('title'), 'Title should be preserved'); - $this->assertEquals(200, $post->getAttribute('views'), 'Views should be updated'); - $this->assertEquals('blog1', $post->getAttribute('blog')->getId(), 'Blog relationship should be preserved'); + $this->assertSame('Post 1', $post->getAttribute('title'), 'Title should be preserved'); + $this->assertSame(200, $post->getAttribute('views'), 'Views should be updated'); + $this->assertSame('blog1', $post->getAttribute('blog')->getId(), 'Blog relationship should be preserved'); $database->deleteCollection('blogs'); $database->deleteCollection('posts'); @@ -2642,8 +2642,8 @@ public function testPartialUpdateWithStringIdsVsDocuments(): void ])); $lib = $database->getDocument('libraries', 'lib1'); - $this->assertEquals('Central Library', $lib->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals('Downtown', $lib->getAttribute('location'), 'Location should be preserved'); + $this->assertSame('Central Library', $lib->getAttribute('name'), 'Name should be preserved'); + $this->assertSame('Downtown', $lib->getAttribute('location'), 'Location should be preserved'); $this->assertCount(2, $lib->getAttribute('books'), 'Should have 2 books'); // Create another standalone book @@ -2665,8 +2665,8 @@ public function testPartialUpdateWithStringIdsVsDocuments(): void ])); $lib = $database->getDocument('libraries', 'lib1'); - $this->assertEquals('Central Library', $lib->getAttribute('name'), 'Name should be preserved'); - $this->assertEquals('Downtown', $lib->getAttribute('location'), 'Location should be preserved'); + $this->assertSame('Central Library', $lib->getAttribute('name'), 'Name should be preserved'); + $this->assertSame('Downtown', $lib->getAttribute('location'), 'Location should be preserved'); $this->assertCount(2, $lib->getAttribute('books'), 'Should have 2 books'); $bookIds = array_map(fn ($book) => $book->getId(), $lib->getAttribute('books')); diff --git a/tests/e2e/Adapter/Scopes/Relationships/OneToOneTests.php b/tests/e2e/Adapter/Scopes/Relationships/OneToOneTests.php index 56f2ba5c5..f2778ff38 100644 --- a/tests/e2e/Adapter/Scopes/Relationships/OneToOneTests.php +++ b/tests/e2e/Adapter/Scopes/Relationships/OneToOneTests.php @@ -46,13 +46,13 @@ public function testOneToOneOneWayRelationship(): void foreach ($attributes as $attribute) { if ($attribute['key'] === 'library') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('library', $attribute['$id']); - $this->assertEquals('library', $attribute['key']); - $this->assertEquals('library', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_ONE_TO_ONE, $attribute['options']['relationType']); - $this->assertEquals(false, $attribute['options']['twoWay']); - $this->assertEquals('person', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('library', $attribute['$id']); + $this->assertSame('library', $attribute['key']); + $this->assertSame('library', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_ONE_TO_ONE, $attribute['options']['relationType']); + $this->assertSame(false, $attribute['options']['twoWay']); + $this->assertSame('person', $attribute['options']['twoWayKey']); } } @@ -60,7 +60,7 @@ public function testOneToOneOneWayRelationship(): void $database->deleteAttribute('person', 'library'); $this->fail('Failed to throw Exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete relationship as an attribute', $e->getMessage()); + $this->assertSame('Cannot delete relationship as an attribute', $e->getMessage()); } // Create document with relationship with nested data @@ -93,7 +93,7 @@ public function testOneToOneOneWayRelationship(): void $person1Document = $database->getDocument('person', 'person1'); // Assert document does not contain non existing relation document. - $this->assertEquals(null, $person1Document->getAttribute('library')); + $this->assertSame(null, $person1Document->getAttribute('library')); $database->updateDocument( 'person', @@ -125,9 +125,9 @@ public function testOneToOneOneWayRelationship(): void 'area' => 'Area 10 Updated', ], ])); - $this->assertEquals('Library 10 Updated', $person10->getAttribute('library')->getAttribute('name')); + $this->assertSame('Library 10 Updated', $person10->getAttribute('library')->getAttribute('name')); $library10 = $database->getDocument('library', $library10->getId()); - $this->assertEquals('Library 10 Updated', $library10->getAttribute('name')); + $this->assertSame('Library 10 Updated', $library10->getAttribute('name')); // Create document with relationship with related ID $database->createDocument('library', new Document([ @@ -153,12 +153,12 @@ public function testOneToOneOneWayRelationship(): void // Get documents with relationship $person1 = $database->getDocument('person', 'person1'); $library = $person1->getAttribute('library'); - $this->assertEquals('library1', $library['$id']); + $this->assertSame('library1', $library['$id']); $this->assertArrayNotHasKey('person', $library); $person = $database->getDocument('person', 'person2'); $library = $person->getAttribute('library'); - $this->assertEquals('library2', $library['$id']); + $this->assertSame('library2', $library['$id']); $this->assertArrayNotHasKey('person', $library); // Get related documents @@ -175,7 +175,7 @@ public function testOneToOneOneWayRelationship(): void $this->assertArrayNotHasKey('library', $people[0]); $people = $database->find('person'); - $this->assertEquals(3, \count($people)); + $this->assertSame(3, \count($people)); // Select related document attributes $person = $database->findOne('person', [ @@ -186,14 +186,14 @@ public function testOneToOneOneWayRelationship(): void throw new Exception('Person not found'); } - $this->assertEquals('Library 1', $person->getAttribute('library')->getAttribute('name')); + $this->assertSame('Library 1', $person->getAttribute('library')->getAttribute('name')); $this->assertArrayNotHasKey('area', $person->getAttribute('library')); $person = $database->getDocument('person', 'person1', [ Query::select(['*', 'library.name', '$id']) ]); - $this->assertEquals('Library 1', $person->getAttribute('library')->getAttribute('name')); + $this->assertSame('Library 1', $person->getAttribute('library')->getAttribute('name')); $this->assertArrayNotHasKey('area', $person->getAttribute('library')); @@ -202,17 +202,17 @@ public function testOneToOneOneWayRelationship(): void Query::select(['name']), ]); $this->assertArrayNotHasKey('library', $document); - $this->assertEquals('Person 1', $document['name']); + $this->assertSame('Person 1', $document['name']); $document = $database->getDocument('person', $person->getId(), [ Query::select(['*']), ]); - $this->assertEquals('library1', $document['library']); + $this->assertSame('library1', $document['library']); $document = $database->getDocument('person', $person->getId(), [ Query::select(['library.*']), ]); - $this->assertEquals('Library 1', $document['library']['name']); + $this->assertSame('Library 1', $document['library']['name']); $this->assertArrayNotHasKey('name', $document); // Update root document attribute without altering relationship @@ -222,9 +222,9 @@ public function testOneToOneOneWayRelationship(): void $person1->setAttribute('name', 'Person 1 Updated') ); - $this->assertEquals('Person 1 Updated', $person1->getAttribute('name')); + $this->assertSame('Person 1 Updated', $person1->getAttribute('name')); $person1 = $database->getDocument('person', 'person1'); - $this->assertEquals('Person 1 Updated', $person1->getAttribute('name')); + $this->assertSame('Person 1 Updated', $person1->getAttribute('name')); // Update nested document attribute $person1 = $database->updateDocument( @@ -238,9 +238,9 @@ public function testOneToOneOneWayRelationship(): void ) ); - $this->assertEquals('Library 1 Updated', $person1->getAttribute('library')->getAttribute('name')); + $this->assertSame('Library 1 Updated', $person1->getAttribute('library')->getAttribute('name')); $person1 = $database->getDocument('person', 'person1'); - $this->assertEquals('Library 1 Updated', $person1->getAttribute('library')->getAttribute('name')); + $this->assertSame('Library 1 Updated', $person1->getAttribute('library')->getAttribute('name')); // Create new document with no relationship $person3 = $database->createDocument('person', new Document([ @@ -268,20 +268,20 @@ public function testOneToOneOneWayRelationship(): void ])) ); - $this->assertEquals('library3', $person3->getAttribute('library')['$id']); + $this->assertSame('library3', $person3->getAttribute('library')['$id']); $person3 = $database->getDocument('person', 'person3'); - $this->assertEquals('Library 3', $person3['library']['name']); + $this->assertSame('Library 3', $person3['library']['name']); $libraryDocument = $database->getDocument('library', 'library3'); $libraryDocument->setAttribute('name', 'Library 3 updated'); $database->updateDocument('library', 'library3', $libraryDocument); $libraryDocument = $database->getDocument('library', 'library3'); - $this->assertEquals('Library 3 updated', $libraryDocument['name']); + $this->assertSame('Library 3 updated', $libraryDocument['name']); $person3 = $database->getDocument('person', 'person3'); // Todo: This is failing - $this->assertEquals($libraryDocument['name'], $person3['library']['name']); - $this->assertEquals('library3', $person3->getAttribute('library')['$id']); + $this->assertSame($libraryDocument['name'], $person3['library']['name']); + $this->assertSame('library3', $person3->getAttribute('library')['$id']); // One to one can't relate to multiple documents, unique index throws duplicate try { @@ -330,7 +330,7 @@ public function testOneToOneOneWayRelationship(): void // Get document with again $person = $database->getDocument('person', 'person1'); $library = $person->getAttribute('newLibrary'); - $this->assertEquals('library4', $library['$id']); + $this->assertSame('library4', $library['$id']); // Create person with no relationship $database->createDocument('person', new Document([ @@ -345,17 +345,17 @@ public function testOneToOneOneWayRelationship(): void // Can delete parent document with no relation with on delete set to restrict $deleted = $database->deleteDocument('person', 'person4'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $person4 = $database->getDocument('person', 'person4'); - $this->assertEquals(true, $person4->isEmpty()); + $this->assertSame(true, $person4->isEmpty()); // Cannot delete document while still related to another with on delete set to restrict try { $database->deleteDocument('person', 'person1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Can delete child document while still related to another with on delete set to restrict @@ -378,9 +378,9 @@ public function testOneToOneOneWayRelationship(): void ], ])); $deleted = $database->deleteDocument('library', 'library5'); - $this->assertEquals(true, $deleted); + $this->assertSame(true, $deleted); $person5 = $database->getDocument('person', 'person5'); - $this->assertEquals(null, $person5->getAttribute('newLibrary')); + $this->assertSame(null, $person5->getAttribute('newLibrary')); // Change on delete to set null $database->updateRelationship( @@ -397,7 +397,7 @@ public function testOneToOneOneWayRelationship(): void // Check relation was set to null $person2 = $database->getDocument('person', 'person2'); - $this->assertEquals(null, $person2->getAttribute('newLibrary', '')); + $this->assertSame(null, $person2->getAttribute('newLibrary', '')); // Relate to another document $database->updateDocument( @@ -418,10 +418,10 @@ public function testOneToOneOneWayRelationship(): void // Check parent and child were deleted $person = $database->getDocument('person', 'person2'); - $this->assertEquals(true, $person->isEmpty()); + $this->assertSame(true, $person->isEmpty()); $library = $database->getDocument('library', 'library4'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete relationship $database->deleteRelationship( @@ -432,7 +432,7 @@ public function testOneToOneOneWayRelationship(): void // Check parent doesn't have relationship anymore $person = $database->getDocument('person', 'person1'); $library = $person->getAttribute('newLibrary', ''); - $this->assertEquals(null, $library); + $this->assertSame(null, $library); } /** @@ -470,13 +470,13 @@ public function testOneToOneTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'city') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('city', $attribute['$id']); - $this->assertEquals('city', $attribute['key']); - $this->assertEquals('city', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_ONE_TO_ONE, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('country', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('city', $attribute['$id']); + $this->assertSame('city', $attribute['key']); + $this->assertSame('city', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_ONE_TO_ONE, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('country', $attribute['options']['twoWayKey']); } } @@ -484,13 +484,13 @@ public function testOneToOneTwoWayRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'country') { - $this->assertEquals('relationship', $attribute['type']); - $this->assertEquals('country', $attribute['$id']); - $this->assertEquals('country', $attribute['key']); - $this->assertEquals('country', $attribute['options']['relatedCollection']); - $this->assertEquals(Database::RELATION_ONE_TO_ONE, $attribute['options']['relationType']); - $this->assertEquals(true, $attribute['options']['twoWay']); - $this->assertEquals('city', $attribute['options']['twoWayKey']); + $this->assertSame('relationship', $attribute['type']); + $this->assertSame('country', $attribute['$id']); + $this->assertSame('country', $attribute['key']); + $this->assertSame('country', $attribute['options']['relatedCollection']); + $this->assertSame(Database::RELATION_ONE_TO_ONE, $attribute['options']['relationType']); + $this->assertSame(true, $attribute['options']['twoWay']); + $this->assertSame('city', $attribute['options']['twoWayKey']); } } @@ -517,14 +517,14 @@ public function testOneToOneTwoWayRelationship(): void $database->createDocument('country', new Document($doc->getArrayCopy())); $country1 = $database->getDocument('country', 'country1'); - $this->assertEquals('London', $country1->getAttribute('city')->getAttribute('name')); + $this->assertSame('London', $country1->getAttribute('city')->getAttribute('name')); // Update a document with non existing related document. It should not get added to the list. $database->updateDocument('country', 'country1', (new Document($doc->getArrayCopy()))->setAttribute('city', 'no-city')); $country1Document = $database->getDocument('country', 'country1'); // Assert document does not contain non existing relation document. - $this->assertEquals(null, $country1Document->getAttribute('city')); + $this->assertSame(null, $country1Document->getAttribute('city')); $database->updateDocument('country', 'country1', (new Document($doc->getArrayCopy()))->setAttribute('city', 'city1')); try { $database->deleteDocument('country', 'country1'); @@ -545,7 +545,7 @@ public function testOneToOneTwoWayRelationship(): void $database->createDocument('country', new Document($doc->getArrayCopy())); $country1 = $database->getDocument('country', 'country1'); - $this->assertEquals('London', $country1->getAttribute('city')->getAttribute('name')); + $this->assertSame('London', $country1->getAttribute('city')->getAttribute('name')); // Create document with relationship with related ID $database->createDocument('city', new Document([ @@ -613,48 +613,48 @@ public function testOneToOneTwoWayRelationship(): void // Get document with relationship $city = $database->getDocument('city', 'city1'); $country = $city->getAttribute('country'); - $this->assertEquals('country1', $country['$id']); + $this->assertSame('country1', $country['$id']); $this->assertArrayNotHasKey('city', $country); $city = $database->getDocument('city', 'city2'); $country = $city->getAttribute('country'); - $this->assertEquals('country2', $country['$id']); + $this->assertSame('country2', $country['$id']); $this->assertArrayNotHasKey('city', $country); $city = $database->getDocument('city', 'city3'); $country = $city->getAttribute('country'); - $this->assertEquals('country3', $country['$id']); + $this->assertSame('country3', $country['$id']); $this->assertArrayNotHasKey('city', $country); $city = $database->getDocument('city', 'city4'); $country = $city->getAttribute('country'); - $this->assertEquals('country4', $country['$id']); + $this->assertSame('country4', $country['$id']); $this->assertArrayNotHasKey('city', $country); // Get inverse document with relationship $country = $database->getDocument('country', 'country1'); $city = $country->getAttribute('city'); - $this->assertEquals('city1', $city['$id']); + $this->assertSame('city1', $city['$id']); $this->assertArrayNotHasKey('country', $city); $country = $database->getDocument('country', 'country2'); $city = $country->getAttribute('city'); - $this->assertEquals('city2', $city['$id']); + $this->assertSame('city2', $city['$id']); $this->assertArrayNotHasKey('country', $city); $country = $database->getDocument('country', 'country3'); $city = $country->getAttribute('city'); - $this->assertEquals('city3', $city['$id']); + $this->assertSame('city3', $city['$id']); $this->assertArrayNotHasKey('country', $city); $country = $database->getDocument('country', 'country4'); $city = $country->getAttribute('city'); - $this->assertEquals('city4', $city['$id']); + $this->assertSame('city4', $city['$id']); $this->assertArrayNotHasKey('country', $city); $countries = $database->find('country'); - $this->assertEquals(4, \count($countries)); + $this->assertSame(4, \count($countries)); // Select related document attributes $country = $database->findOne('country', [ @@ -665,14 +665,14 @@ public function testOneToOneTwoWayRelationship(): void throw new Exception('Country not found'); } - $this->assertEquals('London', $country->getAttribute('city')->getAttribute('name')); + $this->assertSame('London', $country->getAttribute('city')->getAttribute('name')); $this->assertArrayNotHasKey('code', $country->getAttribute('city')); $country = $database->getDocument('country', 'country1', [ Query::select(['*', 'city.name']) ]); - $this->assertEquals('London', $country->getAttribute('city')->getAttribute('name')); + $this->assertSame('London', $country->getAttribute('city')->getAttribute('name')); $this->assertArrayNotHasKey('code', $country->getAttribute('city')); $country1 = $database->getDocument('country', 'country1'); @@ -684,9 +684,9 @@ public function testOneToOneTwoWayRelationship(): void $country1->setAttribute('name', 'Country 1 Updated') ); - $this->assertEquals('Country 1 Updated', $country1->getAttribute('name')); + $this->assertSame('Country 1 Updated', $country1->getAttribute('name')); $country1 = $database->getDocument('country', 'country1'); - $this->assertEquals('Country 1 Updated', $country1->getAttribute('name')); + $this->assertSame('Country 1 Updated', $country1->getAttribute('name')); $city2 = $database->getDocument('city', 'city2'); @@ -697,9 +697,9 @@ public function testOneToOneTwoWayRelationship(): void $city2->setAttribute('name', 'City 2 Updated') ); - $this->assertEquals('City 2 Updated', $city2->getAttribute('name')); + $this->assertSame('City 2 Updated', $city2->getAttribute('name')); $city2 = $database->getDocument('city', 'city2'); - $this->assertEquals('City 2 Updated', $city2->getAttribute('name')); + $this->assertSame('City 2 Updated', $city2->getAttribute('name')); // Update nested document attribute $country1 = $database->updateDocument( @@ -713,9 +713,9 @@ public function testOneToOneTwoWayRelationship(): void ) ); - $this->assertEquals('City 1 Updated', $country1->getAttribute('city')->getAttribute('name')); + $this->assertSame('City 1 Updated', $country1->getAttribute('city')->getAttribute('name')); $country1 = $database->getDocument('country', 'country1'); - $this->assertEquals('City 1 Updated', $country1->getAttribute('city')->getAttribute('name')); + $this->assertSame('City 1 Updated', $country1->getAttribute('city')->getAttribute('name')); // Update inverse nested document attribute $city2 = $database->updateDocument( @@ -729,9 +729,9 @@ public function testOneToOneTwoWayRelationship(): void ) ); - $this->assertEquals('Country 2 Updated', $city2->getAttribute('country')->getAttribute('name')); + $this->assertSame('Country 2 Updated', $city2->getAttribute('country')->getAttribute('name')); $city2 = $database->getDocument('city', 'city2'); - $this->assertEquals('Country 2 Updated', $city2->getAttribute('country')->getAttribute('name')); + $this->assertSame('Country 2 Updated', $city2->getAttribute('country')->getAttribute('name')); // Create new document with no relationship $country5 = $database->createDocument('country', new Document([ @@ -759,9 +759,9 @@ public function testOneToOneTwoWayRelationship(): void ])) ); - $this->assertEquals('city5', $country5->getAttribute('city')['$id']); + $this->assertSame('city5', $country5->getAttribute('city')['$id']); $country5 = $database->getDocument('country', 'country5'); - $this->assertEquals('city5', $country5->getAttribute('city')['$id']); + $this->assertSame('city5', $country5->getAttribute('city')['$id']); // Create new document with no relationship $city6 = $database->createDocument('city', new Document([ @@ -789,9 +789,9 @@ public function testOneToOneTwoWayRelationship(): void ])) ); - $this->assertEquals('country6', $city6->getAttribute('country')['$id']); + $this->assertSame('country6', $city6->getAttribute('country')['$id']); $city6 = $database->getDocument('city', 'city6'); - $this->assertEquals('country6', $city6->getAttribute('country')['$id']); + $this->assertSame('country6', $city6->getAttribute('country')['$id']); // One to one can't relate to multiple documents, unique index throws duplicate try { @@ -814,9 +814,9 @@ public function testOneToOneTwoWayRelationship(): void $city1->setAttribute('country', null) ); - $this->assertEquals(null, $city1->getAttribute('country')); + $this->assertSame(null, $city1->getAttribute('country')); $city1 = $database->getDocument('city', 'city1'); - $this->assertEquals(null, $city1->getAttribute('country')); + $this->assertSame(null, $city1->getAttribute('country')); // Create a new city with no relation $city7 = $database->createDocument('city', new Document([ @@ -873,12 +873,12 @@ public function testOneToOneTwoWayRelationship(): void // Get document with new relationship key $city = $database->getDocument('city', 'city1'); $country = $city->getAttribute('newCountry'); - $this->assertEquals('country7', $country['$id']); + $this->assertSame('country7', $country['$id']); // Get inverse document with new relationship key $country = $database->getDocument('country', 'country7'); $city = $country->getAttribute('newCity'); - $this->assertEquals('city1', $city['$id']); + $this->assertSame('city1', $city['$id']); // Create a new country with no relation $database->createDocument('country', new Document([ @@ -893,10 +893,10 @@ public function testOneToOneTwoWayRelationship(): void // Can delete parent document with no relation with on delete set to restrict $deleted = $database->deleteDocument('country', 'country8'); - $this->assertEquals(1, $deleted); + $this->assertSame(1, $deleted); $country8 = $database->getDocument('country', 'country8'); - $this->assertEquals(true, $country8->isEmpty()); + $this->assertSame(true, $country8->isEmpty()); // Cannot delete document while still related to another with on delete set to restrict @@ -904,7 +904,7 @@ public function testOneToOneTwoWayRelationship(): void $database->deleteDocument('country', 'country1'); $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } // Change on delete to set null @@ -928,14 +928,14 @@ public function testOneToOneTwoWayRelationship(): void // Check relation was set to null $city7 = $database->getDocument('city', 'city7'); - $this->assertEquals(null, $city7->getAttribute('country', '')); + $this->assertSame(null, $city7->getAttribute('country', '')); // Delete child, set parent relationship to null for two-way $database->deleteDocument('city', 'city2'); // Check relation was set to null $country2 = $database->getDocument('country', 'country2'); - $this->assertEquals(null, $country2->getAttribute('city', '')); + $this->assertSame(null, $country2->getAttribute('city', '')); // Relate again $database->updateDocument( @@ -956,20 +956,20 @@ public function testOneToOneTwoWayRelationship(): void // Check parent and child were deleted $library = $database->getDocument('country', 'country7'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $library = $database->getDocument('city', 'city1'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Delete child, will delete parent for two-way $database->deleteDocument('city', 'city7'); // Check parent and child were deleted $library = $database->getDocument('city', 'city7'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); $library = $database->getDocument('country', 'country2'); - $this->assertEquals(true, $library->isEmpty()); + $this->assertSame(true, $library->isEmpty()); // Create new document to check after deleting relationship $database->createDocument('city', new Document([ @@ -996,12 +996,12 @@ public function testOneToOneTwoWayRelationship(): void // Try to get document again $country = $database->getDocument('country', 'country4'); $city = $country->getAttribute('newCity'); - $this->assertEquals(null, $city); + $this->assertSame(null, $city); // Try to get inverse document again $city = $database->getDocument('city', 'city7'); $country = $city->getAttribute('newCountry'); - $this->assertEquals(null, $country); + $this->assertSame(null, $country); } public function testIdenticalTwoWayKeyRelationship(): void @@ -1033,7 +1033,7 @@ public function testIdenticalTwoWayKeyRelationship(): void ); $this->fail('Failed to throw Exception'); } catch (Exception $e) { - $this->assertEquals('Related attribute already exists', $e->getMessage()); + $this->assertSame('Related attribute already exists', $e->getMessage()); } $database->createRelationship( @@ -1048,11 +1048,11 @@ public function testIdenticalTwoWayKeyRelationship(): void $attributes = $collection->getAttribute('attributes', []); foreach ($attributes as $attribute) { if ($attribute['key'] === 'child1') { - $this->assertEquals('parent', $attribute['options']['twoWayKey']); + $this->assertSame('parent', $attribute['options']['twoWayKey']); } if ($attribute['key'] === 'children') { - $this->assertEquals('parent_id', $attribute['options']['twoWayKey']); + $this->assertSame('parent_id', $attribute['options']['twoWayKey']); } } @@ -1077,9 +1077,9 @@ public function testIdenticalTwoWayKeyRelationship(): void $documents = $database->find('parent', []); $document = array_pop($documents); $this->assertArrayHasKey('child1', $document); - $this->assertEquals('foo', $document->getAttribute('child1')->getId()); + $this->assertSame('foo', $document->getAttribute('child1')->getId()); $this->assertArrayHasKey('children', $document); - $this->assertEquals('bar', $document->getAttribute('children')[0]->getId()); + $this->assertSame('bar', $document->getAttribute('children')[0]->getId()); try { $database->updateRelationship( @@ -1089,7 +1089,7 @@ public function testIdenticalTwoWayKeyRelationship(): void ); $this->fail('Failed to throw Exception'); } catch (Exception $e) { - $this->assertEquals('Relationship already exists', $e->getMessage()); + $this->assertSame('Relationship already exists', $e->getMessage()); } try { @@ -1100,7 +1100,7 @@ public function testIdenticalTwoWayKeyRelationship(): void ); $this->fail('Failed to throw Exception'); } catch (Exception $e) { - $this->assertEquals('Related attribute already exists', $e->getMessage()); + $this->assertSame('Related attribute already exists', $e->getMessage()); } } @@ -1162,9 +1162,9 @@ public function testNestedOneToOne_OneToOneRelationship(): void ])); $pattern = $database->getDocument('pattern', 'stripes'); - $this->assertEquals('red', $pattern['shirt']['$id']); + $this->assertSame('red', $pattern['shirt']['$id']); $this->assertArrayNotHasKey('pattern', $pattern['shirt']); - $this->assertEquals('reds', $pattern['shirt']['team']['$id']); + $this->assertSame('reds', $pattern['shirt']['team']['$id']); $this->assertArrayNotHasKey('shirt', $pattern['shirt']['team']); $database->createDocument('team', new Document([ @@ -1190,9 +1190,9 @@ public function testNestedOneToOne_OneToOneRelationship(): void ])); $team = $database->getDocument('team', 'blues'); - $this->assertEquals('blue', $team['shirt']['$id']); + $this->assertSame('blue', $team['shirt']['$id']); $this->assertArrayNotHasKey('team', $team['shirt']); - $this->assertEquals('plain', $team['shirt']['pattern']['$id']); + $this->assertSame('plain', $team['shirt']['pattern']['$id']); $this->assertArrayNotHasKey('shirt', $team['shirt']['pattern']); } @@ -1262,11 +1262,11 @@ public function testNestedOneToOne_OneToManyRelationship(): void ])); $teacher1 = $database->getDocument('teachers', 'teacher1'); - $this->assertEquals('classroom1', $teacher1['classroom']['$id']); + $this->assertSame('classroom1', $teacher1['classroom']['$id']); $this->assertArrayNotHasKey('teacher', $teacher1['classroom']); - $this->assertEquals(2, \count($teacher1['classroom']['children'])); - $this->assertEquals('Child 1', $teacher1['classroom']['children'][0]['name']); - $this->assertEquals('Child 2', $teacher1['classroom']['children'][1]['name']); + $this->assertSame(2, \count($teacher1['classroom']['children'])); + $this->assertSame('Child 1', $teacher1['classroom']['children'][0]['name']); + $this->assertSame('Child 2', $teacher1['classroom']['children'][1]['name']); $database->createDocument('children', new Document([ '$id' => 'child3', @@ -1291,9 +1291,9 @@ public function testNestedOneToOne_OneToManyRelationship(): void ])); $child3 = $database->getDocument('children', 'child3'); - $this->assertEquals('classroom2', $child3['classroom']['$id']); + $this->assertSame('classroom2', $child3['classroom']['$id']); $this->assertArrayNotHasKey('children', $child3['classroom']); - $this->assertEquals('teacher2', $child3['classroom']['teacher']['$id']); + $this->assertSame('teacher2', $child3['classroom']['teacher']['$id']); $this->assertArrayNotHasKey('classroom', $child3['classroom']['teacher']); } @@ -1354,9 +1354,9 @@ public function testNestedOneToOne_ManyToOneRelationship(): void ])); $user1 = $database->getDocument('users', 'user1'); - $this->assertEquals('profile1', $user1['profile']['$id']); + $this->assertSame('profile1', $user1['profile']['$id']); $this->assertArrayNotHasKey('user', $user1['profile']); - $this->assertEquals('avatar1', $user1['profile']['avatar']['$id']); + $this->assertSame('avatar1', $user1['profile']['avatar']['$id']); $this->assertArrayNotHasKey('profile', $user1['profile']['avatar']); $database->createDocument('avatars', new Document([ @@ -1384,9 +1384,9 @@ public function testNestedOneToOne_ManyToOneRelationship(): void ])); $avatar2 = $database->getDocument('avatars', 'avatar2'); - $this->assertEquals('profile2', $avatar2['profiles'][0]['$id']); + $this->assertSame('profile2', $avatar2['profiles'][0]['$id']); $this->assertArrayNotHasKey('avatars', $avatar2['profiles'][0]); - $this->assertEquals('user2', $avatar2['profiles'][0]['user']['$id']); + $this->assertSame('user2', $avatar2['profiles'][0]['user']['$id']); $this->assertArrayNotHasKey('profiles', $avatar2['profiles'][0]['user']); } @@ -1455,10 +1455,10 @@ public function testNestedOneToOne_ManyToManyRelationship(): void ])); $address1 = $database->getDocument('addresses', 'address1'); - $this->assertEquals('house1', $address1['house']['$id']); + $this->assertSame('house1', $address1['house']['$id']); $this->assertArrayNotHasKey('address', $address1['house']); - $this->assertEquals('building1', $address1['house']['buildings'][0]['$id']); - $this->assertEquals('building2', $address1['house']['buildings'][1]['$id']); + $this->assertSame('building1', $address1['house']['buildings'][0]['$id']); + $this->assertSame('building2', $address1['house']['buildings'][1]['$id']); $this->assertArrayNotHasKey('houses', $address1['house']['buildings'][0]); $this->assertArrayNotHasKey('houses', $address1['house']['buildings'][1]); @@ -1544,9 +1544,9 @@ public function testExceedMaxDepthOneToOne(): void ], ])); $this->assertArrayHasKey($level2Collection, $level1); - $this->assertEquals('level2', $level1[$level2Collection]->getId()); + $this->assertSame('level2', $level1[$level2Collection]->getId()); $this->assertArrayHasKey($level3Collection, $level1[$level2Collection]); - $this->assertEquals('level3', $level1[$level2Collection][$level3Collection]->getId()); + $this->assertSame('level3', $level1[$level2Collection][$level3Collection]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][$level3Collection]); // Confirm the 4th level document does not exist @@ -1558,14 +1558,14 @@ public function testExceedMaxDepthOneToOne(): void '$id' => 'level4', ])); $level3 = $database->updateDocument($level3Collection, $level3->getId(), $level3); - $this->assertEquals('level4', $level3[$level4Collection]->getId()); + $this->assertSame('level4', $level3[$level4Collection]->getId()); // Exceed fetch depth $level1 = $database->getDocument($level1Collection, 'level1'); $this->assertArrayHasKey($level2Collection, $level1); - $this->assertEquals('level2', $level1[$level2Collection]->getId()); + $this->assertSame('level2', $level1[$level2Collection]->getId()); $this->assertArrayHasKey($level3Collection, $level1[$level2Collection]); - $this->assertEquals('level3', $level1[$level2Collection][$level3Collection]->getId()); + $this->assertSame('level3', $level1[$level2Collection][$level3Collection]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][$level3Collection]); } @@ -1625,9 +1625,9 @@ public function testExceedMaxDepthOneToOneNull(): void ], ])); $this->assertArrayHasKey($level2Collection, $level1); - $this->assertEquals('level2', $level1[$level2Collection]->getId()); + $this->assertSame('level2', $level1[$level2Collection]->getId()); $this->assertArrayHasKey($level3Collection, $level1[$level2Collection]); - $this->assertEquals('level3', $level1[$level2Collection][$level3Collection]->getId()); + $this->assertSame('level3', $level1[$level2Collection][$level3Collection]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][$level3Collection]); // Confirm the 4th level document does not exist @@ -1639,16 +1639,16 @@ public function testExceedMaxDepthOneToOneNull(): void '$id' => 'level4', ])); $level3 = $database->updateDocument($level3Collection, $level3->getId(), $level3); - $this->assertEquals('level4', $level3[$level4Collection]->getId()); + $this->assertSame('level4', $level3[$level4Collection]->getId()); $level3 = $database->getDocument($level3Collection, 'level3'); - $this->assertEquals('level4', $level3[$level4Collection]->getId()); + $this->assertSame('level4', $level3[$level4Collection]->getId()); // Exceed fetch depth $level1 = $database->getDocument($level1Collection, 'level1'); $this->assertArrayHasKey($level2Collection, $level1); - $this->assertEquals('level2', $level1[$level2Collection]->getId()); + $this->assertSame('level2', $level1[$level2Collection]->getId()); $this->assertArrayHasKey($level3Collection, $level1[$level2Collection]); - $this->assertEquals('level3', $level1[$level2Collection][$level3Collection]->getId()); + $this->assertSame('level3', $level1[$level2Collection][$level3Collection]->getId()); $this->assertArrayNotHasKey($level4Collection, $level1[$level2Collection][$level3Collection]); } @@ -1691,8 +1691,8 @@ public function testOneToOneRelationshipKeyWithSymbols(): void $doc1 = $database->getDocument('$symbols_coll.ection2', $doc1->getId()); $doc2 = $database->getDocument('$symbols_coll.ection1', $doc2->getId()); - $this->assertEquals($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection1')->getId()); - $this->assertEquals($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection2')->getId()); + $this->assertSame($doc2->getId(), $doc1->getAttribute('$symbols_coll.ection1')->getId()); + $this->assertSame($doc1->getId(), $doc2->getAttribute('$symbols_coll.ection2')->getId()); } public function testRecreateOneToOneOneWayRelationshipFromChild(): void @@ -2010,7 +2010,7 @@ public function testDeleteBulkDocumentsOneToOneRelationship(): void $person1 = $this->getDatabase()->getDocument('bulk_delete_person_o2o', 'person1'); $library = $person1->getAttribute('bulk_delete_library_o2o'); - $this->assertEquals('library1', $library['$id']); + $this->assertSame('library1', $library['$id']); $this->assertArrayNotHasKey('bulk_delete_person_o2o', $library); // Delete person @@ -2018,7 +2018,7 @@ public function testDeleteBulkDocumentsOneToOneRelationship(): void $this->getDatabase()->deleteDocuments('bulk_delete_person_o2o'); $this->fail('Failed to throw exception'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } $this->getDatabase()->updateDocument('bulk_delete_person_o2o', 'person1', new Document([ @@ -2066,7 +2066,7 @@ public function testDeleteBulkDocumentsOneToOneRelationship(): void $person1 = $this->getDatabase()->getDocument('bulk_delete_person_o2o', 'person1'); $library = $person1->getAttribute('bulk_delete_library_o2o'); - $this->assertEquals('library1', $library['$id']); + $this->assertSame('library1', $library['$id']); $this->assertArrayNotHasKey('bulk_delete_person_o2o', $library); $person = $this->getDatabase()->getDocument('bulk_delete_person_o2o', 'person1'); @@ -2114,7 +2114,7 @@ public function testDeleteBulkDocumentsOneToOneRelationship(): void $person1 = $this->getDatabase()->getDocument('bulk_delete_person_o2o', 'person1'); $library = $person1->getAttribute('bulk_delete_library_o2o'); - $this->assertEquals('library1', $library['$id']); + $this->assertSame('library1', $library['$id']); $this->assertArrayNotHasKey('bulk_delete_person_o2o', $library); $person = $this->getDatabase()->getDocument('bulk_delete_person_o2o', 'person1'); @@ -2154,7 +2154,7 @@ public function testDeleteBulkDocumentsOneToOneRelationship(): void $person1 = $this->getDatabase()->getDocument('bulk_delete_person_o2o', 'person1'); $library = $person1->getAttribute('bulk_delete_library_o2o'); - $this->assertEquals('library1', $library['$id']); + $this->assertSame('library1', $library['$id']); $this->assertArrayNotHasKey('bulk_delete_person_o2o', $library); $this->getDatabase()->deleteDocuments('bulk_delete_person_o2o'); @@ -2187,20 +2187,20 @@ public function testDeleteTwoWayRelationshipFromChild(): void $drivers = $database->getCollection('drivers'); $licenses = $database->getCollection('licenses'); - $this->assertEquals(1, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(1, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(1, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(1, \count($licenses->getAttribute('indexes'))); + $this->assertSame(1, \count($drivers->getAttribute('attributes'))); + $this->assertSame(1, \count($drivers->getAttribute('indexes'))); + $this->assertSame(1, \count($licenses->getAttribute('attributes'))); + $this->assertSame(1, \count($licenses->getAttribute('indexes'))); $database->deleteRelationship('licenses', 'driver'); $drivers = $database->getCollection('drivers'); $licenses = $database->getCollection('licenses'); - $this->assertEquals(0, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(0, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(0, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(0, \count($licenses->getAttribute('indexes'))); + $this->assertSame(0, \count($drivers->getAttribute('attributes'))); + $this->assertSame(0, \count($drivers->getAttribute('indexes'))); + $this->assertSame(0, \count($licenses->getAttribute('attributes'))); + $this->assertSame(0, \count($licenses->getAttribute('indexes'))); $database->createRelationship( collection: 'drivers', @@ -2214,20 +2214,20 @@ public function testDeleteTwoWayRelationshipFromChild(): void $drivers = $database->getCollection('drivers'); $licenses = $database->getCollection('licenses'); - $this->assertEquals(1, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(0, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(1, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(1, \count($licenses->getAttribute('indexes'))); + $this->assertSame(1, \count($drivers->getAttribute('attributes'))); + $this->assertSame(0, \count($drivers->getAttribute('indexes'))); + $this->assertSame(1, \count($licenses->getAttribute('attributes'))); + $this->assertSame(1, \count($licenses->getAttribute('indexes'))); $database->deleteRelationship('licenses', 'driver'); $drivers = $database->getCollection('drivers'); $licenses = $database->getCollection('licenses'); - $this->assertEquals(0, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(0, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(0, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(0, \count($licenses->getAttribute('indexes'))); + $this->assertSame(0, \count($drivers->getAttribute('attributes'))); + $this->assertSame(0, \count($drivers->getAttribute('indexes'))); + $this->assertSame(0, \count($licenses->getAttribute('attributes'))); + $this->assertSame(0, \count($licenses->getAttribute('indexes'))); $database->createRelationship( collection: 'licenses', @@ -2241,20 +2241,20 @@ public function testDeleteTwoWayRelationshipFromChild(): void $drivers = $database->getCollection('drivers'); $licenses = $database->getCollection('licenses'); - $this->assertEquals(1, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(0, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(1, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(1, \count($licenses->getAttribute('indexes'))); + $this->assertSame(1, \count($drivers->getAttribute('attributes'))); + $this->assertSame(0, \count($drivers->getAttribute('indexes'))); + $this->assertSame(1, \count($licenses->getAttribute('attributes'))); + $this->assertSame(1, \count($licenses->getAttribute('indexes'))); $database->deleteRelationship('drivers', 'licenses'); $drivers = $database->getCollection('drivers'); $licenses = $database->getCollection('licenses'); - $this->assertEquals(0, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(0, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(0, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(0, \count($licenses->getAttribute('indexes'))); + $this->assertSame(0, \count($drivers->getAttribute('attributes'))); + $this->assertSame(0, \count($drivers->getAttribute('indexes'))); + $this->assertSame(0, \count($licenses->getAttribute('attributes'))); + $this->assertSame(0, \count($licenses->getAttribute('indexes'))); $database->createRelationship( collection: 'licenses', @@ -2269,12 +2269,12 @@ public function testDeleteTwoWayRelationshipFromChild(): void $licenses = $database->getCollection('licenses'); $junction = $database->getCollection('_' . $licenses->getSequence() . '_' . $drivers->getSequence()); - $this->assertEquals(1, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(0, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(1, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(0, \count($licenses->getAttribute('indexes'))); - $this->assertEquals(2, \count($junction->getAttribute('attributes'))); - $this->assertEquals(2, \count($junction->getAttribute('indexes'))); + $this->assertSame(1, \count($drivers->getAttribute('attributes'))); + $this->assertSame(0, \count($drivers->getAttribute('indexes'))); + $this->assertSame(1, \count($licenses->getAttribute('attributes'))); + $this->assertSame(0, \count($licenses->getAttribute('indexes'))); + $this->assertSame(2, \count($junction->getAttribute('attributes'))); + $this->assertSame(2, \count($junction->getAttribute('indexes'))); $database->deleteRelationship('drivers', 'licenses'); @@ -2282,12 +2282,12 @@ public function testDeleteTwoWayRelationshipFromChild(): void $licenses = $database->getCollection('licenses'); $junction = $database->getCollection('_licenses_drivers'); - $this->assertEquals(0, \count($drivers->getAttribute('attributes'))); - $this->assertEquals(0, \count($drivers->getAttribute('indexes'))); - $this->assertEquals(0, \count($licenses->getAttribute('attributes'))); - $this->assertEquals(0, \count($licenses->getAttribute('indexes'))); + $this->assertSame(0, \count($drivers->getAttribute('attributes'))); + $this->assertSame(0, \count($drivers->getAttribute('indexes'))); + $this->assertSame(0, \count($licenses->getAttribute('attributes'))); + $this->assertSame(0, \count($licenses->getAttribute('indexes'))); - $this->assertEquals(true, $junction->isEmpty()); + $this->assertSame(true, $junction->isEmpty()); } public function testUpdateParentAndChild_OneToOne(): void { @@ -2347,10 +2347,10 @@ public function testUpdateParentAndChild_OneToOne(): void ); $parentDoc = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); + $this->assertSame('Parent 1 Updated', $parentDoc->getAttribute('name'), 'Parent should be updated'); $childDoc = $database->getDocument($childCollection, 'child1'); - $this->assertEquals('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); + $this->assertSame('Child 1', $childDoc->getAttribute('name'), 'Child should remain unchanged'); // invalid update to child try { @@ -2366,7 +2366,7 @@ public function testUpdateParentAndChild_OneToOne(): void // parent remains unaffected $parentDocAfter = $database->getDocument($parentCollection, 'parent1'); - $this->assertEquals('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); + $this->assertSame('Parent 1 Updated', $parentDocAfter->getAttribute('name'), 'Parent should not be affected by failed child update'); $database->deleteCollection($parentCollection); $database->deleteCollection($childCollection); @@ -2420,7 +2420,7 @@ public function testDeleteDocumentsRelationshipErrorDoesNotDeleteParent_OneToOne $database->deleteDocuments($parentCollection, [Query::equal('$id', ['parent1'])]); $this->fail('Expected exception was not thrown'); } catch (RestrictedException $e) { - $this->assertEquals('Cannot delete document because it has at least one related document.', $e->getMessage()); + $this->assertSame('Cannot delete document because it has at least one related document.', $e->getMessage()); } $parentDoc = $database->getDocument($parentCollection, 'parent1'); $childDoc = $database->getDocument($childCollection, 'child1'); @@ -2478,13 +2478,13 @@ public function testPartialUpdateOneToOneWithRelationships(): void // Verify initial state $city = $database->getDocument('cities_partial', 'city1'); - $this->assertEquals('Test City', $city->getAttribute('name')); - $this->assertEquals(100000, $city->getAttribute('population')); - $this->assertEquals('mayor1', $city->getAttribute('mayor')->getId()); + $this->assertSame('Test City', $city->getAttribute('name')); + $this->assertSame(100000, $city->getAttribute('population')); + $this->assertSame('mayor1', $city->getAttribute('mayor')->getId()); $mayor = $database->getDocument('mayors_partial', 'mayor1'); - $this->assertEquals('Test Mayor', $mayor->getAttribute('name')); - $this->assertEquals('city1', $mayor->getAttribute('city')->getId()); + $this->assertSame('Test Mayor', $mayor->getAttribute('name')); + $this->assertSame('city1', $mayor->getAttribute('city')->getId()); // Perform a partial update - ONLY update the city name, NOT the mayor relationship $database->updateDocument('cities_partial', 'city1', new Document([ @@ -2500,18 +2500,18 @@ public function testPartialUpdateOneToOneWithRelationships(): void // Verify that the city name was updated but the mayor relationship was preserved $cityAfterUpdate = $database->getDocument('cities_partial', 'city1'); - $this->assertEquals('Updated City Name', $cityAfterUpdate->getAttribute('name'), 'City name should be updated'); - $this->assertEquals(100000, $cityAfterUpdate->getAttribute('population'), 'Population should be preserved'); + $this->assertSame('Updated City Name', $cityAfterUpdate->getAttribute('name'), 'City name should be updated'); + $this->assertSame(100000, $cityAfterUpdate->getAttribute('population'), 'Population should be preserved'); // This is the critical test - the mayor relationship should still exist $mayorAfterUpdate = $cityAfterUpdate->getAttribute('mayor'); $this->assertNotNull($mayorAfterUpdate, 'Mayor relationship should be preserved after partial update'); - $this->assertEquals('mayor1', $mayorAfterUpdate->getId(), 'Mayor ID should still be mayor1'); + $this->assertSame('mayor1', $mayorAfterUpdate->getId(), 'Mayor ID should still be mayor1'); // Verify the bidirectional relationship is still intact $mayor = $database->getDocument('mayors_partial', 'mayor1'); - $this->assertEquals('city1', $mayor->getAttribute('city')->getId(), 'Reverse relationship should be preserved'); - $this->assertEquals('Updated City Name', $mayor->getAttribute('city')->getAttribute('name'), 'Reverse relationship should reflect updated city name'); + $this->assertSame('city1', $mayor->getAttribute('city')->getId(), 'Reverse relationship should be preserved'); + $this->assertSame('Updated City Name', $mayor->getAttribute('city')->getAttribute('name'), 'Reverse relationship should reflect updated city name'); $database->deleteCollection('cities_partial'); $database->deleteCollection('mayors_partial'); @@ -2563,8 +2563,8 @@ public function testPartialUpdateOneToOneWithoutRelationshipField(): void // Get the current state to verify $cityBefore = $database->getDocument('cities_strict', 'city1'); - $this->assertEquals('City 1', $cityBefore->getAttribute('name')); - $this->assertEquals('mayor1', $cityBefore->getAttribute('mayor')->getId()); + $this->assertSame('City 1', $cityBefore->getAttribute('name')); + $this->assertSame('mayor1', $cityBefore->getAttribute('mayor')->getId()); // Now do what the comment says we "don't support" - update WITHOUT including mayor field // Creating a fresh Document object with only the fields we want to update @@ -2583,16 +2583,16 @@ public function testPartialUpdateOneToOneWithoutRelationshipField(): void // Now check if the mayor relationship was preserved $cityAfter = $database->getDocument('cities_strict', 'city1'); - $this->assertEquals('City 1 updated', $cityAfter->getAttribute('name')); + $this->assertSame('City 1 updated', $cityAfter->getAttribute('name')); // The relationship should still exist $mayorAttr = $cityAfter->getAttribute('mayor'); $this->assertNotNull($mayorAttr, 'Mayor should still be set after partial update without mayor field'); - $this->assertEquals('mayor1', $mayorAttr->getId()); + $this->assertSame('mayor1', $mayorAttr->getId()); // Also verify the reverse relationship $mayor = $database->getDocument('mayors_strict', 'mayor1'); - $this->assertEquals('city1', $mayor->getAttribute('city')->getId()); + $this->assertSame('city1', $mayor->getAttribute('city')->getId()); $database->deleteCollection('cities_strict'); $database->deleteCollection('mayors_strict'); diff --git a/tests/e2e/Adapter/Scopes/SchemalessTests.php b/tests/e2e/Adapter/Scopes/SchemalessTests.php index 436be6edd..001e21068 100644 --- a/tests/e2e/Adapter/Scopes/SchemalessTests.php +++ b/tests/e2e/Adapter/Scopes/SchemalessTests.php @@ -39,7 +39,7 @@ public function testSchemalessDocumentOperation(): void new Document(['$id' => 'doc2', '$permissions' => $permissions, 'freeB' => 'test']), new Document(['$id' => 'doc3', '$permissions' => $permissions]), ]; - $this->assertEquals(3, $database->createDocuments($colName, $docs)); + $this->assertSame(3, $database->createDocuments($colName, $docs)); // Any extra attributes should be allowed (fully schemaless) $docs = [ @@ -49,24 +49,24 @@ public function testSchemalessDocumentOperation(): void ]; $createdDocs = $database->createDocuments($colName, $docs); - $this->assertEquals(3, $createdDocs); + $this->assertSame(3, $createdDocs); // Create a single document with extra attribute as well $single = $database->createDocument($colName, new Document(['$id' => 'docS', 'extra' => 'yes', '$permissions' => $permissions])); - $this->assertEquals('docS', $single->getId()); - $this->assertEquals('yes', $single->getAttribute('extra')); + $this->assertSame('docS', $single->getId()); + $this->assertSame('yes', $single->getAttribute('extra')); $found = $database->find($colName); $this->assertCount(7, $found); $doc11 = $database->getDocument($colName, 'doc11'); - $this->assertEquals('doc1', $doc11->getAttribute('title')); + $this->assertSame('doc1', $doc11->getAttribute('title')); $doc21 = $database->getDocument($colName, 'doc21'); - $this->assertEquals('doc2', $doc21->getAttribute('moviename')); - $this->assertEquals('test', $doc21->getAttribute('moviedescription')); + $this->assertSame('doc2', $doc21->getAttribute('moviename')); + $this->assertSame('test', $doc21->getAttribute('moviedescription')); $updated = $database->updateDocument($colName, 'doc31', new Document(['moviename' => 'updated'])); - $this->assertEquals('updated', $updated->getAttribute('moviename')); + $this->assertSame('updated', $updated->getAttribute('moviename')); $this->assertTrue($database->deleteDocument($colName, 'doc21')); $deleted = $database->getDocument($colName, 'doc21'); @@ -76,10 +76,10 @@ public function testSchemalessDocumentOperation(): void // Bulk update: set a new extra attribute on all remaining docs $modified = $database->updateDocuments($colName, new Document(['bulkExtra' => 'yes'])); - $this->assertEquals(6, $modified); + $this->assertSame(6, $modified); $all = $database->find($colName); foreach ($all as $doc) { - $this->assertEquals('yes', $doc->getAttribute('bulkExtra')); + $this->assertSame('yes', $doc->getAttribute('bulkExtra')); } // Upsert: create new and update existing with extra attributes preserved @@ -88,25 +88,25 @@ public function testSchemalessDocumentOperation(): void new Document(['$id' => 'doc1', 'extraU' => 2, '$permissions' => $permissions]), ]; $countUpserts = $database->upsertDocuments($colName, $upserts); - $this->assertEquals(2, $countUpserts); + $this->assertSame(2, $countUpserts); $docU1 = $database->getDocument($colName, 'docU1'); - $this->assertEquals(1, $docU1->getAttribute('extraU')); + $this->assertSame(1, $docU1->getAttribute('extraU')); $doc1AfterUpsert = $database->getDocument($colName, 'doc1'); - $this->assertEquals(2, $doc1AfterUpsert->getAttribute('extraU')); + $this->assertSame(2, $doc1AfterUpsert->getAttribute('extraU')); // Increase/Decrease numeric attribute: add numeric attribute and mutate it $docS = $database->getDocument($colName, 'docS'); - $this->assertEquals(0, $docS->getAttribute('counter')); + $this->assertSame(0, $docS->getAttribute('counter')); $docS = $database->increaseDocumentAttribute($colName, 'docS', 'counter', 5); - $this->assertEquals(5, $docS->getAttribute('counter')); + $this->assertSame(5, $docS->getAttribute('counter')); $docS = $database->decreaseDocumentAttribute($colName, 'docS', 'counter', 3); - $this->assertEquals(2, $docS->getAttribute('counter')); + $this->assertSame(2, $docS->getAttribute('counter')); $deletedByCounter = $database->deleteDocuments($colName, [Query::equal('counter', [2])]); - $this->assertEquals(1, $deletedByCounter); + $this->assertSame(1, $deletedByCounter); $deletedCount = $database->deleteDocuments($colName, [Query::startsWith('$id', 'doc')]); - $this->assertEquals(6, $deletedCount); + $this->assertSame(6, $deletedCount); $postDelete = $database->find($colName); $this->assertCount(0, $postDelete); @@ -170,10 +170,10 @@ public function testSchemalessSelectionOnUnknownAttributes(): void new Document(['$id' => 'doc2', '$permissions' => $permissions, 'freeB' => 'test']), new Document(['$id' => 'doc3', '$permissions' => $permissions]), ]; - $this->assertEquals(3, $database->createDocuments($colName, $docs)); + $this->assertSame(3, $database->createDocuments($colName, $docs)); $docA = $database->getDocument($colName, 'doc1', [Query::select(['freeA'])]); - $this->assertEquals('doc1', $docA->getAttribute('freeA')); + $this->assertSame('doc1', $docA->getAttribute('freeA')); $docC = $database->getDocument($colName, 'doc1', [Query::select(['freeC'])]); $this->assertNull($docC->getAttribute('freeC')); @@ -190,7 +190,7 @@ public function testSchemalessSelectionOnUnknownAttributes(): void Query::equal('$id', ['doc1']), Query::select(['freeA']) ]); - $this->assertEquals('doc1', $docA[0]->getAttribute('freeA')); + $this->assertSame('doc1', $docA[0]->getAttribute('freeA')); $docC = $database->find($colName, [ Query::equal('$id', ['doc1']), @@ -224,25 +224,25 @@ public function testSchemalessIncrement(): void new Document(['$id' => 'doc2', '$permissions' => $permissions, 'counter' => 20, 'points' => 100]), new Document(['$id' => 'doc3', '$permissions' => $permissions, 'value' => 0]), ]; - $this->assertEquals(3, $database->createDocuments($colName, $docs)); + $this->assertSame(3, $database->createDocuments($colName, $docs)); $doc1 = $database->increaseDocumentAttribute($colName, 'doc1', 'counter', 5); - $this->assertEquals(15, $doc1->getAttribute('counter')); - $this->assertEquals(5.5, $doc1->getAttribute('score')); + $this->assertSame(15, $doc1->getAttribute('counter')); + $this->assertSame(5.5, $doc1->getAttribute('score')); $doc1 = $database->increaseDocumentAttribute($colName, 'doc1', 'score', 2.3); - $this->assertEquals(7.8, $doc1->getAttribute('score')); + $this->assertSame(7.8, $doc1->getAttribute('score')); $doc2 = $database->increaseDocumentAttribute($colName, 'doc2', 'points', 50); - $this->assertEquals(150, $doc2->getAttribute('points')); + $this->assertSame(150, $doc2->getAttribute('points')); $doc3 = $database->increaseDocumentAttribute($colName, 'doc3', 'newCounter', 1); - $this->assertEquals(1, $doc3->getAttribute('newCounter')); - $this->assertEquals(0, $doc3->getAttribute('value')); + $this->assertSame(1, $doc3->getAttribute('newCounter')); + $this->assertSame(0, $doc3->getAttribute('value')); try { $database->increaseDocumentAttribute($colName, 'doc1', 'counter', 10, 20); - $this->assertEquals(20, $database->getDocument($colName, 'doc1')->getAttribute('counter')); + $this->assertSame(20, $database->getDocument($colName, 'doc1')->getAttribute('counter')); } catch (\Exception $e) { $this->assertInstanceOf(LimitException::class, $e); } @@ -277,18 +277,18 @@ public function testSchemalessDecrement(): void new Document(['$id' => 'doc1', '$permissions' => $permissions, 'counter' => 100, 'balance' => 250.75]), new Document(['$id' => 'doc2', '$permissions' => $permissions, 'score' => 50, 'extraData' => 'preserved']), ]; - $this->assertEquals(2, $database->createDocuments($colName, $docs)); + $this->assertSame(2, $database->createDocuments($colName, $docs)); $doc1 = $database->decreaseDocumentAttribute($colName, 'doc1', 'counter', 25); - $this->assertEquals(75, $doc1->getAttribute('counter')); - $this->assertEquals(250.75, $doc1->getAttribute('balance')); + $this->assertSame(75, $doc1->getAttribute('counter')); + $this->assertSame(250.75, $doc1->getAttribute('balance')); $doc1 = $database->decreaseDocumentAttribute($colName, 'doc1', 'balance', 50.25); - $this->assertEquals(200.5, $doc1->getAttribute('balance')); + $this->assertSame(200.5, $doc1->getAttribute('balance')); $doc2 = $database->decreaseDocumentAttribute($colName, 'doc2', 'score', 15); - $this->assertEquals(35, $doc2->getAttribute('score')); - $this->assertEquals('preserved', $doc2->getAttribute('extraData')); + $this->assertSame(35, $doc2->getAttribute('score')); + $this->assertSame('preserved', $doc2->getAttribute('extraData')); try { $database->decreaseDocumentAttribute($colName, 'doc2', 'score', 40, 0); @@ -298,11 +298,11 @@ public function testSchemalessDecrement(): void } $doc2 = $database->decreaseDocumentAttribute($colName, 'doc2', 'score', 50); - $this->assertEquals(-15, $doc2->getAttribute('score')); + $this->assertSame(-15, $doc2->getAttribute('score')); $retrievedDoc1 = $database->getDocument($colName, 'doc1'); - $this->assertEquals(75, $retrievedDoc1->getAttribute('counter')); - $this->assertEquals(200.5, $retrievedDoc1->getAttribute('balance')); + $this->assertSame(75, $retrievedDoc1->getAttribute('counter')); + $this->assertSame(200.5, $retrievedDoc1->getAttribute('balance')); $database->deleteCollection($colName); } @@ -333,7 +333,7 @@ public function testSchemalessUpdateDocumentWithQuery(): void new Document(['$id' => 'doc3', '$permissions' => $permissions, 'type' => 'user', 'status' => 'inactive', 'score' => 50]), new Document(['$id' => 'doc4', '$permissions' => $permissions, 'type' => 'user', 'status' => 'pending', 'newField' => 'test']), ]; - $this->assertEquals(4, $database->createDocuments($colName, $docs)); + $this->assertSame(4, $database->createDocuments($colName, $docs)); $updatedDoc = $database->updateDocument($colName, 'doc1', new Document([ 'status' => 'updated', @@ -341,15 +341,15 @@ public function testSchemalessUpdateDocumentWithQuery(): void 'newAttribute' => 'added' ])); - $this->assertEquals('updated', $updatedDoc->getAttribute('status')); - $this->assertEquals('2023-01-01', $updatedDoc->getAttribute('lastModified')); - $this->assertEquals('added', $updatedDoc->getAttribute('newAttribute')); - $this->assertEquals('user', $updatedDoc->getAttribute('type')); // Existing attributes preserved - $this->assertEquals(100, $updatedDoc->getAttribute('score')); + $this->assertSame('updated', $updatedDoc->getAttribute('status')); + $this->assertSame('2023-01-01', $updatedDoc->getAttribute('lastModified')); + $this->assertSame('added', $updatedDoc->getAttribute('newAttribute')); + $this->assertSame('user', $updatedDoc->getAttribute('type')); // Existing attributes preserved + $this->assertSame(100, $updatedDoc->getAttribute('score')); $retrievedDoc = $database->getDocument($colName, 'doc1'); - $this->assertEquals('updated', $retrievedDoc->getAttribute('status')); - $this->assertEquals('added', $retrievedDoc->getAttribute('newAttribute')); + $this->assertSame('updated', $retrievedDoc->getAttribute('status')); + $this->assertSame('added', $retrievedDoc->getAttribute('newAttribute')); $updatedDoc2 = $database->updateDocument($colName, 'doc2', new Document([ 'customField1' => 'value1', @@ -357,10 +357,10 @@ public function testSchemalessUpdateDocumentWithQuery(): void 'customField3' => ['array', 'of', 'values'] ])); - $this->assertEquals('value1', $updatedDoc2->getAttribute('customField1')); - $this->assertEquals(42, $updatedDoc2->getAttribute('customField2')); - $this->assertEquals(['array', 'of', 'values'], $updatedDoc2->getAttribute('customField3')); - $this->assertEquals('admin', $updatedDoc2->getAttribute('type')); // Original attributes preserved + $this->assertSame('value1', $updatedDoc2->getAttribute('customField1')); + $this->assertSame(42, $updatedDoc2->getAttribute('customField2')); + $this->assertSame(['array', 'of', 'values'], $updatedDoc2->getAttribute('customField3')); + $this->assertSame('admin', $updatedDoc2->getAttribute('type')); // Original attributes preserved $database->deleteCollection($colName); } @@ -390,7 +390,7 @@ public function testSchemalessDeleteDocumentWithQuery(): void new Document(['$id' => 'doc2', '$permissions' => $permissions, 'category' => 'permanent', 'priority' => 5]), new Document(['$id' => 'doc3', '$permissions' => $permissions, 'category' => 'temp', 'priority' => 3]), ]; - $this->assertEquals(3, $database->createDocuments($colName, $docs)); + $this->assertSame(3, $database->createDocuments($colName, $docs)); $result = $database->deleteDocument($colName, 'doc1'); $this->assertTrue($result); @@ -403,7 +403,7 @@ public function testSchemalessDeleteDocumentWithQuery(): void $tempDocs = $database->find($colName, [Query::equal('category', ['temp'])]); $this->assertCount(1, $tempDocs); - $this->assertEquals('doc3', $tempDocs[0]->getId()); + $this->assertSame('doc3', $tempDocs[0]->getId()); $database->deleteCollection($colName); } @@ -444,7 +444,7 @@ public function testSchemalessUpdateDocumentsWithQuery(): void 'customField' => "value{$i}" ]); } - $this->assertEquals(10, $database->createDocuments($colName, $docs)); + $this->assertSame(10, $database->createDocuments($colName, $docs)); $updatedCount = $database->updateDocuments($colName, new Document([ 'status' => 'processed', @@ -452,16 +452,16 @@ public function testSchemalessUpdateDocumentsWithQuery(): void 'newBulkField' => 'bulk_value' ]), [Query::equal('type', ['typeA'])]); - $this->assertEquals(5, $updatedCount); + $this->assertSame(5, $updatedCount); $processedDocs = $database->find($colName, [Query::equal('status', ['processed'])]); $this->assertCount(5, $processedDocs); foreach ($processedDocs as $doc) { - $this->assertEquals('typeA', $doc->getAttribute('type')); - $this->assertEquals('processed', $doc->getAttribute('status')); - $this->assertEquals('2023-01-01', $doc->getAttribute('processedAt')); - $this->assertEquals('bulk_value', $doc->getAttribute('newBulkField')); + $this->assertSame('typeA', $doc->getAttribute('type')); + $this->assertSame('processed', $doc->getAttribute('status')); + $this->assertSame('2023-01-01', $doc->getAttribute('processedAt')); + $this->assertSame('bulk_value', $doc->getAttribute('newBulkField')); $this->assertNotNull($doc->getAttribute('score')); $this->assertNotNull($doc->getAttribute('customField')); } @@ -470,8 +470,8 @@ public function testSchemalessUpdateDocumentsWithQuery(): void $this->assertCount(5, $pendingDocs); foreach ($pendingDocs as $doc) { - $this->assertEquals('typeB', $doc->getAttribute('type')); - $this->assertEquals('pending', $doc->getAttribute('status')); + $this->assertSame('typeB', $doc->getAttribute('type')); + $this->assertSame('pending', $doc->getAttribute('status')); $this->assertNull($doc->getAttribute('processedAt')); $this->assertNull($doc->getAttribute('newBulkField')); } @@ -480,7 +480,7 @@ public function testSchemalessUpdateDocumentsWithQuery(): void 'tier' => 'premium' ]), [Query::greaterThan('score', 70)]); - $this->assertEquals(3, $highScoreCount); // docs 8, 9, 10 + $this->assertSame(3, $highScoreCount); // docs 8, 9, 10 $premiumDocs = $database->find($colName, [Query::equal('tier', ['premium'])]); $this->assertCount(3, $premiumDocs); @@ -490,14 +490,14 @@ public function testSchemalessUpdateDocumentsWithQuery(): void 'lastUpdate' => '2023-12-31' ])); - $this->assertEquals(10, $allUpdateCount); + $this->assertSame(10, $allUpdateCount); $allDocs = $database->find($colName); $this->assertCount(10, $allDocs); foreach ($allDocs as $doc) { $this->assertTrue($doc->getAttribute('globalFlag')); - $this->assertEquals('2023-12-31', $doc->getAttribute('lastUpdate')); + $this->assertSame('2023-12-31', $doc->getAttribute('lastUpdate')); } $database->deleteCollection($colName); @@ -540,10 +540,10 @@ public function testSchemalessDeleteDocumentsWithQuery(): void 'metadata' => ['created' => "2023-01-{$i}"] ]); } - $this->assertEquals(15, $database->createDocuments($colName, $docs)); + $this->assertSame(15, $database->createDocuments($colName, $docs)); $deletedCount = $database->deleteDocuments($colName, [Query::equal('category', ['temp'])]); - $this->assertEquals(5, $deletedCount); + $this->assertSame(5, $deletedCount); $remainingDocs = $database->find($colName); $this->assertCount(10, $remainingDocs); @@ -552,32 +552,32 @@ public function testSchemalessDeleteDocumentsWithQuery(): void $this->assertCount(0, $tempDocs); $highScoreDeleted = $database->deleteDocuments($colName, [Query::greaterThan('score', 50)]); - $this->assertEquals(5, $highScoreDeleted); // docs 11-15 + $this->assertSame(5, $highScoreDeleted); // docs 11-15 $remainingAfterScore = $database->find($colName); $this->assertCount(5, $remainingAfterScore); // docs 6-10 remain foreach ($remainingAfterScore as $doc) { $this->assertLessThanOrEqual(50, $doc->getAttribute('score')); - $this->assertEquals('archive', $doc->getAttribute('category')); + $this->assertSame('archive', $doc->getAttribute('category')); } $multiConditionDeleted = $database->deleteDocuments($colName, [ Query::equal('category', ['archive']), Query::equal('priority', [1]) ]); - $this->assertEquals(2, $multiConditionDeleted); // docs 7 and 10 + $this->assertSame(2, $multiConditionDeleted); // docs 7 and 10 $finalRemaining = $database->find($colName); $this->assertCount(3, $finalRemaining); // docs 6, 8, 9 foreach ($finalRemaining as $doc) { - $this->assertEquals('archive', $doc->getAttribute('category')); + $this->assertSame('archive', $doc->getAttribute('category')); $this->assertNotEquals(1, $doc->getAttribute('priority')); } $allDeleted = $database->deleteDocuments($colName); - $this->assertEquals(3, $allDeleted); + $this->assertSame(3, $allDeleted); $emptyResult = $database->find($colName); $this->assertCount(0, $emptyResult); @@ -620,7 +620,7 @@ public function testSchemalessOperationsWithCallback(): void 'customData' => "data{$i}" ]); } - $this->assertEquals(8, $database->createDocuments($colName, $docs)); + $this->assertSame(8, $database->createDocuments($colName, $docs)); $updateResults = []; $updateCount = $database->updateDocuments( @@ -632,7 +632,7 @@ public function testSchemalessOperationsWithCallback(): void } ); - $this->assertEquals(4, $updateCount); + $this->assertSame(4, $updateCount); $this->assertCount(4, $updateResults); $this->assertContains('doc1', $updateResults); $this->assertContains('doc2', $updateResults); @@ -655,7 +655,7 @@ public function testSchemalessOperationsWithCallback(): void } ); - $this->assertEquals(3, $deleteCount); // docs 6, 7, 8 + $this->assertSame(3, $deleteCount); // docs 6, 7, 8 $this->assertCount(3, $deleteResults); foreach ($deleteResults as $result) { @@ -713,7 +713,7 @@ public function testSchemalessIndexCreateListDelete(): void $this->assertTrue($database->deleteIndex($col, 'idx_rank_key')); $collection = $database->getCollection($col); $this->assertCount(1, $collection->getAttribute('indexes')); - $this->assertEquals('idx_title_unique', $collection->getAttribute('indexes')[0]['$id']); + $this->assertSame('idx_title_unique', $collection->getAttribute('indexes')[0]['$id']); $this->assertTrue($database->deleteIndex($col, 'idx_title_unique')); $database->deleteCollection($col); @@ -782,7 +782,7 @@ public function testSchemalessPermissions(): void // With any role, can read $database->getAuthorization()->addRole(Role::any()->toString()); $fetched = $database->getDocument($col, 'd1'); - $this->assertEquals('value', $fetched->getAttribute('field')); + $this->assertSame('value', $fetched->getAttribute('field')); // Attempt update without update permission $database->getAuthorization()->cleanRoles(); @@ -805,7 +805,7 @@ public function testSchemalessPermissions(): void }); $updated = $database->updateDocument($col, 'd1', new Document(['field' => 'updated'])); - $this->assertEquals('updated', $updated->getAttribute('field')); + $this->assertSame('updated', $updated->getAttribute('field')); // Creating without any roles should fail $database->getAuthorization()->cleanRoles(); @@ -848,8 +848,8 @@ public function testSchemalessInternalAttributes(): void 'name' => 'alpha', ])); - $this->assertEquals('i1', $doc->getId()); - $this->assertEquals($col, $doc->getCollection()); + $this->assertSame('i1', $doc->getId()); + $this->assertSame($col, $doc->getCollection()); $this->assertNotEmpty($doc->getSequence()); $this->assertNotEmpty($doc->getAttribute('$createdAt')); $this->assertNotEmpty($doc->getAttribute('$updatedAt')); @@ -862,7 +862,7 @@ public function testSchemalessInternalAttributes(): void $selected = $database->getDocument($col, 'i1', [ Query::select(['name', '$id', '$sequence', '$collection', '$createdAt', '$updatedAt', '$permissions']) ]); - $this->assertEquals('alpha', $selected->getAttribute('name')); + $this->assertSame('alpha', $selected->getAttribute('name')); $this->assertArrayHasKey('$id', $selected); $this->assertArrayHasKey('$sequence', $selected); $this->assertArrayHasKey('$collection', $selected); @@ -885,19 +885,19 @@ public function testSchemalessInternalAttributes(): void $seq = $doc->getSequence(); $bySeq = $database->find($col, [Query::equal('$sequence', [$seq])]); $this->assertCount(1, $bySeq); - $this->assertEquals('i1', $bySeq[0]->getId()); + $this->assertSame('i1', $bySeq[0]->getId()); $createdAtBefore = $doc->getAttribute('$createdAt'); $updatedAtBefore = $doc->getAttribute('$updatedAt'); $updated = $database->updateDocument($col, 'i1', new Document(['name' => 'beta'])); - $this->assertEquals('beta', $updated->getAttribute('name')); - $this->assertEquals($createdAtBefore, $updated->getAttribute('$createdAt')); + $this->assertSame('beta', $updated->getAttribute('name')); + $this->assertSame($createdAtBefore, $updated->getAttribute('$createdAt')); $this->assertNotEquals($updatedAtBefore, $updated->getAttribute('$updatedAt')); $changed = $database->updateDocument($col, 'i1', new Document(['$id' => 'i1-new'])); - $this->assertEquals('i1-new', $changed->getId()); + $this->assertSame('i1-new', $changed->getId()); $refetched = $database->getDocument($col, 'i1-new'); - $this->assertEquals('i1-new', $refetched->getId()); + $this->assertSame('i1-new', $refetched->getId()); try { $database->updateDocument($col, 'i1-new', new Document(['$permissions' => 'invalid'])); @@ -916,16 +916,16 @@ public function testSchemalessInternalAttributes(): void '$updatedAt' => $customUpdated, 'v' => 1 ])); - $this->assertEquals($customCreated, $d2->getAttribute('$createdAt')); - $this->assertEquals($customUpdated, $d2->getAttribute('$updatedAt')); + $this->assertSame($customCreated, $d2->getAttribute('$createdAt')); + $this->assertSame($customUpdated, $d2->getAttribute('$updatedAt')); $newUpdated = '2000-01-03T00:00:00.000+00:00'; $d2u = $database->updateDocument($col, 'i2', new Document([ 'v' => 2, '$updatedAt' => $newUpdated ])); - $this->assertEquals($customCreated, $d2u->getAttribute('$createdAt')); - $this->assertEquals($newUpdated, $d2u->getAttribute('$updatedAt')); + $this->assertSame($customCreated, $d2u->getAttribute('$createdAt')); + $this->assertSame($newUpdated, $d2u->getAttribute('$updatedAt')); $database->setPreserveDates(false); $database->deleteCollection($col); @@ -969,21 +969,21 @@ public function testSchemalessDates(): void ])); }); - $this->assertEquals('d1', $doc1->getId()); + $this->assertSame('d1', $doc1->getId()); $this->assertTrue(is_string($doc1->getAttribute('curDate'))); - $this->assertEquals($curDate1, $doc1->getAttribute('curDate')); + $this->assertSame($curDate1, $doc1->getAttribute('curDate')); $this->assertTrue(is_string($doc1->getAttribute('$createdAt'))); $this->assertTrue(is_string($doc1->getAttribute('$updatedAt'))); - $this->assertEquals($createdAt1, $doc1->getAttribute('$createdAt')); - $this->assertEquals($updatedAt1, $doc1->getAttribute('$updatedAt')); + $this->assertSame($createdAt1, $doc1->getAttribute('$createdAt')); + $this->assertSame($updatedAt1, $doc1->getAttribute('$updatedAt')); $fetched1 = $database->getDocument($col, 'd1'); - $this->assertEquals($curDate1, $fetched1->getAttribute('curDate')); + $this->assertSame($curDate1, $fetched1->getAttribute('curDate')); $this->assertTrue(is_string($fetched1->getAttribute('curDate'))); $this->assertTrue(is_string($fetched1->getAttribute('$createdAt'))); $this->assertTrue(is_string($fetched1->getAttribute('$updatedAt'))); - $this->assertEquals($createdAt1, $fetched1->getAttribute('$createdAt')); - $this->assertEquals($updatedAt1, $fetched1->getAttribute('$updatedAt')); + $this->assertSame($createdAt1, $fetched1->getAttribute('$createdAt')); + $this->assertSame($updatedAt1, $fetched1->getAttribute('$updatedAt')); // createDocuments with preserved dates $createdAt2 = '2001-02-03T04:05:06.000+00:00'; @@ -1012,17 +1012,17 @@ public function testSchemalessDates(): void ]), ]); }); - $this->assertEquals(2, $countCreated); + $this->assertSame(2, $countCreated); $fetched2 = $database->getDocument($col, 'd2'); - $this->assertEquals($curDate2, $fetched2->getAttribute('curDate')); - $this->assertEquals($createdAt2, $fetched2->getAttribute('$createdAt')); - $this->assertEquals($updatedAt2, $fetched2->getAttribute('$updatedAt')); + $this->assertSame($curDate2, $fetched2->getAttribute('curDate')); + $this->assertSame($createdAt2, $fetched2->getAttribute('$createdAt')); + $this->assertSame($updatedAt2, $fetched2->getAttribute('$updatedAt')); $fetched3 = $database->getDocument($col, 'd3'); - $this->assertEquals($curDate3, $fetched3->getAttribute('curDate')); - $this->assertEquals($createdAt3, $fetched3->getAttribute('$createdAt')); - $this->assertEquals($updatedAt3, $fetched3->getAttribute('$updatedAt')); + $this->assertSame($curDate3, $fetched3->getAttribute('curDate')); + $this->assertSame($createdAt3, $fetched3->getAttribute('$createdAt')); + $this->assertSame($updatedAt3, $fetched3->getAttribute('$updatedAt')); // updateDocument with preserved $updatedAt and custom date field $newCurDate1 = '2000-02-01T00:00:00.000+00:00'; @@ -1033,11 +1033,11 @@ public function testSchemalessDates(): void '$updatedAt' => $newUpdatedAt1, ])); }); - $this->assertEquals($newCurDate1, $updated1->getAttribute('curDate')); - $this->assertEquals($newUpdatedAt1, $updated1->getAttribute('$updatedAt')); + $this->assertSame($newCurDate1, $updated1->getAttribute('curDate')); + $this->assertSame($newUpdatedAt1, $updated1->getAttribute('$updatedAt')); $refetched1 = $database->getDocument($col, 'd1'); - $this->assertEquals($newCurDate1, $refetched1->getAttribute('curDate')); - $this->assertEquals($newUpdatedAt1, $refetched1->getAttribute('$updatedAt')); + $this->assertSame($newCurDate1, $refetched1->getAttribute('curDate')); + $this->assertSame($newUpdatedAt1, $refetched1->getAttribute('$updatedAt')); // updateDocuments with preserved $updatedAt over a subset $bulkCurDate = '2001-01-01T00:00:00.000+00:00'; @@ -1052,13 +1052,13 @@ public function testSchemalessDates(): void [Query::equal('$id', ['d2', 'd3'])] ); }); - $this->assertEquals(2, $updatedCount); + $this->assertSame(2, $updatedCount); $afterBulk2 = $database->getDocument($col, 'd2'); $afterBulk3 = $database->getDocument($col, 'd3'); - $this->assertEquals($bulkCurDate, $afterBulk2->getAttribute('curDate')); - $this->assertEquals($bulkUpdatedAt, $afterBulk2->getAttribute('$updatedAt')); - $this->assertEquals($bulkCurDate, $afterBulk3->getAttribute('curDate')); - $this->assertEquals($bulkUpdatedAt, $afterBulk3->getAttribute('$updatedAt')); + $this->assertSame($bulkCurDate, $afterBulk2->getAttribute('curDate')); + $this->assertSame($bulkUpdatedAt, $afterBulk2->getAttribute('$updatedAt')); + $this->assertSame($bulkCurDate, $afterBulk3->getAttribute('curDate')); + $this->assertSame($bulkUpdatedAt, $afterBulk3->getAttribute('$updatedAt')); // upsertDocument: create new then update existing with preserved dates $createdAt4 = '2003-03-03T03:03:03.000+00:00'; @@ -1073,10 +1073,10 @@ public function testSchemalessDates(): void 'curDate' => $curDate4, ])); }); - $this->assertEquals('d4', $up1->getId()); - $this->assertEquals($curDate4, $up1->getAttribute('curDate')); - $this->assertEquals($createdAt4, $up1->getAttribute('$createdAt')); - $this->assertEquals($updatedAt4, $up1->getAttribute('$updatedAt')); + $this->assertSame('d4', $up1->getId()); + $this->assertSame($curDate4, $up1->getAttribute('curDate')); + $this->assertSame($createdAt4, $up1->getAttribute('$createdAt')); + $this->assertSame($updatedAt4, $up1->getAttribute('$updatedAt')); $updatedAt4b = '2003-03-06T06:06:06.000+00:00'; $curDate4b = '2003-03-07T07:07:07.000+00:00'; @@ -1087,11 +1087,11 @@ public function testSchemalessDates(): void '$updatedAt' => $updatedAt4b, ])); }); - $this->assertEquals($curDate4b, $up2->getAttribute('curDate')); - $this->assertEquals($updatedAt4b, $up2->getAttribute('$updatedAt')); + $this->assertSame($curDate4b, $up2->getAttribute('curDate')); + $this->assertSame($updatedAt4b, $up2->getAttribute('$updatedAt')); $refetched4 = $database->getDocument($col, 'd4'); - $this->assertEquals($curDate4b, $refetched4->getAttribute('curDate')); - $this->assertEquals($updatedAt4b, $refetched4->getAttribute('$updatedAt')); + $this->assertSame($curDate4b, $refetched4->getAttribute('curDate')); + $this->assertSame($updatedAt4b, $refetched4->getAttribute('$updatedAt')); // upsertDocuments: mix create and update with preserved dates $createdAt5 = '2004-04-01T01:01:01.000+00:00'; @@ -1116,38 +1116,38 @@ public function testSchemalessDates(): void ]), ]); }); - $this->assertEquals(2, $upCount); + $this->assertSame(2, $upCount); $fetched5 = $database->getDocument($col, 'd5'); - $this->assertEquals($curDate5, $fetched5->getAttribute('curDate')); - $this->assertEquals($createdAt5, $fetched5->getAttribute('$createdAt')); - $this->assertEquals($updatedAt5, $fetched5->getAttribute('$updatedAt')); + $this->assertSame($curDate5, $fetched5->getAttribute('curDate')); + $this->assertSame($createdAt5, $fetched5->getAttribute('$createdAt')); + $this->assertSame($updatedAt5, $fetched5->getAttribute('$updatedAt')); $fetched2b = $database->getDocument($col, 'd2'); - $this->assertEquals($curDate2b, $fetched2b->getAttribute('curDate')); - $this->assertEquals($updatedAt2b, $fetched2b->getAttribute('$updatedAt')); + $this->assertSame($curDate2b, $fetched2b->getAttribute('curDate')); + $this->assertSame($updatedAt2b, $fetched2b->getAttribute('$updatedAt')); // increase/decrease should not affect date types; ensure they remain strings $afterInc = $database->increaseDocumentAttribute($col, 'd1', 'counter', 5); - $this->assertEquals(5, $afterInc->getAttribute('counter')); + $this->assertSame(5, $afterInc->getAttribute('counter')); $this->assertTrue(is_string($afterInc->getAttribute('curDate'))); $this->assertTrue(is_string($afterInc->getAttribute('$createdAt'))); $this->assertTrue(is_string($afterInc->getAttribute('$updatedAt'))); $afterIncFetched = $database->getDocument($col, 'd1'); - $this->assertEquals(5, $afterIncFetched->getAttribute('counter')); + $this->assertSame(5, $afterIncFetched->getAttribute('counter')); $this->assertTrue(is_string($afterIncFetched->getAttribute('curDate'))); $this->assertTrue(is_string($afterIncFetched->getAttribute('$createdAt'))); $this->assertTrue(is_string($afterIncFetched->getAttribute('$updatedAt'))); $afterDec = $database->decreaseDocumentAttribute($col, 'd1', 'counter', 2); - $this->assertEquals(3, $afterDec->getAttribute('counter')); + $this->assertSame(3, $afterDec->getAttribute('counter')); $this->assertTrue(is_string($afterDec->getAttribute('curDate'))); $this->assertTrue(is_string($afterDec->getAttribute('$createdAt'))); $this->assertTrue(is_string($afterDec->getAttribute('$updatedAt'))); $afterDecFetched = $database->getDocument($col, 'd1'); - $this->assertEquals(3, $afterDecFetched->getAttribute('counter')); + $this->assertSame(3, $afterDecFetched->getAttribute('counter')); $this->assertTrue(is_string($afterDecFetched->getAttribute('curDate'))); $this->assertTrue(is_string($afterDecFetched->getAttribute('$createdAt'))); $this->assertTrue(is_string($afterDecFetched->getAttribute('$updatedAt'))); diff --git a/tests/e2e/Adapter/Scopes/SpatialTests.php b/tests/e2e/Adapter/Scopes/SpatialTests.php index 5ee56e68d..92d9ca468 100644 --- a/tests/e2e/Adapter/Scopes/SpatialTests.php +++ b/tests/e2e/Adapter/Scopes/SpatialTests.php @@ -106,14 +106,14 @@ public function testSpatialTypeDocuments(): void $database->createCollection($collectionName); // Create spatial attributes using createAttribute method - $this->assertEquals(true, $database->createAttribute($collectionName, 'pointAttr', Database::VAR_POINT, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'lineAttr', Database::VAR_LINESTRING, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'polyAttr', Database::VAR_POLYGON, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'pointAttr', Database::VAR_POINT, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'lineAttr', Database::VAR_LINESTRING, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'polyAttr', Database::VAR_POLYGON, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); // Create spatial indexes - $this->assertEquals(true, $database->createIndex($collectionName, 'point_spatial', Database::INDEX_SPATIAL, ['pointAttr'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'line_spatial', Database::INDEX_SPATIAL, ['lineAttr'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'poly_spatial', Database::INDEX_SPATIAL, ['polyAttr'])); + $this->assertSame(true, $database->createIndex($collectionName, 'point_spatial', Database::INDEX_SPATIAL, ['pointAttr'])); + $this->assertSame(true, $database->createIndex($collectionName, 'line_spatial', Database::INDEX_SPATIAL, ['lineAttr'])); + $this->assertSame(true, $database->createIndex($collectionName, 'poly_spatial', Database::INDEX_SPATIAL, ['polyAttr'])); $point = [5.0, 5.0]; $linestring = [[1.0, 2.0], [3.0, 4.0]]; @@ -129,21 +129,21 @@ public function testSpatialTypeDocuments(): void ]); $createdDoc = $database->createDocument($collectionName, $doc1); $this->assertInstanceOf(Document::class, $createdDoc); - $this->assertEquals($point, $createdDoc->getAttribute('pointAttr')); - $this->assertEquals($linestring, $createdDoc->getAttribute('lineAttr')); - $this->assertEquals($polygon, $createdDoc->getAttribute('polyAttr')); + $this->assertSame($point, $createdDoc->getAttribute('pointAttr')); + $this->assertSame($linestring, $createdDoc->getAttribute('lineAttr')); + $this->assertSame($polygon, $createdDoc->getAttribute('polyAttr')); $createdDoc = $database->getDocument($collectionName, 'doc1'); $this->assertInstanceOf(Document::class, $createdDoc); - $this->assertEquals($point, $createdDoc->getAttribute('pointAttr')); - $this->assertEquals($linestring, $createdDoc->getAttribute('lineAttr')); - $this->assertEquals($polygon, $createdDoc->getAttribute('polyAttr')); + $this->assertSame($point, $createdDoc->getAttribute('pointAttr')); + $this->assertSame($linestring, $createdDoc->getAttribute('lineAttr')); + $this->assertSame($polygon, $createdDoc->getAttribute('polyAttr')); // Update spatial data $doc1->setAttribute('pointAttr', [6.0, 6.0]); $updatedDoc = $database->updateDocument($collectionName, 'doc1', $doc1); - $this->assertEquals([6.0, 6.0], $updatedDoc->getAttribute('pointAttr')); + $this->assertSame([6.0, 6.0], $updatedDoc->getAttribute('pointAttr')); // Test spatial queries with appropriate operations for each geometry type @@ -160,7 +160,7 @@ public function testSpatialTypeDocuments(): void foreach ($pointQueries as $queryType => $query) { $result = $database->find($collectionName, [$query], Database::PERMISSION_READ); $this->assertNotEmpty($result, sprintf('Failed spatial query: %s on pointAttr', $queryType)); - $this->assertEquals('doc1', $result[0]->getId(), sprintf('Incorrect document returned for %s on pointAttr', $queryType)); + $this->assertSame('doc1', $result[0]->getId(), sprintf('Incorrect document returned for %s on pointAttr', $queryType)); } // LineString attribute tests - use operations valid for linestrings @@ -179,7 +179,7 @@ public function testSpatialTypeDocuments(): void } $result = $database->find($collectionName, [$query], Database::PERMISSION_READ); $this->assertNotEmpty($result, sprintf('Failed spatial query: %s on polyAttr', $queryType)); - $this->assertEquals('doc1', $result[0]->getId(), sprintf('Incorrect document returned for %s on polyAttr', $queryType)); + $this->assertSame('doc1', $result[0]->getId(), sprintf('Incorrect document returned for %s on polyAttr', $queryType)); } // Distance queries for linestring attribute @@ -193,7 +193,7 @@ public function testSpatialTypeDocuments(): void foreach ($lineDistanceQueries as $queryType => $query) { $result = $database->find($collectionName, [$query], Database::PERMISSION_READ); $this->assertNotEmpty($result, sprintf('Failed distance query: %s on lineAttr', $queryType)); - $this->assertEquals('doc1', $result[0]->getId(), sprintf('Incorrect document for distance %s on lineAttr', $queryType)); + $this->assertSame('doc1', $result[0]->getId(), sprintf('Incorrect document for distance %s on lineAttr', $queryType)); } // Polygon attribute tests - use operations valid for polygons @@ -222,7 +222,7 @@ public function testSpatialTypeDocuments(): void } $result = $database->find($collectionName, [$query], Database::PERMISSION_READ); $this->assertNotEmpty($result, sprintf('Failed spatial query: %s on polyAttr', $queryType)); - $this->assertEquals('doc1', $result[0]->getId(), sprintf('Incorrect document returned for %s on polyAttr', $queryType)); + $this->assertSame('doc1', $result[0]->getId(), sprintf('Incorrect document returned for %s on polyAttr', $queryType)); } // Distance queries for polygon attribute @@ -236,7 +236,7 @@ public function testSpatialTypeDocuments(): void foreach ($polyDistanceQueries as $queryType => $query) { $result = $database->find($collectionName, [$query], Database::PERMISSION_READ); $this->assertNotEmpty($result, sprintf('Failed distance query: %s on polyAttr', $queryType)); - $this->assertEquals('doc1', $result[0]->getId(), sprintf('Incorrect document for distance %s on polyAttr', $queryType)); + $this->assertSame('doc1', $result[0]->getId(), sprintf('Incorrect document for distance %s on polyAttr', $queryType)); } } finally { $database->deleteCollection($collectionName); @@ -298,15 +298,15 @@ public function testSpatialRelationshipOneToOne(): void ])); $this->assertInstanceOf(Document::class, $location1); - $this->assertEquals([40.7128, -74.0060], $location1->getAttribute('coordinates')); + $this->assertSame([40.7128, -74.0060], $location1->getAttribute('coordinates')); // Check if building attribute is populated (could be ID string or Document object) $buildingAttr = $location1->getAttribute('building'); if (is_string($buildingAttr)) { - $this->assertEquals('building1', $buildingAttr); + $this->assertSame('building1', $buildingAttr); } else { $this->assertInstanceOf(Document::class, $buildingAttr); - $this->assertEquals('building1', $buildingAttr->getId()); + $this->assertSame('building1', $buildingAttr->getId()); } // Test spatial queries on related documents @@ -315,13 +315,13 @@ public function testSpatialRelationshipOneToOne(): void ], Database::PERMISSION_READ); $this->assertNotEmpty($nearbyLocations); - $this->assertEquals('location1', $nearbyLocations[0]->getId()); + $this->assertSame('location1', $nearbyLocations[0]->getId()); // Test relationship with spatial data update $location1->setAttribute('coordinates', [40.7589, -73.9851]); // Times Square coordinates $updatedLocation = $database->updateDocument('location', 'location1', $location1); - $this->assertEquals([40.7589, -73.9851], $updatedLocation->getAttribute('coordinates')); + $this->assertSame([40.7589, -73.9851], $updatedLocation->getAttribute('coordinates')); // Test spatial query after update $timesSquareLocations = $database->find('location', [ @@ -329,19 +329,19 @@ public function testSpatialRelationshipOneToOne(): void ], Database::PERMISSION_READ); $this->assertNotEmpty($timesSquareLocations); - $this->assertEquals('location1', $timesSquareLocations[0]->getId()); + $this->assertSame('location1', $timesSquareLocations[0]->getId()); // Test relationship integrity with spatial data $building = $database->getDocument('building', 'building1'); $this->assertInstanceOf(Document::class, $building); - $this->assertEquals('building1', $building->getId()); + $this->assertSame('building1', $building->getId()); // Test one-way relationship (building doesn't have location attribute) $this->assertArrayNotHasKey('location', $building->getArrayCopy()); // Test basic relationship integrity $this->assertInstanceOf(Document::class, $building); - $this->assertEquals('Empire State Building', $building->getAttribute('name')); + $this->assertSame('Empire State Building', $building->getAttribute('name')); // Clean up $database->deleteCollection('location'); @@ -362,19 +362,19 @@ public function testSpatialAttributes(): void $database->createCollection($collectionName); $required = $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true; - $this->assertEquals(true, $database->createAttribute($collectionName, 'pointAttr', Database::VAR_POINT, 0, $required)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'lineAttr', Database::VAR_LINESTRING, 0, $required)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'polyAttr', Database::VAR_POLYGON, 0, $required)); + $this->assertSame(true, $database->createAttribute($collectionName, 'pointAttr', Database::VAR_POINT, 0, $required)); + $this->assertSame(true, $database->createAttribute($collectionName, 'lineAttr', Database::VAR_LINESTRING, 0, $required)); + $this->assertSame(true, $database->createAttribute($collectionName, 'polyAttr', Database::VAR_POLYGON, 0, $required)); // Create spatial indexes - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_point', Database::INDEX_SPATIAL, ['pointAttr'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_point', Database::INDEX_SPATIAL, ['pointAttr'])); if ($database->getAdapter()->getSupportForSpatialIndexNull()) { - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_line', Database::INDEX_SPATIAL, ['lineAttr'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_line', Database::INDEX_SPATIAL, ['lineAttr'])); } else { // Attribute was created as required above; directly create index once - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_line', Database::INDEX_SPATIAL, ['lineAttr'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_line', Database::INDEX_SPATIAL, ['lineAttr'])); } - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_poly', Database::INDEX_SPATIAL, ['polyAttr'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_poly', Database::INDEX_SPATIAL, ['polyAttr'])); $collection = $database->getCollection($collectionName); $this->assertIsArray($collection->getAttribute('attributes')); @@ -491,17 +491,17 @@ public function testSpatialOneToMany(): void Query::distanceEqual('coord', [10.0, 10.0], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($equalZero); - $this->assertEquals('p1', $equalZero[0]->getId()); + $this->assertSame('p1', $equalZero[0]->getId()); $notEqualZero = $database->find($child, [ Query::distanceNotEqual('coord', [10.0, 10.0], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($notEqualZero); - $this->assertEquals('p2', $notEqualZero[0]->getId()); + $this->assertSame('p2', $notEqualZero[0]->getId()); $region = $database->getDocument($parent, 'r1'); $this->assertArrayHasKey('places', $region); - $this->assertEquals(2, \count($region['places'])); + $this->assertSame(2, \count($region['places'])); } finally { $database->deleteCollection($child); $database->deleteCollection($parent); @@ -596,17 +596,17 @@ public function testSpatialManyToOne(): void Query::distanceEqual('coord', [20.0, 20.0], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($equalZero); - $this->assertEquals('s1', $equalZero[0]->getId()); + $this->assertSame('s1', $equalZero[0]->getId()); $notEqualZero = $database->find($child, [ Query::distanceNotEqual('coord', [20.0, 20.0], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($notEqualZero); - $this->assertEquals('s2', $notEqualZero[0]->getId()); + $this->assertSame('s2', $notEqualZero[0]->getId()); $city = $database->getDocument($parent, 'c1'); $this->assertArrayHasKey('stops', $city); - $this->assertEquals(2, \count($city['stops'])); + $this->assertSame(2, \count($city['stops'])); } finally { $database->deleteCollection($child); $database->deleteCollection($parent); @@ -701,7 +701,7 @@ public function testSpatialManyToMany(): void Query::distanceEqual('home', [30.0, 30.0], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($equalZero); - $this->assertEquals('d1', $equalZero[0]->getId()); + $this->assertSame('d1', $equalZero[0]->getId()); $notEqualZero = $database->find($a, [ Query::distanceNotEqual('home', [30.0, 30.0], 0.0) @@ -711,7 +711,7 @@ public function testSpatialManyToMany(): void // Ensure relationship present $d1 = $database->getDocument($a, 'd1'); $this->assertArrayHasKey('routes', $d1); - $this->assertEquals(1, \count($d1['routes'])); + $this->assertSame(1, \count($d1['routes'])); } finally { $database->deleteCollection($b); $database->deleteCollection($a); @@ -732,15 +732,15 @@ public function testSpatialIndex(): void try { $database->createCollection($collectionName); $database->createAttribute($collectionName, 'loc', Database::VAR_POINT, 0, true); - $this->assertEquals(true, $database->createIndex($collectionName, 'loc_spatial', Database::INDEX_SPATIAL, ['loc'])); + $this->assertSame(true, $database->createIndex($collectionName, 'loc_spatial', Database::INDEX_SPATIAL, ['loc'])); $collection = $database->getCollection($collectionName); $this->assertIsArray($collection->getAttribute('indexes')); $this->assertCount(1, $collection->getAttribute('indexes')); - $this->assertEquals('loc_spatial', $collection->getAttribute('indexes')[0]['$id']); - $this->assertEquals(Database::INDEX_SPATIAL, $collection->getAttribute('indexes')[0]['type']); + $this->assertSame('loc_spatial', $collection->getAttribute('indexes')[0]['$id']); + $this->assertSame(Database::INDEX_SPATIAL, $collection->getAttribute('indexes')[0]['type']); - $this->assertEquals(true, $database->deleteIndex($collectionName, 'loc_spatial')); + $this->assertSame(true, $database->deleteIndex($collectionName, 'loc_spatial')); $collection = $database->getCollection($collectionName); $this->assertCount(0, $collection->getAttribute('indexes')); } finally { @@ -773,7 +773,7 @@ public function testSpatialIndex(): void if ($orderSupported) { $database->createCollection($collOrderCreate, $attributes, $indexes); $meta = $database->getCollection($collOrderCreate); - $this->assertEquals('idx_loc', $meta->getAttribute('indexes')[0]['$id']); + $this->assertSame('idx_loc', $meta->getAttribute('indexes')[0]['$id']); } else { try { $database->createCollection($collOrderCreate, $attributes, $indexes); @@ -833,7 +833,7 @@ public function testSpatialIndex(): void if ($nullSupported) { $database->createCollection($collNullCreate, $attributes, $indexes); $meta = $database->getCollection($collNullCreate); - $this->assertEquals('idx_loc', $meta->getAttribute('indexes')[0]['$id']); + $this->assertSame('idx_loc', $meta->getAttribute('indexes')[0]['$id']); } else { try { $database->createCollection($collNullCreate, $attributes, $indexes); @@ -929,20 +929,20 @@ public function testComplexGeometricShapes(): void $database->createCollection($collectionName); // Create spatial attributes for different geometric shapes - $this->assertEquals(true, $database->createAttribute($collectionName, 'rectangle', Database::VAR_POLYGON, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'square', Database::VAR_POLYGON, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'triangle', Database::VAR_POLYGON, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'circle_center', Database::VAR_POINT, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'complex_polygon', Database::VAR_POLYGON, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'multi_linestring', Database::VAR_LINESTRING, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'rectangle', Database::VAR_POLYGON, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'square', Database::VAR_POLYGON, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'triangle', Database::VAR_POLYGON, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'circle_center', Database::VAR_POINT, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'complex_polygon', Database::VAR_POLYGON, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'multi_linestring', Database::VAR_LINESTRING, 0, true)); // Create spatial indexes - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_rectangle', Database::INDEX_SPATIAL, ['rectangle'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_square', Database::INDEX_SPATIAL, ['square'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_triangle', Database::INDEX_SPATIAL, ['triangle'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_circle_center', Database::INDEX_SPATIAL, ['circle_center'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_complex_polygon', Database::INDEX_SPATIAL, ['complex_polygon'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_multi_linestring', Database::INDEX_SPATIAL, ['multi_linestring'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_rectangle', Database::INDEX_SPATIAL, ['rectangle'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_square', Database::INDEX_SPATIAL, ['square'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_triangle', Database::INDEX_SPATIAL, ['triangle'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_circle_center', Database::INDEX_SPATIAL, ['circle_center'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_complex_polygon', Database::INDEX_SPATIAL, ['complex_polygon'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_multi_linestring', Database::INDEX_SPATIAL, ['multi_linestring'])); // Create documents with different geometric shapes $doc1 = new Document([ @@ -979,7 +979,7 @@ public function testComplexGeometricShapes(): void Query::contains('rectangle', [[5, 5]]) // Point inside first rectangle ], Database::PERMISSION_READ); $this->assertNotEmpty($insideRect1); - $this->assertEquals('rect1', $insideRect1[0]->getId()); + $this->assertSame('rect1', $insideRect1[0]->getId()); } // Test rectangle doesn't contain point outside @@ -1022,7 +1022,7 @@ public function testComplexGeometricShapes(): void Query::contains('square', [[10, 10]]) // Point inside first square ], Database::PERMISSION_READ); $this->assertNotEmpty($insideSquare1); - $this->assertEquals('rect1', $insideSquare1[0]->getId()); + $this->assertSame('rect1', $insideSquare1[0]->getId()); } // Test rectangle contains square (shape contains shape) @@ -1031,7 +1031,7 @@ public function testComplexGeometricShapes(): void Query::contains('rectangle', [[[5, 2], [5, 8], [15, 8], [15, 2], [5, 2]]]) // Square geometry that fits within rectangle ], Database::PERMISSION_READ); $this->assertNotEmpty($rectContainsSquare); - $this->assertEquals('rect1', $rectContainsSquare[0]->getId()); + $this->assertSame('rect1', $rectContainsSquare[0]->getId()); } // Test rectangle contains triangle (shape contains shape) @@ -1040,7 +1040,7 @@ public function testComplexGeometricShapes(): void Query::contains('rectangle', [[[10, 2], [18, 2], [14, 8], [10, 2]]]) // Triangle geometry that fits within rectangle ], Database::PERMISSION_READ); $this->assertNotEmpty($rectContainsTriangle); - $this->assertEquals('rect1', $rectContainsTriangle[0]->getId()); + $this->assertSame('rect1', $rectContainsTriangle[0]->getId()); } // Test L-shaped polygon contains smaller rectangle (shape contains shape) @@ -1049,7 +1049,7 @@ public function testComplexGeometricShapes(): void Query::contains('complex_polygon', [[[5, 5], [5, 10], [10, 10], [10, 5], [5, 5]]]) // Small rectangle inside L-shape ], Database::PERMISSION_READ); $this->assertNotEmpty($lShapeContainsRect); - $this->assertEquals('rect1', $lShapeContainsRect[0]->getId()); + $this->assertSame('rect1', $lShapeContainsRect[0]->getId()); } // Test T-shaped polygon contains smaller square (shape contains shape) @@ -1058,7 +1058,7 @@ public function testComplexGeometricShapes(): void Query::contains('complex_polygon', [[[35, 5], [35, 10], [40, 10], [40, 5], [35, 5]]]) // Small square inside T-shape ], Database::PERMISSION_READ); $this->assertNotEmpty($tShapeContainsSquare); - $this->assertEquals('rect2', $tShapeContainsSquare[0]->getId()); + $this->assertSame('rect2', $tShapeContainsSquare[0]->getId()); } // Test failure case: square should NOT contain rectangle (smaller shape cannot contain larger shape) @@ -1120,7 +1120,7 @@ public function testComplexGeometricShapes(): void ], Database::PERMISSION_READ); } $this->assertNotEmpty($exactSquare); - $this->assertEquals('rect1', $exactSquare[0]->getId()); + $this->assertSame('rect1', $exactSquare[0]->getId()); // Test square doesn't equal different square $differentSquare = $database->find($collectionName, [ @@ -1134,7 +1134,7 @@ public function testComplexGeometricShapes(): void Query::contains('triangle', [[25, 10]]) // Point inside first triangle ], Database::PERMISSION_READ); $this->assertNotEmpty($insideTriangle1); - $this->assertEquals('rect1', $insideTriangle1[0]->getId()); + $this->assertSame('rect1', $insideTriangle1[0]->getId()); } // Test triangle doesn't contain point outside @@ -1179,7 +1179,7 @@ public function testComplexGeometricShapes(): void Query::contains('complex_polygon', [[10, 10]]) // Point inside L-shape ], Database::PERMISSION_READ); $this->assertNotEmpty($insideLShape); - $this->assertEquals('rect1', $insideLShape[0]->getId()); + $this->assertSame('rect1', $insideLShape[0]->getId()); } // Test L-shaped polygon doesn't contain point in "hole" @@ -1212,7 +1212,7 @@ public function testComplexGeometricShapes(): void Query::contains('complex_polygon', [[40, 5]]) // Point inside T-shape ], Database::PERMISSION_READ); $this->assertNotEmpty($insideTShape); - $this->assertEquals('rect2', $insideTShape[0]->getId()); + $this->assertSame('rect2', $insideTShape[0]->getId()); } // Test failure case: T-shaped polygon should NOT contain distant point @@ -1270,28 +1270,28 @@ public function testComplexGeometricShapes(): void Query::distanceLessThan('circle_center', [10, 5], 5.0) // Points within 5 units of first center ], Database::PERMISSION_READ); $this->assertNotEmpty($nearCenter); - $this->assertEquals('rect1', $nearCenter[0]->getId()); + $this->assertSame('rect1', $nearCenter[0]->getId()); // Test distanceEqual queries to find nearby shapes $nearbyShapes = $database->find($collectionName, [ Query::distanceLessThan('circle_center', [40, 4], 15.0) // Points within 15 units of second center ], Database::PERMISSION_READ); $this->assertNotEmpty($nearbyShapes); - $this->assertEquals('rect2', $nearbyShapes[0]->getId()); + $this->assertSame('rect2', $nearbyShapes[0]->getId()); // Test distanceGreaterThan queries $farShapes = $database->find($collectionName, [ Query::distanceGreaterThan('circle_center', [10, 5], 10.0) // Points more than 10 units from first center ], Database::PERMISSION_READ); $this->assertNotEmpty($farShapes); - $this->assertEquals('rect2', $farShapes[0]->getId()); + $this->assertSame('rect2', $farShapes[0]->getId()); // Test distanceLessThan queries $closeShapes = $database->find($collectionName, [ Query::distanceLessThan('circle_center', [10, 5], 3.0) // Points less than 3 units from first center ], Database::PERMISSION_READ); $this->assertNotEmpty($closeShapes); - $this->assertEquals('rect1', $closeShapes[0]->getId()); + $this->assertSame('rect1', $closeShapes[0]->getId()); // Test distanceGreaterThan queries with various thresholds // Test: points more than 20 units from first center (should find rect2) @@ -1299,14 +1299,14 @@ public function testComplexGeometricShapes(): void Query::distanceGreaterThan('circle_center', [10, 5], 20.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($veryFarShapes); - $this->assertEquals('rect2', $veryFarShapes[0]->getId()); + $this->assertSame('rect2', $veryFarShapes[0]->getId()); // Test: points more than 5 units from second center (should find rect1) $farFromSecondCenter = $database->find($collectionName, [ Query::distanceGreaterThan('circle_center', [40, 4], 5.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($farFromSecondCenter); - $this->assertEquals('rect1', $farFromSecondCenter[0]->getId()); + $this->assertSame('rect1', $farFromSecondCenter[0]->getId()); // Test: points more than 30 units from origin (should find only rect2) $farFromOrigin = $database->find($collectionName, [ @@ -1320,26 +1320,26 @@ public function testComplexGeometricShapes(): void Query::distanceEqual('circle_center', [10, 5], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($equalZero); - $this->assertEquals('rect1', $equalZero[0]->getId()); + $this->assertSame('rect1', $equalZero[0]->getId()); $notEqualZero = $database->find($collectionName, [ Query::distanceNotEqual('circle_center', [10, 5], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($notEqualZero); - $this->assertEquals('rect2', $notEqualZero[0]->getId()); + $this->assertSame('rect2', $notEqualZero[0]->getId()); // Additional distance queries for complex shapes (polygon and linestring) $rectDistanceEqual = $database->find($collectionName, [ Query::distanceEqual('rectangle', [[[0, 0], [0, 10], [20, 10], [20, 0], [0, 0]]], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($rectDistanceEqual); - $this->assertEquals('rect1', $rectDistanceEqual[0]->getId()); + $this->assertSame('rect1', $rectDistanceEqual[0]->getId()); $lineDistanceEqual = $database->find($collectionName, [ Query::distanceEqual('multi_linestring', [[0, 0], [10, 10], [20, 0], [0, 20], [20, 20]], 0.0) ], Database::PERMISSION_READ); $this->assertNotEmpty($lineDistanceEqual); - $this->assertEquals('rect1', $lineDistanceEqual[0]->getId()); + $this->assertSame('rect1', $lineDistanceEqual[0]->getId()); } finally { $database->deleteCollection($collectionName); @@ -1360,15 +1360,15 @@ public function testSpatialQueryCombinations(): void $database->createCollection($collectionName); // Create spatial attributes - $this->assertEquals(true, $database->createAttribute($collectionName, 'location', Database::VAR_POINT, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'area', Database::VAR_POLYGON, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'route', Database::VAR_LINESTRING, 0, true)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'name', Database::VAR_STRING, 255, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'location', Database::VAR_POINT, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'area', Database::VAR_POLYGON, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'route', Database::VAR_LINESTRING, 0, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'name', Database::VAR_STRING, 255, true)); // Create spatial indexes - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_location', Database::INDEX_SPATIAL, ['location'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_area', Database::INDEX_SPATIAL, ['area'])); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_route', Database::INDEX_SPATIAL, ['route'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_location', Database::INDEX_SPATIAL, ['location'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_area', Database::INDEX_SPATIAL, ['area'])); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_route', Database::INDEX_SPATIAL, ['route'])); // Create test documents $doc1 = new Document([ @@ -1412,7 +1412,7 @@ public function testSpatialQueryCombinations(): void ]) ], Database::PERMISSION_READ); $this->assertNotEmpty($nearbyAndInArea); - $this->assertEquals('park1', $nearbyAndInArea[0]->getId()); + $this->assertSame('park1', $nearbyAndInArea[0]->getId()); } // Test OR combination: parks near either location @@ -1463,7 +1463,7 @@ public function testSpatialQueryCombinations(): void $this->assertNotEmpty($orderedByDistance); // First result should be closest to the reference point - $this->assertEquals('park1', $orderedByDistance[0]->getId()); + $this->assertSame('park1', $orderedByDistance[0]->getId()); // Test spatial queries with limits $limitedResults = $database->find($collectionName, [ @@ -1555,8 +1555,8 @@ public function testSpatialBulkOperation(): void $results[] = $doc; }); - $this->assertEquals(5, $count); - $this->assertEquals(5, count($results)); + $this->assertSame(5, $count); + $this->assertSame(5, count($results)); // Verify created documents foreach ($results as $document) { @@ -1584,7 +1584,7 @@ public function testSpatialBulkOperation(): void $document = $database->getDocument($collectionName, $doc->getId()); $this->assertNotEmpty($document->getId()); $this->assertNotEmpty($document->getAttribute('name')); - $this->assertEquals($document->getAttribute('name'), $doc->getAttribute('name')); + $this->assertSame($document->getAttribute('name'), $doc->getAttribute('name')); $this->assertNotEmpty($document->getSequence()); $this->assertIsArray($document->getAttribute('location')); $this->assertIsArray($document->getAttribute('area')); @@ -1643,9 +1643,9 @@ public function testSpatialBulkOperation(): void // Verify updated documents foreach ($updateResults as $document) { - $this->assertEquals('Updated Location', $document->getAttribute('name')); - $this->assertEquals([15.0, 25.0], $document->getAttribute('location')); - $this->assertEquals([[ + $this->assertSame('Updated Location', $document->getAttribute('name')); + $this->assertSame([15.0, 25.0], $document->getAttribute('location')); + $this->assertSame([[ [15.0, 25.0], [16.0, 25.0], [16.0, 26.0], @@ -1699,8 +1699,8 @@ public function testSpatialBulkOperation(): void $upsertResults[] = $doc; }); - $this->assertEquals(2, $upsertCount); - $this->assertEquals(2, count($upsertResults)); + $this->assertSame(2, $upsertCount); + $this->assertSame(2, count($upsertResults)); // Verify upserted documents foreach ($upsertResults as $document) { @@ -1757,7 +1757,7 @@ public function testSpatialBulkOperation(): void Query::distanceGreaterThan('location', [15.0, 25.0], 100.0) // Find documents more than 100 units away ]); - $this->assertEquals(0, count($extremelyFarDocuments)); + $this->assertSame(0, count($extremelyFarDocuments)); // Test 11: Update specific spatial documents $specificUpdateCount = $database->updateDocuments($collectionName, new Document([ @@ -1766,7 +1766,7 @@ public function testSpatialBulkOperation(): void Query::equal('$id', ['upsert1']) ]); - $this->assertEquals(1, $specificUpdateCount); + $this->assertSame(1, $specificUpdateCount); // Verify the specific update $specificDoc = $database->find($collectionName, [ @@ -1774,7 +1774,7 @@ public function testSpatialBulkOperation(): void ]); $this->assertCount(1, $specificDoc); - $this->assertEquals('Specifically Updated', $specificDoc[0]->getAttribute('name')); + $this->assertSame('Specifically Updated', $specificDoc[0]->getAttribute('name')); // Cleanup $database->deleteCollection($collectionName); @@ -1835,33 +1835,33 @@ public function testSptialAggregation(): void $queries = [ Query::distanceLessThan('loc', [10.0, 10.0], 0.1) ]; - $this->assertEquals(2, $database->count($collectionName, $queries)); + $this->assertSame(2, $database->count($collectionName, $queries)); $this->assertCount(2, $database->find($collectionName, $queries)); // SUM with spatial distanceEqual filter $sumNear = $database->sum($collectionName, 'score', $queries); - $this->assertEquals(10 + 20, $sumNear); + $this->assertSame(10 + 20, $sumNear); // COUNT and SUM with distanceGreaterThan (should only include far point "c") $queriesFar = [ Query::distanceGreaterThan('loc', [10.0, 10.0], 10.0) ]; - $this->assertEquals(1, $database->count($collectionName, $queriesFar)); - $this->assertEquals(30, $database->sum($collectionName, 'score', $queriesFar)); + $this->assertSame(1, $database->count($collectionName, $queriesFar)); + $this->assertSame(30, $database->sum($collectionName, 'score', $queriesFar)); // COUNT and SUM with polygon contains filter (adapter-dependent boundary inclusivity) if ($database->getAdapter()->getSupportForBoundaryInclusiveContains()) { $queriesContain = [ Query::contains('area', [[10.0, 10.0]]) ]; - $this->assertEquals(2, $database->count($collectionName, $queriesContain)); - $this->assertEquals(30, $database->sum($collectionName, 'score', $queriesContain)); + $this->assertSame(2, $database->count($collectionName, $queriesContain)); + $this->assertSame(30, $database->sum($collectionName, 'score', $queriesContain)); $queriesNotContain = [ Query::notContains('area', [[10.0, 10.0]]) ]; - $this->assertEquals(1, $database->count($collectionName, $queriesNotContain)); - $this->assertEquals(30, $database->sum($collectionName, 'score', $queriesNotContain)); + $this->assertSame(1, $database->count($collectionName, $queriesNotContain)); + $this->assertSame(30, $database->sum($collectionName, 'score', $queriesNotContain)); } } finally { $database->deleteCollection($collectionName); @@ -1897,8 +1897,8 @@ public function testUpdateSpatialAttributes(): void } // Create a single spatial attribute (required=true) - $this->assertEquals(true, $database->createAttribute($collectionName, 'geom', Database::VAR_POINT, 0, true)); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_geom', Database::INDEX_SPATIAL, ['geom'])); + $this->assertSame(true, $database->createAttribute($collectionName, 'geom', Database::VAR_POINT, 0, true)); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_geom', Database::INDEX_SPATIAL, ['geom'])); // 1) Disallow size and array updates on spatial attributes: expect DatabaseException try { @@ -1921,7 +1921,7 @@ public function testUpdateSpatialAttributes(): void // Should succeed on adapters that allow nullable spatial indexes $database->updateAttribute($collectionName, 'geom', required: false); $meta = $database->getCollection($collectionName); - $this->assertEquals(false, $meta->getAttribute('attributes')[0]['required']); + $this->assertSame(false, $meta->getAttribute('attributes')[0]['required']); } else { // Should error (index constraint) when making required=false while spatial index exists $threw = false; @@ -1933,7 +1933,7 @@ public function testUpdateSpatialAttributes(): void $this->assertTrue($threw, 'Expected error when setting required=false with existing spatial index and adapter not supporting nullable indexes'); // Ensure attribute remains required $meta = $database->getCollection($collectionName); - $this->assertEquals(true, $meta->getAttribute('attributes')[0]['required']); + $this->assertSame(true, $meta->getAttribute('attributes')[0]['required']); } // 3) Spatial index order support: providing orders should fail if not supported @@ -1969,15 +1969,15 @@ public function testSpatialAttributeDefaults(): void $database->createCollection($collectionName); // Create spatial attributes with defaults and no indexes to avoid nullability/index constraints - $this->assertEquals(true, $database->createAttribute($collectionName, 'pt', Database::VAR_POINT, 0, false, [1.0, 2.0])); - $this->assertEquals(true, $database->createAttribute($collectionName, 'ln', Database::VAR_LINESTRING, 0, false, [[0.0, 0.0], [1.0, 1.0]])); - $this->assertEquals(true, $database->createAttribute($collectionName, 'pg', Database::VAR_POLYGON, 0, false, [[[0.0, 0.0], [0.0, 2.0], [2.0, 2.0], [0.0, 0.0]]])); + $this->assertSame(true, $database->createAttribute($collectionName, 'pt', Database::VAR_POINT, 0, false, [1.0, 2.0])); + $this->assertSame(true, $database->createAttribute($collectionName, 'ln', Database::VAR_LINESTRING, 0, false, [[0.0, 0.0], [1.0, 1.0]])); + $this->assertSame(true, $database->createAttribute($collectionName, 'pg', Database::VAR_POLYGON, 0, false, [[[0.0, 0.0], [0.0, 2.0], [2.0, 2.0], [0.0, 0.0]]])); // Create non-spatial attributes (mix of defaults and no defaults) - $this->assertEquals(true, $database->createAttribute($collectionName, 'title', Database::VAR_STRING, 255, false, 'Untitled')); - $this->assertEquals(true, $database->createAttribute($collectionName, 'count', Database::VAR_INTEGER, 0, false, 0)); - $this->assertEquals(true, $database->createAttribute($collectionName, 'rating', Database::VAR_FLOAT, 0, false)); // no default - $this->assertEquals(true, $database->createAttribute($collectionName, 'active', Database::VAR_BOOLEAN, 0, false, true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'title', Database::VAR_STRING, 255, false, 'Untitled')); + $this->assertSame(true, $database->createAttribute($collectionName, 'count', Database::VAR_INTEGER, 0, false, 0)); + $this->assertSame(true, $database->createAttribute($collectionName, 'rating', Database::VAR_FLOAT, 0, false)); // no default + $this->assertSame(true, $database->createAttribute($collectionName, 'active', Database::VAR_BOOLEAN, 0, false, true)); // Create document without providing spatial values, expect defaults applied $doc = $database->createDocument($collectionName, new Document([ @@ -1985,12 +1985,12 @@ public function testSpatialAttributeDefaults(): void '$permissions' => [Permission::read(Role::any())] ])); $this->assertInstanceOf(Document::class, $doc); - $this->assertEquals([1.0, 2.0], $doc->getAttribute('pt')); - $this->assertEquals([[0.0, 0.0], [1.0, 1.0]], $doc->getAttribute('ln')); - $this->assertEquals([[[0.0, 0.0], [0.0, 2.0], [2.0, 2.0], [0.0, 0.0]]], $doc->getAttribute('pg')); + $this->assertSame([1.0, 2.0], $doc->getAttribute('pt')); + $this->assertSame([[0.0, 0.0], [1.0, 1.0]], $doc->getAttribute('ln')); + $this->assertSame([[[0.0, 0.0], [0.0, 2.0], [2.0, 2.0], [0.0, 0.0]]], $doc->getAttribute('pg')); // Non-spatial defaults - $this->assertEquals('Untitled', $doc->getAttribute('title')); - $this->assertEquals(0, $doc->getAttribute('count')); + $this->assertSame('Untitled', $doc->getAttribute('title')); + $this->assertSame(0, $doc->getAttribute('count')); $this->assertNull($doc->getAttribute('rating')); $this->assertTrue($doc->getAttribute('active')); @@ -2007,12 +2007,12 @@ public function testSpatialAttributeDefaults(): void 'active' => false ])); $this->assertInstanceOf(Document::class, $doc2); - $this->assertEquals([9.0, 9.0], $doc2->getAttribute('pt')); - $this->assertEquals([[2.0, 2.0], [3.0, 3.0]], $doc2->getAttribute('ln')); - $this->assertEquals([[[1.0, 1.0], [1.0, 3.0], [3.0, 3.0], [1.0, 1.0]]], $doc2->getAttribute('pg')); - $this->assertEquals('Custom', $doc2->getAttribute('title')); - $this->assertEquals(5, $doc2->getAttribute('count')); - $this->assertEquals(4.5, $doc2->getAttribute('rating')); + $this->assertSame([9.0, 9.0], $doc2->getAttribute('pt')); + $this->assertSame([[2.0, 2.0], [3.0, 3.0]], $doc2->getAttribute('ln')); + $this->assertSame([[[1.0, 1.0], [1.0, 3.0], [3.0, 3.0], [1.0, 1.0]]], $doc2->getAttribute('pg')); + $this->assertSame('Custom', $doc2->getAttribute('title')); + $this->assertSame(5, $doc2->getAttribute('count')); + $this->assertSame(4.5, $doc2->getAttribute('rating')); $this->assertFalse($doc2->getAttribute('active')); // Update defaults and ensure they are applied for new documents @@ -2028,11 +2028,11 @@ public function testSpatialAttributeDefaults(): void '$permissions' => [Permission::read(Role::any())] ])); $this->assertInstanceOf(Document::class, $doc3); - $this->assertEquals([5.0, 6.0], $doc3->getAttribute('pt')); - $this->assertEquals([[10.0, 10.0], [20.0, 20.0]], $doc3->getAttribute('ln')); - $this->assertEquals([[[5.0, 5.0], [5.0, 7.0], [7.0, 7.0], [5.0, 5.0]]], $doc3->getAttribute('pg')); - $this->assertEquals('Updated', $doc3->getAttribute('title')); - $this->assertEquals(10, $doc3->getAttribute('count')); + $this->assertSame([5.0, 6.0], $doc3->getAttribute('pt')); + $this->assertSame([[10.0, 10.0], [20.0, 20.0]], $doc3->getAttribute('ln')); + $this->assertSame([[[5.0, 5.0], [5.0, 7.0], [7.0, 7.0], [5.0, 5.0]]], $doc3->getAttribute('pg')); + $this->assertSame('Updated', $doc3->getAttribute('title')); + $this->assertSame(10, $doc3->getAttribute('count')); $this->assertNull($doc3->getAttribute('rating')); $this->assertFalse($doc3->getAttribute('active')); @@ -2178,8 +2178,8 @@ public function testSpatialDistanceInMeter(): void $collectionName = 'spatial_distance_meters_'; try { $database->createCollection($collectionName); - $this->assertEquals(true, $database->createAttribute($collectionName, 'loc', Database::VAR_POINT, 0, true)); - $this->assertEquals(true, $database->createIndex($collectionName, 'idx_loc', Database::INDEX_SPATIAL, ['loc'])); + $this->assertSame(true, $database->createAttribute($collectionName, 'loc', Database::VAR_POINT, 0, true)); + $this->assertSame(true, $database->createIndex($collectionName, 'idx_loc', Database::INDEX_SPATIAL, ['loc'])); // Two points roughly ~1000 meters apart by latitude delta (~0.009 deg ≈ 1km) $p0 = $database->createDocument($collectionName, new Document([ @@ -2209,7 +2209,7 @@ public function testSpatialDistanceInMeter(): void ], Database::PERMISSION_READ); $this->assertNotEmpty($within500m); $this->assertCount(1, $within500m); - $this->assertEquals('p0', $within500m[0]->getId()); + $this->assertSame('p0', $within500m[0]->getId()); // distanceGreaterThan 500m should include only p1 $greater500m = $database->find($collectionName, [ @@ -2217,21 +2217,21 @@ public function testSpatialDistanceInMeter(): void ], Database::PERMISSION_READ); $this->assertNotEmpty($greater500m); $this->assertCount(1, $greater500m); - $this->assertEquals('p1', $greater500m[0]->getId()); + $this->assertSame('p1', $greater500m[0]->getId()); // distanceEqual with 0m should return exact match p0 $equalZero = $database->find($collectionName, [ Query::distanceEqual('loc', [0.0000, 0.0000], 0, true) ], Database::PERMISSION_READ); $this->assertNotEmpty($equalZero); - $this->assertEquals('p0', $equalZero[0]->getId()); + $this->assertSame('p0', $equalZero[0]->getId()); // distanceNotEqual with 0m should return p1 $notEqualZero = $database->find($collectionName, [ Query::distanceNotEqual('loc', [0.0000, 0.0000], 0, true) ], Database::PERMISSION_READ); $this->assertNotEmpty($notEqualZero); - $this->assertEquals('p1', $notEqualZero[0]->getId()); + $this->assertSame('p1', $notEqualZero[0]->getId()); } finally { $database->deleteCollection($collectionName); } @@ -2256,14 +2256,14 @@ public function testSpatialDistanceInMeterForMultiDimensionGeometry(): void $database->createCollection($multiCollection); // Create spatial attributes - $this->assertEquals(true, $database->createAttribute($multiCollection, 'loc', Database::VAR_POINT, 0, true)); - $this->assertEquals(true, $database->createAttribute($multiCollection, 'line', Database::VAR_LINESTRING, 0, true)); - $this->assertEquals(true, $database->createAttribute($multiCollection, 'poly', Database::VAR_POLYGON, 0, true)); + $this->assertSame(true, $database->createAttribute($multiCollection, 'loc', Database::VAR_POINT, 0, true)); + $this->assertSame(true, $database->createAttribute($multiCollection, 'line', Database::VAR_LINESTRING, 0, true)); + $this->assertSame(true, $database->createAttribute($multiCollection, 'poly', Database::VAR_POLYGON, 0, true)); // Create indexes - $this->assertEquals(true, $database->createIndex($multiCollection, 'idx_loc', Database::INDEX_SPATIAL, ['loc'])); - $this->assertEquals(true, $database->createIndex($multiCollection, 'idx_line', Database::INDEX_SPATIAL, ['line'])); - $this->assertEquals(true, $database->createIndex($multiCollection, 'idx_poly', Database::INDEX_SPATIAL, ['poly'])); + $this->assertSame(true, $database->createIndex($multiCollection, 'idx_loc', Database::INDEX_SPATIAL, ['loc'])); + $this->assertSame(true, $database->createIndex($multiCollection, 'idx_line', Database::INDEX_SPATIAL, ['line'])); + $this->assertSame(true, $database->createIndex($multiCollection, 'idx_poly', Database::INDEX_SPATIAL, ['poly'])); // Geometry sets: near origin and far east $docNear = $database->createDocument($multiCollection, new Document([ @@ -2308,7 +2308,7 @@ public function testSpatialDistanceInMeterForMultiDimensionGeometry(): void ]], 3000, true) ], Database::PERMISSION_READ); $this->assertCount(1, $polyPolyWithin3km); - $this->assertEquals('near', $polyPolyWithin3km[0]->getId()); + $this->assertSame('near', $polyPolyWithin3km[0]->getId()); $polyPolyGreater3km = $database->find($multiCollection, [ Query::distanceGreaterThan('poly', [[ @@ -2320,7 +2320,7 @@ public function testSpatialDistanceInMeterForMultiDimensionGeometry(): void ]], 3000, true) ], Database::PERMISSION_READ); $this->assertCount(1, $polyPolyGreater3km); - $this->assertEquals('far', $polyPolyGreater3km[0]->getId()); + $this->assertSame('far', $polyPolyGreater3km[0]->getId()); // point vs polygon (~0 km near, ~22 km far) $ptPolyWithin500 = $database->find($multiCollection, [ @@ -2332,7 +2332,7 @@ public function testSpatialDistanceInMeterForMultiDimensionGeometry(): void ]], 500, true) ], Database::PERMISSION_READ); $this->assertCount(1, $ptPolyWithin500); - $this->assertEquals('near', $ptPolyWithin500[0]->getId()); + $this->assertSame('near', $ptPolyWithin500[0]->getId()); $ptPolyGreater500 = $database->find($multiCollection, [ Query::distanceGreaterThan('loc', [[ @@ -2343,14 +2343,14 @@ public function testSpatialDistanceInMeterForMultiDimensionGeometry(): void ]], 500, true) ], Database::PERMISSION_READ); $this->assertCount(1, $ptPolyGreater500); - $this->assertEquals('far', $ptPolyGreater500[0]->getId()); + $this->assertSame('far', $ptPolyGreater500[0]->getId()); // Zero-distance checks $lineEqualZero = $database->find($multiCollection, [ Query::distanceEqual('line', [[0.0000, 0.0000], [0.0010, 0.0000]], 0, true) ], Database::PERMISSION_READ); $this->assertNotEmpty($lineEqualZero); - $this->assertEquals('near', $lineEqualZero[0]->getId()); + $this->assertSame('near', $lineEqualZero[0]->getId()); $polyEqualZero = $database->find($multiCollection, [ Query::distanceEqual('poly', [[ @@ -2362,7 +2362,7 @@ public function testSpatialDistanceInMeterForMultiDimensionGeometry(): void ]], 0, true) ], Database::PERMISSION_READ); $this->assertNotEmpty($polyEqualZero); - $this->assertEquals('near', $polyEqualZero[0]->getId()); + $this->assertSame('near', $polyEqualZero[0]->getId()); } finally { $database->deleteCollection($multiCollection); @@ -2385,9 +2385,9 @@ public function testSpatialDistanceInMeterError(): void $collection = 'spatial_distance_error_test'; $database->createCollection($collection); - $this->assertEquals(true, $database->createAttribute($collection, 'loc', Database::VAR_POINT, 0, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'line', Database::VAR_LINESTRING, 0, true)); - $this->assertEquals(true, $database->createAttribute($collection, 'poly', Database::VAR_POLYGON, 0, true)); + $this->assertSame(true, $database->createAttribute($collection, 'loc', Database::VAR_POINT, 0, true)); + $this->assertSame(true, $database->createAttribute($collection, 'line', Database::VAR_LINESTRING, 0, true)); + $this->assertSame(true, $database->createAttribute($collection, 'poly', Database::VAR_POLYGON, 0, true)); $doc = $database->createDocument($collection, new Document([ '$id' => 'doc1', @@ -2473,27 +2473,27 @@ public function testSpatialEncodeDecode(): void $result = $database->encode($collection, $doc); - $this->assertEquals($result->getAttribute('point'), $point); - $this->assertEquals($result->getAttribute('line'), $line); - $this->assertEquals($result->getAttribute('poly'), $poly); + $this->assertSame($result->getAttribute('point'), $point); + $this->assertSame($result->getAttribute('line'), $line); + $this->assertSame($result->getAttribute('poly'), $poly); $result = $database->decode($collection, $doc); - $this->assertEquals($result->getAttribute('point'), $pointArr); - $this->assertEquals($result->getAttribute('line'), $lineArr); - $this->assertEquals($result->getAttribute('poly'), $polyArr); + $this->assertSame($result->getAttribute('point'), $pointArr); + $this->assertSame($result->getAttribute('line'), $lineArr); + $this->assertSame($result->getAttribute('poly'), $polyArr); $stringDoc = new Document(['point' => $point,'line' => $line, 'poly' => $poly]); $result = $database->decode($collection, $stringDoc); - $this->assertEquals($result->getAttribute('point'), $pointArr); - $this->assertEquals($result->getAttribute('line'), $lineArr); - $this->assertEquals($result->getAttribute('poly'), $polyArr); + $this->assertSame($result->getAttribute('point'), $pointArr); + $this->assertSame($result->getAttribute('line'), $lineArr); + $this->assertSame($result->getAttribute('poly'), $polyArr); $nullDoc = new Document(['point' => null,'line' => null, 'poly' => null]); $result = $database->decode($collection, $nullDoc); - $this->assertEquals($result->getAttribute('point'), null); - $this->assertEquals($result->getAttribute('line'), null); - $this->assertEquals($result->getAttribute('poly'), null); + $this->assertSame($result->getAttribute('point'), null); + $this->assertSame($result->getAttribute('line'), null); + $this->assertSame($result->getAttribute('poly'), null); } public function testSpatialIndexSingleAttributeOnly(): void @@ -2659,7 +2659,7 @@ public function testSpatialDocOrder(): void $database->createCollection($collectionName); // Create spatial attributes using createAttribute method - $this->assertEquals(true, $database->createAttribute($collectionName, 'pointAttr', Database::VAR_POINT, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); + $this->assertSame(true, $database->createAttribute($collectionName, 'pointAttr', Database::VAR_POINT, 0, $database->getAdapter()->getSupportForSpatialIndexNull() ? false : true)); // Create test document $doc1 = new Document( @@ -2672,8 +2672,8 @@ public function testSpatialDocOrder(): void $database->createDocument($collectionName, $doc1); $result = $database->getDocument($collectionName, 'doc1'); - $this->assertEquals($result->getAttribute('pointAttr')[0], 5.0); - $this->assertEquals($result->getAttribute('pointAttr')[1], 5.5); + $this->assertSame($result->getAttribute('pointAttr')[0], 5.0); + $this->assertSame($result->getAttribute('pointAttr')[1], 5.5); $database->deleteCollection($collectionName); } @@ -2847,9 +2847,9 @@ public function testSpatialArrayWKTConversionInUpdateDocument(): void ])); // Verify initial values - $this->assertEquals($initialPoint, $doc->getAttribute('location')); - $this->assertEquals($initialLine, $doc->getAttribute('route')); - $this->assertEquals($initialPolygon, $doc->getAttribute('area')); + $this->assertSame($initialPoint, $doc->getAttribute('location')); + $this->assertSame($initialLine, $doc->getAttribute('route')); + $this->assertSame($initialPolygon, $doc->getAttribute('area')); // Update document with NEW spatial arrays (this triggers the WKT conversion path) $newPoint = [30.0, 40.0]; @@ -2864,34 +2864,34 @@ public function testSpatialArrayWKTConversionInUpdateDocument(): void ])); // Verify updated spatial values are correctly stored and retrieved - $this->assertEquals($newPoint, $updated->getAttribute('location'), 'Point should be updated correctly via WKT conversion'); - $this->assertEquals($newLine, $updated->getAttribute('route'), 'LineString should be updated correctly via WKT conversion'); - $this->assertEquals($newPolygon, $updated->getAttribute('area'), 'Polygon should be updated correctly via WKT conversion'); - $this->assertEquals('Updated', $updated->getAttribute('name')); + $this->assertSame($newPoint, $updated->getAttribute('location'), 'Point should be updated correctly via WKT conversion'); + $this->assertSame($newLine, $updated->getAttribute('route'), 'LineString should be updated correctly via WKT conversion'); + $this->assertSame($newPolygon, $updated->getAttribute('area'), 'Polygon should be updated correctly via WKT conversion'); + $this->assertSame('Updated', $updated->getAttribute('name')); // Refetch from database to ensure data was persisted correctly $refetched = $database->getDocument($collectionName, 'spatial_doc'); - $this->assertEquals($newPoint, $refetched->getAttribute('location'), 'Point should persist correctly after WKT conversion'); - $this->assertEquals($newLine, $refetched->getAttribute('route'), 'LineString should persist correctly after WKT conversion'); - $this->assertEquals($newPolygon, $refetched->getAttribute('area'), 'Polygon should persist correctly after WKT conversion'); + $this->assertSame($newPoint, $refetched->getAttribute('location'), 'Point should persist correctly after WKT conversion'); + $this->assertSame($newLine, $refetched->getAttribute('route'), 'LineString should persist correctly after WKT conversion'); + $this->assertSame($newPolygon, $refetched->getAttribute('area'), 'Polygon should persist correctly after WKT conversion'); // Test spatial queries work with updated data $results = $database->find($collectionName, [ Query::equal('location', [$newPoint]) ]); $this->assertCount(1, $results, 'Should find document by exact point match'); - $this->assertEquals('spatial_doc', $results[0]->getId()); + $this->assertSame('spatial_doc', $results[0]->getId()); // Test mixed update (spatial + non-spatial attributes) $updated2 = $database->updateDocument($collectionName, 'spatial_doc', new Document([ 'location' => [50.0, 60.0], 'name' => 'Mixed Update' ])); - $this->assertEquals([50.0, 60.0], $updated2->getAttribute('location')); - $this->assertEquals('Mixed Update', $updated2->getAttribute('name')); + $this->assertSame([50.0, 60.0], $updated2->getAttribute('location')); + $this->assertSame('Mixed Update', $updated2->getAttribute('name')); // Other spatial attributes should remain unchanged - $this->assertEquals($newLine, $updated2->getAttribute('route')); - $this->assertEquals($newPolygon, $updated2->getAttribute('area')); + $this->assertSame($newLine, $updated2->getAttribute('route')); + $this->assertSame($newPolygon, $updated2->getAttribute('area')); } finally { $database->deleteCollection($collectionName); diff --git a/tests/e2e/Adapter/Scopes/VectorTests.php b/tests/e2e/Adapter/Scopes/VectorTests.php index 8d84de940..9778e27a6 100644 --- a/tests/e2e/Adapter/Scopes/VectorTests.php +++ b/tests/e2e/Adapter/Scopes/VectorTests.php @@ -48,10 +48,10 @@ public function testVectorAttributes(): void $this->assertNotNull($embeddingAttr); $this->assertNotNull($largeEmbeddingAttr); - $this->assertEquals(Database::VAR_VECTOR, $embeddingAttr['type']); - $this->assertEquals(3, $embeddingAttr['size']); - $this->assertEquals(Database::VAR_VECTOR, $largeEmbeddingAttr['type']); - $this->assertEquals(128, $largeEmbeddingAttr['size']); + $this->assertSame(Database::VAR_VECTOR, $embeddingAttr['type']); + $this->assertSame(3, $embeddingAttr['size']); + $this->assertSame(Database::VAR_VECTOR, $largeEmbeddingAttr['type']); + $this->assertSame(128, $largeEmbeddingAttr['size']); // Cleanup $database->deleteCollection('vectorCollection'); @@ -142,9 +142,9 @@ public function testVectorDocuments(): void $this->assertNotEmpty($doc2->getId()); $this->assertNotEmpty($doc3->getId()); - $this->assertEquals([1.0, 0.0, 0.0], $doc1->getAttribute('embedding')); - $this->assertEquals([0.0, 1.0, 0.0], $doc2->getAttribute('embedding')); - $this->assertEquals([0.0, 0.0, 1.0], $doc3->getAttribute('embedding')); + $this->assertSame([1.0, 0.0, 0.0], $doc1->getAttribute('embedding')); + $this->assertSame([0.0, 1.0, 0.0], $doc2->getAttribute('embedding')); + $this->assertSame([0.0, 0.0, 1.0], $doc3->getAttribute('embedding')); // Cleanup $database->deleteCollection('vectorDocuments'); @@ -230,7 +230,7 @@ public function testVectorQueries(): void $this->assertCount(2, $results); // The most similar vector should be the one closest to [1.0, 0.0, 0.0] - $this->assertEquals('Test 1', $results[0]->getAttribute('name')); + $this->assertSame('Test 1', $results[0]->getAttribute('name')); // Test vector query with limit of 1 $results = $database->find('vectorQueries', [ @@ -239,7 +239,7 @@ public function testVectorQueries(): void ]); $this->assertCount(1, $results); - $this->assertEquals('Test 2', $results[0]->getAttribute('name')); + $this->assertSame('Test 2', $results[0]->getAttribute('name')); // Test vector query combined with other filters $results = $database->find('vectorQueries', [ @@ -260,7 +260,7 @@ public function testVectorQueries(): void ]); $this->assertCount(1, $results); - $this->assertEquals('Test 3', $results[0]->getAttribute('name')); + $this->assertSame('Test 3', $results[0]->getAttribute('name')); // Test vector query with offset - skip first result $results = $database->find('vectorQueries', [ @@ -296,7 +296,7 @@ public function testVectorQueries(): void // Test 2 dot product: 0.4*0.0 + 0.6*1.0 + 0.0*0.0 = 0.6 // Test 3 dot product: 0.4*0.5 + 0.6*0.5 + 0.0*0.0 = 0.5 // So Test 2 should come first (higher dot product with negative inner product operator) - $this->assertEquals('Test 2', $results[0]->getAttribute('name')); + $this->assertSame('Test 2', $results[0]->getAttribute('name')); // Cleanup $database->deleteCollection('vectorQueries'); @@ -519,7 +519,7 @@ public function testLargeVectors(): void ])); $this->assertCount(1536, $doc->getAttribute('embedding')); - $this->assertEquals(1.0, $doc->getAttribute('embedding')[0]); + $this->assertSame(1.0, $doc->getAttribute('embedding')[0]); // Test vector search on large vectors $searchVector = array_fill(0, 1536, 0.0); @@ -557,21 +557,21 @@ public function testVectorUpdates(): void 'embedding' => [1.0, 0.0, 0.0] ])); - $this->assertEquals([1.0, 0.0, 0.0], $doc->getAttribute('embedding')); + $this->assertSame([1.0, 0.0, 0.0], $doc->getAttribute('embedding')); // Update the vector $updated = $database->updateDocument('vectorUpdates', $doc->getId(), new Document([ 'embedding' => [0.0, 1.0, 0.0] ])); - $this->assertEquals([0.0, 1.0, 0.0], $updated->getAttribute('embedding')); + $this->assertSame([0.0, 1.0, 0.0], $updated->getAttribute('embedding')); // Test partial update (should replace entire vector) $updated2 = $database->updateDocument('vectorUpdates', $doc->getId(), new Document([ 'embedding' => [0.5, 0.5, 0.5] ])); - $this->assertEquals([0.5, 0.5, 0.5], $updated2->getAttribute('embedding')); + $this->assertSame([0.5, 0.5, 0.5], $updated2->getAttribute('embedding')); // Cleanup $database->deleteCollection('vectorUpdates'); @@ -617,7 +617,7 @@ public function testMultipleVectorAttributes(): void ]); $this->assertCount(2, $results); - $this->assertEquals('Doc 1', $results[0]->getAttribute('name')); + $this->assertSame('Doc 1', $results[0]->getAttribute('name')); // Query by second vector $results = $database->find('multiVector', [ @@ -625,7 +625,7 @@ public function testMultipleVectorAttributes(): void ]); $this->assertCount(2, $results); - $this->assertEquals('Doc 2', $results[0]->getAttribute('name')); + $this->assertSame('Doc 2', $results[0]->getAttribute('name')); // Cleanup $database->deleteCollection('multiVector'); @@ -752,8 +752,8 @@ public function testCombinedVectorAndTextSearch(): void ]); $this->assertCount(2, $results); - $this->assertEquals('AI', $results[0]->getAttribute('category')); - $this->assertEquals('Machine Learning Basics', $results[0]->getAttribute('title')); + $this->assertSame('AI', $results[0]->getAttribute('category')); + $this->assertSame('Machine Learning Basics', $results[0]->getAttribute('title')); // Combine vector search with text search $results = $database->find('vectorTextSearch', [ @@ -904,7 +904,7 @@ public function testVectorIndexPerformance(): void $this->assertCount(10, $results2); // Results should be the same - $this->assertEquals( + $this->assertSame( array_map(fn ($d) => $d->getId(), $results1), array_map(fn ($d) => $d->getId(), $results2) ); @@ -996,7 +996,7 @@ public function testVectorNormalization(): void // For cosine similarity, [3, 4, 0] has similarity 3/5 = 0.6 with [1, 0, 0] // So [1, 0, 0] should be first (similarity = 1.0) - $this->assertEquals([1.0, 0.0, 0.0], $results[0]->getAttribute('embedding')); + $this->assertSame([1.0, 0.0, 0.0], $results[0]->getAttribute('embedding')); // Cleanup $database->deleteCollection('vectorNorm'); @@ -1301,13 +1301,13 @@ public function testVectorWithRelationships(): void ]); $this->assertCount(2, $results); - $this->assertEquals('Parent 1', $results[0]->getAttribute('name')); + $this->assertSame('Parent 1', $results[0]->getAttribute('name')); // Verify relationships are intact $parent1Fetched = $database->getDocument('vectorParent', $parent1->getId()); $children = $parent1Fetched->getAttribute('children'); $this->assertCount(1, $children); - $this->assertEquals('Child 1', $children[0]->getAttribute('title')); + $this->assertSame('Child 1', $children[0]->getAttribute('title')); // Query with vector and relationship filter combined $results = $database->find('vectorParent', [ @@ -1376,7 +1376,7 @@ public function testVectorWithTwoWayRelationships(): void ]); $this->assertCount(1, $results); - $this->assertEquals('Book 1', $results[0]->getAttribute('title')); + $this->assertSame('Book 1', $results[0]->getAttribute('title')); // Query authors and verify relationship $authorFetched = $database->getDocument('vectorAuthors', $author->getId()); @@ -1409,7 +1409,7 @@ public function testVectorAllZeros(): void 'embedding' => [0.0, 0.0, 0.0] ])); - $this->assertEquals([0.0, 0.0, 0.0], $doc->getAttribute('embedding')); + $this->assertSame([0.0, 0.0, 0.0], $doc->getAttribute('embedding')); // Create another document with non-zero vector $doc2 = $database->createDocument('vectorZeros', new Document([ @@ -1903,8 +1903,8 @@ public function testVectorConcurrentUpdates(): void // Last update should win $final = $database->getDocument('vectorConcurrent', $doc->getId()); - $this->assertEquals([0.0, 0.0, 1.0], $final->getAttribute('embedding')); - $this->assertEquals(3, $final->getAttribute('version')); + $this->assertSame([0.0, 0.0, 1.0], $final->getAttribute('embedding')); + $this->assertSame(3, $final->getAttribute('version')); // Cleanup $database->deleteCollection('vectorConcurrent'); @@ -2133,8 +2133,8 @@ public function testSingleDimensionVector(): void 'embedding' => [0.5] ])); - $this->assertEquals([1.0], $doc1->getAttribute('embedding')); - $this->assertEquals([0.5], $doc2->getAttribute('embedding')); + $this->assertSame([1.0], $doc1->getAttribute('embedding')); + $this->assertSame([0.5], $doc2->getAttribute('embedding')); // Query with single dimension $results = $database->find('vectorSingleDim', [ @@ -2489,7 +2489,7 @@ public function testVectorFilterDisabled(): void $this->assertCount(2, $results); foreach ($results as $doc) { - $this->assertEquals('active', $doc->getAttribute('status')); + $this->assertSame('active', $doc->getAttribute('status')); } // Cleanup @@ -2534,7 +2534,7 @@ public function testVectorFilterOverride(): void // Should get category A documents with priority > 0 $this->assertCount(2, $results); foreach ($results as $doc) { - $this->assertEquals('A', $doc->getAttribute('category')); + $this->assertSame('A', $doc->getAttribute('category')); $this->assertGreaterThan(0, $doc->getAttribute('priority')); } @@ -2649,7 +2649,7 @@ public function testVectorQueryCount(): void Query::vectorCosine('embedding', [1.0, 0.0, 0.0]), ]); - $this->assertEquals(1, $count); + $this->assertSame(1, $count); $database->deleteCollection('vectorCount'); } @@ -2698,7 +2698,7 @@ public function testVectorQuerySum(): void Query::vectorCosine('embedding', [1.0, 0.0, 0.0]), ]); - $this->assertEquals(60, $sum); + $this->assertSame(60, $sum); // Test sum with vector query and filter combined $sum = $database->sum('vectorSum', 'value', [ @@ -2706,7 +2706,7 @@ public function testVectorQuerySum(): void Query::greaterThan('value', 15), ]); - $this->assertEquals(50, $sum); + $this->assertSame(50, $sum); $database->deleteCollection('vectorSum'); } @@ -2733,10 +2733,10 @@ public function testVectorUpsert(): void 'embedding' => [1.0, 0.0, 0.0], ])); - $this->assertEquals([1.0, 0.0, 0.0], $insertedDoc->getAttribute('embedding')); + $this->assertSame([1.0, 0.0, 0.0], $insertedDoc->getAttribute('embedding')); $insertedDoc = $database->getDocument('vectorUpsert', 'vectorUpsert'); - $this->assertEquals([1.0, 0.0, 0.0], $insertedDoc->getAttribute('embedding')); + $this->assertSame([1.0, 0.0, 0.0], $insertedDoc->getAttribute('embedding')); $updatedDoc = $database->upsertDocument('vectorUpsert', new Document([ '$id' => 'vectorUpsert', @@ -2747,10 +2747,10 @@ public function testVectorUpsert(): void 'embedding' => [2.0, 0.0, 0.0], ])); - $this->assertEquals([2.0, 0.0, 0.0], $updatedDoc->getAttribute('embedding')); + $this->assertSame([2.0, 0.0, 0.0], $updatedDoc->getAttribute('embedding')); $updatedDoc = $database->getDocument('vectorUpsert', 'vectorUpsert'); - $this->assertEquals([2.0, 0.0, 0.0], $updatedDoc->getAttribute('embedding')); + $this->assertSame([2.0, 0.0, 0.0], $updatedDoc->getAttribute('embedding')); $database->deleteCollection('vectorUpsert'); } diff --git a/tests/e2e/Adapter/SharedTables/MongoDBTest.php b/tests/e2e/Adapter/SharedTables/MongoDBTest.php index 61904861c..0693609b6 100644 --- a/tests/e2e/Adapter/SharedTables/MongoDBTest.php +++ b/tests/e2e/Adapter/SharedTables/MongoDBTest.php @@ -75,9 +75,9 @@ public function testCreateExistsDelete(): void { // Mongo creates databases on the fly, so exists would always pass. So we override this test to remove the exists check. $this->assertNotNull($this->getDatabase()->create()); - $this->assertEquals(true, $this->getDatabase()->delete($this->testDatabase)); - $this->assertEquals(true, $this->getDatabase()->create()); - $this->assertEquals($this->getDatabase(), $this->getDatabase()->setDatabase($this->testDatabase)); + $this->assertSame(true, $this->getDatabase()->delete($this->testDatabase)); + $this->assertSame(true, $this->getDatabase()->create()); + $this->assertSame($this->getDatabase(), $this->getDatabase()->setDatabase($this->testDatabase)); } public function testRenameAttribute(): void diff --git a/tests/unit/DocumentTest.php b/tests/unit/DocumentTest.php index 9a41ab534..5035a7169 100644 --- a/tests/unit/DocumentTest.php +++ b/tests/unit/DocumentTest.php @@ -77,69 +77,69 @@ public function testDocumentNulls(): void $document = new Document($data); - $this->assertEquals(null, $document['cat']); - $this->assertEquals(false, isset($document['cat'])); - $this->assertEquals('cat', $document->getAttribute('cat', 'cat')); + $this->assertSame(null, $document['cat']); + $this->assertSame(false, isset($document['cat'])); + $this->assertSame('cat', $document->getAttribute('cat', 'cat')); - $this->assertEquals(null, $document['dog']); - $this->assertEquals(false, isset($document['dog'])); - $this->assertEquals('dog', $document->getAttribute('dog', 'dog')); + $this->assertSame(null, $document['dog']); + $this->assertSame(false, isset($document['dog'])); + $this->assertSame('dog', $document->getAttribute('dog', 'dog')); } public function testId(): void { - $this->assertEquals($this->id, $this->document->getId()); - $this->assertEquals(null, $this->empty->getId()); + $this->assertSame($this->id, $this->document->getId()); + $this->assertSame(null, $this->empty->getId()); } public function testCollection(): void { - $this->assertEquals($this->collection, $this->document->getCollection()); - $this->assertEquals(null, $this->empty->getCollection()); + $this->assertSame($this->collection, $this->document->getCollection()); + $this->assertSame(null, $this->empty->getCollection()); } public function testGetCreate(): void { - $this->assertEquals(['any', 'user:creator'], $this->document->getCreate()); - $this->assertEquals([], $this->empty->getCreate()); + $this->assertSame(['any', 'user:creator'], $this->document->getCreate()); + $this->assertSame([], $this->empty->getCreate()); } public function testGetRead(): void { - $this->assertEquals(['user:123', 'team:123'], $this->document->getRead()); - $this->assertEquals([], $this->empty->getRead()); + $this->assertSame(['user:123', 'team:123'], $this->document->getRead()); + $this->assertSame([], $this->empty->getRead()); } public function testGetUpdate(): void { - $this->assertEquals(['any', 'user:updater'], $this->document->getUpdate()); - $this->assertEquals([], $this->empty->getUpdate()); + $this->assertSame(['any', 'user:updater'], $this->document->getUpdate()); + $this->assertSame([], $this->empty->getUpdate()); } public function testGetDelete(): void { - $this->assertEquals(['any', 'user:deleter'], $this->document->getDelete()); - $this->assertEquals([], $this->empty->getDelete()); + $this->assertSame(['any', 'user:deleter'], $this->document->getDelete()); + $this->assertSame([], $this->empty->getDelete()); } public function testGetPermissionByType(): void { - $this->assertEquals(['any','user:creator'], $this->document->getPermissionsByType(Database::PERMISSION_CREATE)); - $this->assertEquals([], $this->empty->getPermissionsByType(Database::PERMISSION_CREATE)); + $this->assertSame(['any','user:creator'], $this->document->getPermissionsByType(Database::PERMISSION_CREATE)); + $this->assertSame([], $this->empty->getPermissionsByType(Database::PERMISSION_CREATE)); - $this->assertEquals(['user:123','team:123'], $this->document->getPermissionsByType(Database::PERMISSION_READ)); - $this->assertEquals([], $this->empty->getPermissionsByType(Database::PERMISSION_READ)); + $this->assertSame(['user:123','team:123'], $this->document->getPermissionsByType(Database::PERMISSION_READ)); + $this->assertSame([], $this->empty->getPermissionsByType(Database::PERMISSION_READ)); - $this->assertEquals(['any','user:updater'], $this->document->getPermissionsByType(Database::PERMISSION_UPDATE)); - $this->assertEquals([], $this->empty->getPermissionsByType(Database::PERMISSION_UPDATE)); + $this->assertSame(['any','user:updater'], $this->document->getPermissionsByType(Database::PERMISSION_UPDATE)); + $this->assertSame([], $this->empty->getPermissionsByType(Database::PERMISSION_UPDATE)); - $this->assertEquals(['any','user:deleter'], $this->document->getPermissionsByType(Database::PERMISSION_DELETE)); - $this->assertEquals([], $this->empty->getPermissionsByType(Database::PERMISSION_DELETE)); + $this->assertSame(['any','user:deleter'], $this->document->getPermissionsByType(Database::PERMISSION_DELETE)); + $this->assertSame([], $this->empty->getPermissionsByType(Database::PERMISSION_DELETE)); } public function testGetPermissions(): void { - $this->assertEquals([ + $this->assertSame([ Permission::read(Role::user(ID::custom('123'))), Permission::read(Role::team(ID::custom('123'))), Permission::create(Role::any()), @@ -153,7 +153,7 @@ public function testGetPermissions(): void public function testGetAttributes(): void { - $this->assertEquals([ + $this->assertSame([ 'title' => 'This is a test.', 'list' => [ 'one' @@ -168,29 +168,29 @@ public function testGetAttributes(): void public function testGetAttribute(): void { - $this->assertEquals('This is a test.', $this->document->getAttribute('title', '')); - $this->assertEquals('', $this->document->getAttribute('titlex', '')); + $this->assertSame('This is a test.', $this->document->getAttribute('title', '')); + $this->assertSame('', $this->document->getAttribute('titlex', '')); } public function testSetAttribute(): void { - $this->assertEquals('This is a test.', $this->document->getAttribute('title', '')); - $this->assertEquals(['one'], $this->document->getAttribute('list', [])); - $this->assertEquals('', $this->document->getAttribute('titlex', '')); + $this->assertSame('This is a test.', $this->document->getAttribute('title', '')); + $this->assertSame(['one'], $this->document->getAttribute('list', [])); + $this->assertSame('', $this->document->getAttribute('titlex', '')); $this->document->setAttribute('title', 'New title'); - $this->assertEquals('New title', $this->document->getAttribute('title', '')); - $this->assertEquals('', $this->document->getAttribute('titlex', '')); + $this->assertSame('New title', $this->document->getAttribute('title', '')); + $this->assertSame('', $this->document->getAttribute('titlex', '')); $this->document->setAttribute('list', 'two', Document::SET_TYPE_APPEND); - $this->assertEquals(['one', 'two'], $this->document->getAttribute('list', [])); + $this->assertSame(['one', 'two'], $this->document->getAttribute('list', [])); $this->document->setAttribute('list', 'zero', Document::SET_TYPE_PREPEND); - $this->assertEquals(['zero', 'one', 'two'], $this->document->getAttribute('list', [])); + $this->assertSame(['zero', 'one', 'two'], $this->document->getAttribute('list', [])); $this->document->setAttribute('list', ['one'], Document::SET_TYPE_ASSIGN); - $this->assertEquals(['one'], $this->document->getAttribute('list', [])); + $this->assertSame(['one'], $this->document->getAttribute('list', [])); } public function testSetAttributes(): void @@ -210,33 +210,33 @@ public function testSetAttributes(): void $document->setAttributes($otherDocument->getArrayCopy()); - $this->assertEquals($otherDocument->getId(), $document->getId()); - $this->assertEquals('users', $document->getCollection()); - $this->assertEquals($otherDocument->getPermissions(), $document->getPermissions()); - $this->assertEquals($otherDocument->getAttribute('email'), $document->getAttribute('email')); - $this->assertEquals($otherDocument->getAttribute('prefs'), $document->getAttribute('prefs')); + $this->assertSame($otherDocument->getId(), $document->getId()); + $this->assertSame('users', $document->getCollection()); + $this->assertSame($otherDocument->getPermissions(), $document->getPermissions()); + $this->assertSame($otherDocument->getAttribute('email'), $document->getAttribute('email')); + $this->assertSame($otherDocument->getAttribute('prefs'), $document->getAttribute('prefs')); } public function testRemoveAttribute(): void { $this->document->removeAttribute('list'); - $this->assertEquals([], $this->document->getAttribute('list', [])); + $this->assertSame([], $this->document->getAttribute('list', [])); } public function testFind(): void { - $this->assertEquals(null, $this->document->find('find', 'one')); + $this->assertSame(null, $this->document->find('find', 'one')); $this->document->setAttribute('findString', 'demo'); - $this->assertEquals($this->document, $this->document->find('findString', 'demo')); + $this->assertSame($this->document, $this->document->find('findString', 'demo')); $this->document->setAttribute('findArray', ['demo']); - $this->assertEquals(null, $this->document->find('findArray', 'demo')); - $this->assertEquals($this->document, $this->document->find('findArray', ['demo'])); + $this->assertSame(null, $this->document->find('findArray', 'demo')); + $this->assertSame($this->document, $this->document->find('findArray', ['demo'])); - $this->assertEquals($this->document->getAttribute('children')[0], $this->document->find('name', 'x', 'children')); - $this->assertEquals($this->document->getAttribute('children')[2], $this->document->find('name', 'z', 'children')); - $this->assertEquals(null, $this->document->find('name', 'v', 'children')); + $this->assertSame($this->document->getAttribute('children')[0], $this->document->find('name', 'x', 'children')); + $this->assertSame($this->document->getAttribute('children')[2], $this->document->find('name', 'z', 'children')); + $this->assertSame(null, $this->document->find('name', 'v', 'children')); } public function testFindAndReplace(): void @@ -262,25 +262,25 @@ public function testFindAndReplace(): void ] ]); - $this->assertEquals(true, $document->findAndReplace('name', 'x', new Document(['name' => '1', 'test' => true]), 'children')); - $this->assertEquals('1', $document->getAttribute('children')[0]['name']); - $this->assertEquals(true, $document->getAttribute('children')[0]['test']); + $this->assertSame(true, $document->findAndReplace('name', 'x', new Document(['name' => '1', 'test' => true]), 'children')); + $this->assertSame('1', $document->getAttribute('children')[0]['name']); + $this->assertSame(true, $document->getAttribute('children')[0]['test']); // Array with wrong value - $this->assertEquals(false, $document->findAndReplace('name', 'xy', new Document(['name' => '1', 'test' => true]), 'children')); + $this->assertSame(false, $document->findAndReplace('name', 'xy', new Document(['name' => '1', 'test' => true]), 'children')); // Array with wrong key - $this->assertEquals(false, $document->findAndReplace('namex', 'x', new Document(['name' => '1', 'test' => true]), 'children')); + $this->assertSame(false, $document->findAndReplace('namex', 'x', new Document(['name' => '1', 'test' => true]), 'children')); // No array - $this->assertEquals(true, $document->findAndReplace('title', 'This is a test.', 'new')); - $this->assertEquals('new', $document->getAttribute('title')); + $this->assertSame(true, $document->findAndReplace('title', 'This is a test.', 'new')); + $this->assertSame('new', $document->getAttribute('title')); // No array with wrong value - $this->assertEquals(false, $document->findAndReplace('title', 'test', 'new')); + $this->assertSame(false, $document->findAndReplace('title', 'test', 'new')); // No array with wrong key - $this->assertEquals(false, $document->findAndReplace('titlex', 'This is a test.', 'new')); + $this->assertSame(false, $document->findAndReplace('titlex', 'This is a test.', 'new')); } public function testFindAndRemove(): void @@ -305,38 +305,38 @@ public function testFindAndRemove(): void new Document(['name' => 'z']), ] ]); - $this->assertEquals(true, $document->findAndRemove('name', 'x', 'children')); - $this->assertEquals('y', $document->getAttribute('children')[1]['name']); + $this->assertSame(true, $document->findAndRemove('name', 'x', 'children')); + $this->assertSame('y', $document->getAttribute('children')[1]['name']); $this->assertCount(2, $document->getAttribute('children')); // Array with wrong value - $this->assertEquals(false, $document->findAndRemove('name', 'xy', 'children')); + $this->assertSame(false, $document->findAndRemove('name', 'xy', 'children')); // Array with wrong key - $this->assertEquals(false, $document->findAndRemove('namex', 'x', 'children')); + $this->assertSame(false, $document->findAndRemove('namex', 'x', 'children')); // No array - $this->assertEquals(true, $document->findAndRemove('title', 'This is a test.')); - $this->assertEquals(false, $document->isset('title')); + $this->assertSame(true, $document->findAndRemove('title', 'This is a test.')); + $this->assertSame(false, $document->isset('title')); // No array with wrong value - $this->assertEquals(false, $document->findAndRemove('title', 'new')); + $this->assertSame(false, $document->findAndRemove('title', 'new')); // No array with wrong key - $this->assertEquals(false, $document->findAndRemove('titlex', 'This is a test.')); + $this->assertSame(false, $document->findAndRemove('titlex', 'This is a test.')); } public function testIsEmpty(): void { - $this->assertEquals(false, $this->document->isEmpty()); - $this->assertEquals(true, $this->empty->isEmpty()); + $this->assertSame(false, $this->document->isEmpty()); + $this->assertSame(true, $this->empty->isEmpty()); } public function testIsSet(): void { - $this->assertEquals(false, $this->document->isSet('titlex')); - $this->assertEquals(false, $this->empty->isSet('titlex')); - $this->assertEquals(true, $this->document->isSet('title')); + $this->assertSame(false, $this->document->isSet('titlex')); + $this->assertSame(false, $this->empty->isSet('titlex')); + $this->assertSame(true, $this->document->isSet('title')); } public function testClone(): void @@ -375,16 +375,16 @@ public function testClone(): void $before->getAttribute('children')[0]->getAttribute('document')->setAttribute('name', 'before_two'); $before->getAttribute('children')[0]->getAttribute('children')[0]->setAttribute('name', 'before_x'); - $this->assertEquals('_', $after->getAttribute('name')); - $this->assertEquals('zero', $after->getAttribute('document')->getAttribute('name')); - $this->assertEquals('a', $after->getAttribute('children')[0]->getAttribute('name')); - $this->assertEquals('one', $after->getAttribute('children')[0]->getAttribute('document')->getAttribute('name')); - $this->assertEquals('x', $after->getAttribute('children')[0]->getAttribute('children')[0]->getAttribute('name')); + $this->assertSame('_', $after->getAttribute('name')); + $this->assertSame('zero', $after->getAttribute('document')->getAttribute('name')); + $this->assertSame('a', $after->getAttribute('children')[0]->getAttribute('name')); + $this->assertSame('one', $after->getAttribute('children')[0]->getAttribute('document')->getAttribute('name')); + $this->assertSame('x', $after->getAttribute('children')[0]->getAttribute('children')[0]->getAttribute('name')); } public function testGetArrayCopy(): void { - $this->assertEquals([ + $this->assertSame([ '$id' => ID::custom($this->id), '$collection' => ID::custom($this->collection), '$permissions' => [ @@ -407,7 +407,7 @@ public function testGetArrayCopy(): void ['name' => 'z'], ] ], $this->document->getArrayCopy()); - $this->assertEquals([], $this->empty->getArrayCopy()); + $this->assertSame([], $this->empty->getArrayCopy()); } public function testEmptyDocumentSequence(): void diff --git a/tests/unit/IDTest.php b/tests/unit/IDTest.php index 895309756..b79b5824c 100644 --- a/tests/unit/IDTest.php +++ b/tests/unit/IDTest.php @@ -10,7 +10,7 @@ class IDTest extends TestCase public function testCustomID(): void { $id = ID::custom('test'); - $this->assertEquals('test', $id); + $this->assertSame('test', $id); } public function testUniqueID(): void diff --git a/tests/unit/OperatorTest.php b/tests/unit/OperatorTest.php index 0c07a6d03..50f59e225 100644 --- a/tests/unit/OperatorTest.php +++ b/tests/unit/OperatorTest.php @@ -13,106 +13,106 @@ public function testCreate(): void // Test basic construction $operator = new Operator(Operator::TYPE_INCREMENT, 'count', [1]); - $this->assertEquals(Operator::TYPE_INCREMENT, $operator->getMethod()); - $this->assertEquals('count', $operator->getAttribute()); - $this->assertEquals([1], $operator->getValues()); - $this->assertEquals(1, $operator->getValue()); + $this->assertSame(Operator::TYPE_INCREMENT, $operator->getMethod()); + $this->assertSame('count', $operator->getAttribute()); + $this->assertSame([1], $operator->getValues()); + $this->assertSame(1, $operator->getValue()); // Test with different types $operator = new Operator(Operator::TYPE_ARRAY_APPEND, 'tags', ['php', 'database']); - $this->assertEquals(Operator::TYPE_ARRAY_APPEND, $operator->getMethod()); - $this->assertEquals('tags', $operator->getAttribute()); - $this->assertEquals(['php', 'database'], $operator->getValues()); - $this->assertEquals('php', $operator->getValue()); + $this->assertSame(Operator::TYPE_ARRAY_APPEND, $operator->getMethod()); + $this->assertSame('tags', $operator->getAttribute()); + $this->assertSame(['php', 'database'], $operator->getValues()); + $this->assertSame('php', $operator->getValue()); } public function testHelperMethods(): void { // Test increment helper $operator = Operator::increment(5); - $this->assertEquals(Operator::TYPE_INCREMENT, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); // Initially empty - $this->assertEquals([5], $operator->getValues()); + $this->assertSame(Operator::TYPE_INCREMENT, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); // Initially empty + $this->assertSame([5], $operator->getValues()); // Test decrement helper $operator = Operator::decrement(1); - $this->assertEquals(Operator::TYPE_DECREMENT, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); // Initially empty - $this->assertEquals([1], $operator->getValues()); + $this->assertSame(Operator::TYPE_DECREMENT, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); // Initially empty + $this->assertSame([1], $operator->getValues()); // Test default increment value $operator = Operator::increment(); - $this->assertEquals(1, $operator->getValue()); + $this->assertSame(1, $operator->getValue()); // Test string helpers $operator = Operator::stringConcat(' - Updated'); - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([' - Updated'], $operator->getValues()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([' - Updated'], $operator->getValues()); $operator = Operator::stringReplace('old', 'new'); - $this->assertEquals(Operator::TYPE_STRING_REPLACE, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals(['old', 'new'], $operator->getValues()); + $this->assertSame(Operator::TYPE_STRING_REPLACE, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame(['old', 'new'], $operator->getValues()); // Test math helpers $operator = Operator::multiply(2, 1000); - $this->assertEquals(Operator::TYPE_MULTIPLY, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([2, 1000], $operator->getValues()); + $this->assertSame(Operator::TYPE_MULTIPLY, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([2, 1000], $operator->getValues()); $operator = Operator::divide(2, 1); - $this->assertEquals(Operator::TYPE_DIVIDE, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([2, 1], $operator->getValues()); + $this->assertSame(Operator::TYPE_DIVIDE, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([2, 1], $operator->getValues()); // Test boolean helper $operator = Operator::toggle(); - $this->assertEquals(Operator::TYPE_TOGGLE, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([], $operator->getValues()); + $this->assertSame(Operator::TYPE_TOGGLE, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([], $operator->getValues()); $operator = Operator::dateSetNow(); - $this->assertEquals(Operator::TYPE_DATE_SET_NOW, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([], $operator->getValues()); + $this->assertSame(Operator::TYPE_DATE_SET_NOW, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([], $operator->getValues()); // Test concat helper $operator = Operator::stringConcat(' - Updated'); - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([' - Updated'], $operator->getValues()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([' - Updated'], $operator->getValues()); // Test modulo and power operators $operator = Operator::modulo(3); - $this->assertEquals(Operator::TYPE_MODULO, $operator->getMethod()); - $this->assertEquals([3], $operator->getValues()); + $this->assertSame(Operator::TYPE_MODULO, $operator->getMethod()); + $this->assertSame([3], $operator->getValues()); $operator = Operator::power(2, 1000); - $this->assertEquals(Operator::TYPE_POWER, $operator->getMethod()); - $this->assertEquals([2, 1000], $operator->getValues()); + $this->assertSame(Operator::TYPE_POWER, $operator->getMethod()); + $this->assertSame([2, 1000], $operator->getValues()); // Test new array helper methods $operator = Operator::arrayAppend(['new', 'values']); - $this->assertEquals(Operator::TYPE_ARRAY_APPEND, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals(['new', 'values'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_APPEND, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame(['new', 'values'], $operator->getValues()); $operator = Operator::arrayPrepend(['first', 'second']); - $this->assertEquals(Operator::TYPE_ARRAY_PREPEND, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals(['first', 'second'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_PREPEND, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame(['first', 'second'], $operator->getValues()); $operator = Operator::arrayInsert(2, 'inserted'); - $this->assertEquals(Operator::TYPE_ARRAY_INSERT, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([2, 'inserted'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_INSERT, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([2, 'inserted'], $operator->getValues()); $operator = Operator::arrayRemove('unwanted'); - $this->assertEquals(Operator::TYPE_ARRAY_REMOVE, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals(['unwanted'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_REMOVE, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame(['unwanted'], $operator->getValues()); } public function testSetters(): void @@ -121,20 +121,20 @@ public function testSetters(): void // Test setMethod $operator->setMethod(Operator::TYPE_DECREMENT); - $this->assertEquals(Operator::TYPE_DECREMENT, $operator->getMethod()); + $this->assertSame(Operator::TYPE_DECREMENT, $operator->getMethod()); // Test setAttribute $operator->setAttribute('newAttribute'); - $this->assertEquals('newAttribute', $operator->getAttribute()); + $this->assertSame('newAttribute', $operator->getAttribute()); // Test setValues $operator->setValues([10, 20]); - $this->assertEquals([10, 20], $operator->getValues()); + $this->assertSame([10, 20], $operator->getValues()); // Test setValue $operator->setValue(50); - $this->assertEquals([50], $operator->getValues()); - $this->assertEquals(50, $operator->getValue()); + $this->assertSame([50], $operator->getValues()); + $this->assertSame(50, $operator->getValue()); } public function testTypeMethods(): void @@ -253,11 +253,11 @@ public function testExtractOperators(): void $this->assertInstanceOf(Operator::class, $operators['tags']); // Check that attributes are set from document keys - $this->assertEquals('count', $operators['count']->getAttribute()); - $this->assertEquals('tags', $operators['tags']->getAttribute()); + $this->assertSame('count', $operators['count']->getAttribute()); + $this->assertSame('tags', $operators['tags']->getAttribute()); // Check updates - $this->assertEquals(['name' => 'John', 'age' => 30], $updates); + $this->assertSame(['name' => 'John', 'age' => 30], $updates); } public function testSerialization(): void @@ -272,13 +272,13 @@ public function testSerialization(): void 'attribute' => 'score', 'values' => [10] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test toString $string = $operator->toString(); $this->assertJson($string); $decoded = json_decode($string, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testParsing(): void @@ -291,17 +291,17 @@ public function testParsing(): void ]; $operator = Operator::parseOperator($array); - $this->assertEquals(Operator::TYPE_INCREMENT, $operator->getMethod()); - $this->assertEquals('score', $operator->getAttribute()); - $this->assertEquals([5], $operator->getValues()); + $this->assertSame(Operator::TYPE_INCREMENT, $operator->getMethod()); + $this->assertSame('score', $operator->getAttribute()); + $this->assertSame([5], $operator->getValues()); // Test parse from JSON string $json = json_encode($array); $this->assertIsString($json); $operator = Operator::parse($json); - $this->assertEquals(Operator::TYPE_INCREMENT, $operator->getMethod()); - $this->assertEquals('score', $operator->getAttribute()); - $this->assertEquals([5], $operator->getValues()); + $this->assertSame(Operator::TYPE_INCREMENT, $operator->getMethod()); + $this->assertSame('score', $operator->getAttribute()); + $this->assertSame([5], $operator->getValues()); } public function testParseOperators(): void @@ -318,8 +318,8 @@ public function testParseOperators(): void $this->assertCount(2, $parsed); $this->assertInstanceOf(Operator::class, $parsed[0]); $this->assertInstanceOf(Operator::class, $parsed[1]); - $this->assertEquals(Operator::TYPE_INCREMENT, $parsed[0]->getMethod()); - $this->assertEquals(Operator::TYPE_ARRAY_APPEND, $parsed[1]->getMethod()); + $this->assertSame(Operator::TYPE_INCREMENT, $parsed[0]->getMethod()); + $this->assertSame(Operator::TYPE_ARRAY_APPEND, $parsed[1]->getMethod()); } public function testClone(): void @@ -327,24 +327,24 @@ public function testClone(): void $operator1 = Operator::increment(5); $operator2 = clone $operator1; - $this->assertEquals($operator1->getMethod(), $operator2->getMethod()); - $this->assertEquals($operator1->getAttribute(), $operator2->getAttribute()); - $this->assertEquals($operator1->getValues(), $operator2->getValues()); + $this->assertSame($operator1->getMethod(), $operator2->getMethod()); + $this->assertSame($operator1->getAttribute(), $operator2->getAttribute()); + $this->assertSame($operator1->getValues(), $operator2->getValues()); // Ensure they are different objects $operator2->setMethod(Operator::TYPE_DECREMENT); - $this->assertEquals(Operator::TYPE_INCREMENT, $operator1->getMethod()); - $this->assertEquals(Operator::TYPE_DECREMENT, $operator2->getMethod()); + $this->assertSame(Operator::TYPE_INCREMENT, $operator1->getMethod()); + $this->assertSame(Operator::TYPE_DECREMENT, $operator2->getMethod()); } public function testGetValueWithDefault(): void { $operator = Operator::increment(5); - $this->assertEquals(5, $operator->getValue()); - $this->assertEquals(5, $operator->getValue('default')); + $this->assertSame(5, $operator->getValue()); + $this->assertSame(5, $operator->getValue('default')); $emptyOperator = new Operator(Operator::TYPE_INCREMENT, 'count', []); - $this->assertEquals('default', $emptyOperator->getValue('default')); + $this->assertSame('default', $emptyOperator->getValue('default')); $this->assertNull($emptyOperator->getValue()); } @@ -413,32 +413,32 @@ public function testIncrementWithMax(): void { // Test increment with max limit $operator = Operator::increment(5, 10); - $this->assertEquals(Operator::TYPE_INCREMENT, $operator->getMethod()); - $this->assertEquals([5, 10], $operator->getValues()); + $this->assertSame(Operator::TYPE_INCREMENT, $operator->getMethod()); + $this->assertSame([5, 10], $operator->getValues()); // Test increment without max (should be same as original behavior) $operator = Operator::increment(5); - $this->assertEquals([5], $operator->getValues()); + $this->assertSame([5], $operator->getValues()); } public function testDecrementWithMin(): void { // Test decrement with min limit $operator = Operator::decrement(3, 0); - $this->assertEquals(Operator::TYPE_DECREMENT, $operator->getMethod()); - $this->assertEquals([3, 0], $operator->getValues()); + $this->assertSame(Operator::TYPE_DECREMENT, $operator->getMethod()); + $this->assertSame([3, 0], $operator->getValues()); // Test decrement without min (should be same as original behavior) $operator = Operator::decrement(3); - $this->assertEquals([3], $operator->getValues()); + $this->assertSame([3], $operator->getValues()); } public function testArrayRemove(): void { $operator = Operator::arrayRemove('spam'); - $this->assertEquals(Operator::TYPE_ARRAY_REMOVE, $operator->getMethod()); - $this->assertEquals(['spam'], $operator->getValues()); - $this->assertEquals('spam', $operator->getValue()); + $this->assertSame(Operator::TYPE_ARRAY_REMOVE, $operator->getMethod()); + $this->assertSame(['spam'], $operator->getValues()); + $this->assertSame('spam', $operator->getValue()); } public function testExtractOperatorsWithNewMethods(): void @@ -473,38 +473,38 @@ public function testExtractOperatorsWithNewMethods(): void // Check that array methods are properly extracted $this->assertInstanceOf(Operator::class, $operators['tags']); - $this->assertEquals('tags', $operators['tags']->getAttribute()); - $this->assertEquals(Operator::TYPE_ARRAY_APPEND, $operators['tags']->getMethod()); + $this->assertSame('tags', $operators['tags']->getAttribute()); + $this->assertSame(Operator::TYPE_ARRAY_APPEND, $operators['tags']->getMethod()); $this->assertInstanceOf(Operator::class, $operators['blacklist']); - $this->assertEquals('blacklist', $operators['blacklist']->getAttribute()); - $this->assertEquals(Operator::TYPE_ARRAY_REMOVE, $operators['blacklist']->getMethod()); + $this->assertSame('blacklist', $operators['blacklist']->getAttribute()); + $this->assertSame(Operator::TYPE_ARRAY_REMOVE, $operators['blacklist']->getMethod()); // Check string operators - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operators['title']->getMethod()); - $this->assertEquals(Operator::TYPE_STRING_REPLACE, $operators['content']->getMethod()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operators['title']->getMethod()); + $this->assertSame(Operator::TYPE_STRING_REPLACE, $operators['content']->getMethod()); // Check math operators - $this->assertEquals(Operator::TYPE_MULTIPLY, $operators['views']->getMethod()); - $this->assertEquals(Operator::TYPE_DIVIDE, $operators['rating']->getMethod()); + $this->assertSame(Operator::TYPE_MULTIPLY, $operators['views']->getMethod()); + $this->assertSame(Operator::TYPE_DIVIDE, $operators['rating']->getMethod()); // Check boolean operator - $this->assertEquals(Operator::TYPE_TOGGLE, $operators['featured']->getMethod()); + $this->assertSame(Operator::TYPE_TOGGLE, $operators['featured']->getMethod()); // Check new operators - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operators['title_prefix']->getMethod()); - $this->assertEquals(Operator::TYPE_MODULO, $operators['views_modulo']->getMethod()); - $this->assertEquals(Operator::TYPE_POWER, $operators['score_power']->getMethod()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operators['title_prefix']->getMethod()); + $this->assertSame(Operator::TYPE_MODULO, $operators['views_modulo']->getMethod()); + $this->assertSame(Operator::TYPE_POWER, $operators['score_power']->getMethod()); // Check date operator - $this->assertEquals(Operator::TYPE_DATE_SET_NOW, $operators['last_modified']->getMethod()); + $this->assertSame(Operator::TYPE_DATE_SET_NOW, $operators['last_modified']->getMethod()); // Check that max/min values are preserved - $this->assertEquals([5, 100], $operators['count']->getValues()); - $this->assertEquals([1, 0], $operators['score']->getValues()); + $this->assertSame([5, 100], $operators['count']->getValues()); + $this->assertSame([1, 0], $operators['score']->getValues()); // Check updates - $this->assertEquals(['name' => 'John', 'age' => 30], $updates); + $this->assertSame(['name' => 'John', 'age' => 30], $updates); } @@ -518,9 +518,9 @@ public function testParsingWithNewConstants(): void ]; $operator = Operator::parseOperator($arrayRemove); - $this->assertEquals(Operator::TYPE_ARRAY_REMOVE, $operator->getMethod()); - $this->assertEquals('blacklist', $operator->getAttribute()); - $this->assertEquals(['spam'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_REMOVE, $operator->getMethod()); + $this->assertSame('blacklist', $operator->getAttribute()); + $this->assertSame(['spam'], $operator->getValues()); // Test parsing increment with max $incrementWithMax = [ @@ -530,7 +530,7 @@ public function testParsingWithNewConstants(): void ]; $operator = Operator::parseOperator($incrementWithMax); - $this->assertEquals([1, 10], $operator->getValues()); + $this->assertSame([1, 10], $operator->getValues()); } // Edge case tests @@ -540,20 +540,20 @@ public function testIncrementMaxLimitEdgeCases(): void // Test that max limit is properly stored $operator = Operator::increment(5, 10); $values = $operator->getValues(); - $this->assertEquals(5, $values[0]); // increment value - $this->assertEquals(10, $values[1]); // max limit + $this->assertSame(5, $values[0]); // increment value + $this->assertSame(10, $values[1]); // max limit // Test with float values $operator = Operator::increment(1.5, 9.9); $values = $operator->getValues(); - $this->assertEquals(1.5, $values[0]); - $this->assertEquals(9.9, $values[1]); + $this->assertSame(1.5, $values[0]); + $this->assertSame(9.9, $values[1]); // Test with negative max (edge case) $operator = Operator::increment(1, -5); $values = $operator->getValues(); - $this->assertEquals(1, $values[0]); - $this->assertEquals(-5, $values[1]); + $this->assertSame(1, $values[0]); + $this->assertSame(-5, $values[1]); } public function testDecrementMinLimitEdgeCases(): void @@ -561,40 +561,40 @@ public function testDecrementMinLimitEdgeCases(): void // Test that min limit is properly stored $operator = Operator::decrement(3, 0); $values = $operator->getValues(); - $this->assertEquals(3, $values[0]); // decrement value - $this->assertEquals(0, $values[1]); // min limit + $this->assertSame(3, $values[0]); // decrement value + $this->assertSame(0, $values[1]); // min limit // Test with float values $operator = Operator::decrement(2.5, 0.1); $values = $operator->getValues(); - $this->assertEquals(2.5, $values[0]); - $this->assertEquals(0.1, $values[1]); + $this->assertSame(2.5, $values[0]); + $this->assertSame(0.1, $values[1]); // Test with negative min $operator = Operator::decrement(1, -10); $values = $operator->getValues(); - $this->assertEquals(1, $values[0]); - $this->assertEquals(-10, $values[1]); + $this->assertSame(1, $values[0]); + $this->assertSame(-10, $values[1]); } public function testArrayRemoveEdgeCases(): void { // Test removing various types of values $operator = Operator::arrayRemove('string'); - $this->assertEquals('string', $operator->getValue()); + $this->assertSame('string', $operator->getValue()); $operator = Operator::arrayRemove(42); - $this->assertEquals(42, $operator->getValue()); + $this->assertSame(42, $operator->getValue()); $operator = Operator::arrayRemove(null); - $this->assertEquals(null, $operator->getValue()); + $this->assertSame(null, $operator->getValue()); $operator = Operator::arrayRemove(true); - $this->assertEquals(true, $operator->getValue()); + $this->assertSame(true, $operator->getValue()); // Test removing array (nested array) $operator = Operator::arrayRemove(['nested']); - $this->assertEquals(['nested'], $operator->getValue()); + $this->assertSame(['nested'], $operator->getValue()); } public function testOperatorCloningWithNewMethods(): void @@ -603,22 +603,22 @@ public function testOperatorCloningWithNewMethods(): void $operator1 = Operator::increment(5, 10); $operator2 = clone $operator1; - $this->assertEquals($operator1->getValues(), $operator2->getValues()); - $this->assertEquals([5, 10], $operator2->getValues()); + $this->assertSame($operator1->getValues(), $operator2->getValues()); + $this->assertSame([5, 10], $operator2->getValues()); // Modify one to ensure they're separate objects $operator2->setValues([3, 8]); - $this->assertEquals([5, 10], $operator1->getValues()); - $this->assertEquals([3, 8], $operator2->getValues()); + $this->assertSame([5, 10], $operator1->getValues()); + $this->assertSame([3, 8], $operator2->getValues()); // Test cloning arrayRemove $removeOp1 = Operator::arrayRemove('spam'); $removeOp2 = clone $removeOp1; - $this->assertEquals($removeOp1->getValue(), $removeOp2->getValue()); + $this->assertSame($removeOp1->getValue(), $removeOp2->getValue()); $removeOp2->setValue('ham'); - $this->assertEquals('spam', $removeOp1->getValue()); - $this->assertEquals('ham', $removeOp2->getValue()); + $this->assertSame('spam', $removeOp1->getValue()); + $this->assertSame('ham', $removeOp2->getValue()); } public function testSerializationWithNewOperators(): void @@ -633,7 +633,7 @@ public function testSerializationWithNewOperators(): void 'attribute' => 'score', 'values' => [5, 100] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test serialization of arrayRemove $operator = Operator::arrayRemove('unwanted'); @@ -645,13 +645,13 @@ public function testSerializationWithNewOperators(): void 'attribute' => 'blacklist', 'values' => ['unwanted'] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Ensure JSON serialization works $json = $operator->toString(); $this->assertJson($json); $decoded = json_decode($json, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testMixedOperatorTypes(): void @@ -678,23 +678,23 @@ public function testMixedOperatorTypes(): void $this->assertCount(12, $operators); // Verify each operator type - $this->assertEquals(Operator::TYPE_ARRAY_APPEND, $operators['arrayAppend']->getMethod()); - $this->assertEquals(Operator::TYPE_INCREMENT, $operators['incrementWithMax']->getMethod()); - $this->assertEquals([1, 10], $operators['incrementWithMax']->getValues()); - $this->assertEquals(Operator::TYPE_DECREMENT, $operators['decrementWithMin']->getMethod()); - $this->assertEquals([2, 0], $operators['decrementWithMin']->getValues()); - $this->assertEquals(Operator::TYPE_MULTIPLY, $operators['multiply']->getMethod()); - $this->assertEquals([3, 100], $operators['multiply']->getValues()); - $this->assertEquals(Operator::TYPE_DIVIDE, $operators['divide']->getMethod()); - $this->assertEquals([2, 1], $operators['divide']->getValues()); - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operators['concat']->getMethod()); - $this->assertEquals(Operator::TYPE_STRING_REPLACE, $operators['replace']->getMethod()); - $this->assertEquals(Operator::TYPE_TOGGLE, $operators['toggle']->getMethod()); - $this->assertEquals(Operator::TYPE_DATE_SET_NOW, $operators['dateSetNow']->getMethod()); - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operators['concat']->getMethod()); - $this->assertEquals(Operator::TYPE_MODULO, $operators['modulo']->getMethod()); - $this->assertEquals(Operator::TYPE_POWER, $operators['power']->getMethod()); - $this->assertEquals(Operator::TYPE_ARRAY_REMOVE, $operators['remove']->getMethod()); + $this->assertSame(Operator::TYPE_ARRAY_APPEND, $operators['arrayAppend']->getMethod()); + $this->assertSame(Operator::TYPE_INCREMENT, $operators['incrementWithMax']->getMethod()); + $this->assertSame([1, 10], $operators['incrementWithMax']->getValues()); + $this->assertSame(Operator::TYPE_DECREMENT, $operators['decrementWithMin']->getMethod()); + $this->assertSame([2, 0], $operators['decrementWithMin']->getValues()); + $this->assertSame(Operator::TYPE_MULTIPLY, $operators['multiply']->getMethod()); + $this->assertSame([3, 100], $operators['multiply']->getValues()); + $this->assertSame(Operator::TYPE_DIVIDE, $operators['divide']->getMethod()); + $this->assertSame([2, 1], $operators['divide']->getValues()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operators['concat']->getMethod()); + $this->assertSame(Operator::TYPE_STRING_REPLACE, $operators['replace']->getMethod()); + $this->assertSame(Operator::TYPE_TOGGLE, $operators['toggle']->getMethod()); + $this->assertSame(Operator::TYPE_DATE_SET_NOW, $operators['dateSetNow']->getMethod()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operators['concat']->getMethod()); + $this->assertSame(Operator::TYPE_MODULO, $operators['modulo']->getMethod()); + $this->assertSame(Operator::TYPE_POWER, $operators['power']->getMethod()); + $this->assertSame(Operator::TYPE_ARRAY_REMOVE, $operators['remove']->getMethod()); } public function testTypeValidationWithNewMethods(): void @@ -740,61 +740,61 @@ public function testStringOperators(): void { // Test concat operator $operator = Operator::stringConcat(' - Updated'); - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); - $this->assertEquals([' - Updated'], $operator->getValues()); - $this->assertEquals(' - Updated', $operator->getValue()); - $this->assertEquals('', $operator->getAttribute()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); + $this->assertSame([' - Updated'], $operator->getValues()); + $this->assertSame(' - Updated', $operator->getValue()); + $this->assertSame('', $operator->getAttribute()); // Test concat with different values $operator = Operator::stringConcat('prefix-'); - $this->assertEquals(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); - $this->assertEquals(['prefix-'], $operator->getValues()); - $this->assertEquals('prefix-', $operator->getValue()); + $this->assertSame(Operator::TYPE_STRING_CONCAT, $operator->getMethod()); + $this->assertSame(['prefix-'], $operator->getValues()); + $this->assertSame('prefix-', $operator->getValue()); // Test replace operator $operator = Operator::stringReplace('old', 'new'); - $this->assertEquals(Operator::TYPE_STRING_REPLACE, $operator->getMethod()); - $this->assertEquals(['old', 'new'], $operator->getValues()); - $this->assertEquals('old', $operator->getValue()); + $this->assertSame(Operator::TYPE_STRING_REPLACE, $operator->getMethod()); + $this->assertSame(['old', 'new'], $operator->getValues()); + $this->assertSame('old', $operator->getValue()); } public function testMathOperators(): void { // Test multiply operator $operator = Operator::multiply(2.5, 100); - $this->assertEquals(Operator::TYPE_MULTIPLY, $operator->getMethod()); - $this->assertEquals([2.5, 100], $operator->getValues()); - $this->assertEquals(2.5, $operator->getValue()); + $this->assertSame(Operator::TYPE_MULTIPLY, $operator->getMethod()); + $this->assertSame([2.5, 100], $operator->getValues()); + $this->assertSame(2.5, $operator->getValue()); // Test multiply without max $operator = Operator::multiply(3); - $this->assertEquals([3], $operator->getValues()); + $this->assertSame([3], $operator->getValues()); // Test divide operator $operator = Operator::divide(2, 1); - $this->assertEquals(Operator::TYPE_DIVIDE, $operator->getMethod()); - $this->assertEquals([2, 1], $operator->getValues()); - $this->assertEquals(2, $operator->getValue()); + $this->assertSame(Operator::TYPE_DIVIDE, $operator->getMethod()); + $this->assertSame([2, 1], $operator->getValues()); + $this->assertSame(2, $operator->getValue()); // Test divide without min $operator = Operator::divide(4); - $this->assertEquals([4], $operator->getValues()); + $this->assertSame([4], $operator->getValues()); // Test modulo operator $operator = Operator::modulo(3); - $this->assertEquals(Operator::TYPE_MODULO, $operator->getMethod()); - $this->assertEquals([3], $operator->getValues()); - $this->assertEquals(3, $operator->getValue()); + $this->assertSame(Operator::TYPE_MODULO, $operator->getMethod()); + $this->assertSame([3], $operator->getValues()); + $this->assertSame(3, $operator->getValue()); // Test power operator $operator = Operator::power(2, 1000); - $this->assertEquals(Operator::TYPE_POWER, $operator->getMethod()); - $this->assertEquals([2, 1000], $operator->getValues()); - $this->assertEquals(2, $operator->getValue()); + $this->assertSame(Operator::TYPE_POWER, $operator->getMethod()); + $this->assertSame([2, 1000], $operator->getValues()); + $this->assertSame(2, $operator->getValue()); // Test power without max $operator = Operator::power(3); - $this->assertEquals([3], $operator->getValues()); + $this->assertSame([3], $operator->getValues()); } public function testDivideByZero(): void @@ -814,8 +814,8 @@ public function testModuloByZero(): void public function testBooleanOperator(): void { $operator = Operator::toggle(); - $this->assertEquals(Operator::TYPE_TOGGLE, $operator->getMethod()); - $this->assertEquals([], $operator->getValues()); + $this->assertSame(Operator::TYPE_TOGGLE, $operator->getMethod()); + $this->assertSame([], $operator->getValues()); $this->assertNull($operator->getValue()); } @@ -824,8 +824,8 @@ public function testUtilityOperators(): void { // Test dateSetNow $operator = Operator::dateSetNow(); - $this->assertEquals(Operator::TYPE_DATE_SET_NOW, $operator->getMethod()); - $this->assertEquals([], $operator->getValues()); + $this->assertSame(Operator::TYPE_DATE_SET_NOW, $operator->getMethod()); + $this->assertSame([], $operator->getValues()); $this->assertNull($operator->getValue()); } @@ -847,16 +847,16 @@ public function testNewOperatorParsing(): void foreach ($operators as $operatorData) { $operator = Operator::parseOperator($operatorData); - $this->assertEquals($operatorData['method'], $operator->getMethod()); - $this->assertEquals($operatorData['attribute'], $operator->getAttribute()); - $this->assertEquals($operatorData['values'], $operator->getValues()); + $this->assertSame($operatorData['method'], $operator->getMethod()); + $this->assertSame($operatorData['attribute'], $operator->getAttribute()); + $this->assertSame($operatorData['values'], $operator->getValues()); // Test JSON serialization round-trip $json = $operator->toString(); $parsed = Operator::parse($json); - $this->assertEquals($operator->getMethod(), $parsed->getMethod()); - $this->assertEquals($operator->getAttribute(), $parsed->getAttribute()); - $this->assertEquals($operator->getValues(), $parsed->getValues()); + $this->assertSame($operator->getMethod(), $parsed->getMethod()); + $this->assertSame($operator->getAttribute(), $parsed->getAttribute()); + $this->assertSame($operator->getValues(), $parsed->getValues()); } } @@ -876,9 +876,9 @@ public function testOperatorCloning(): void foreach ($operators as $operator) { $cloned = clone $operator; - $this->assertEquals($operator->getMethod(), $cloned->getMethod()); - $this->assertEquals($operator->getAttribute(), $cloned->getAttribute()); - $this->assertEquals($operator->getValues(), $cloned->getValues()); + $this->assertSame($operator->getMethod(), $cloned->getMethod()); + $this->assertSame($operator->getAttribute(), $cloned->getAttribute()); + $this->assertSame($operator->getValues(), $cloned->getValues()); // Ensure they are different objects $cloned->setAttribute('different'); @@ -892,39 +892,39 @@ public function testOperatorEdgeCases(): void { // Test multiply with zero $operator = Operator::multiply(0); - $this->assertEquals(0, $operator->getValue()); + $this->assertSame(0, $operator->getValue()); // Test divide with fraction $operator = Operator::divide(0.5, 0.1); - $this->assertEquals([0.5, 0.1], $operator->getValues()); + $this->assertSame([0.5, 0.1], $operator->getValues()); // Test concat with empty string $operator = Operator::stringConcat(''); - $this->assertEquals('', $operator->getValue()); + $this->assertSame('', $operator->getValue()); // Test replace with same strings $operator = Operator::stringReplace('same', 'same'); - $this->assertEquals(['same', 'same'], $operator->getValues()); + $this->assertSame(['same', 'same'], $operator->getValues()); // Test modulo edge cases $operator = Operator::modulo(1.5); - $this->assertEquals(1.5, $operator->getValue()); + $this->assertSame(1.5, $operator->getValue()); // Test power with zero exponent $operator = Operator::power(0); - $this->assertEquals(0, $operator->getValue()); + $this->assertSame(0, $operator->getValue()); } public function testPowerOperatorWithMax(): void { // Test power with max limit $operator = Operator::power(2, 1000); - $this->assertEquals(Operator::TYPE_POWER, $operator->getMethod()); - $this->assertEquals([2, 1000], $operator->getValues()); + $this->assertSame(Operator::TYPE_POWER, $operator->getMethod()); + $this->assertSame([2, 1000], $operator->getValues()); // Test power without max $operator = Operator::power(3); - $this->assertEquals([3], $operator->getValues()); + $this->assertSame([3], $operator->getValues()); } public function testOperatorTypeValidation(): void @@ -947,9 +947,9 @@ public function testArrayUnique(): void { // Test basic creation $operator = Operator::arrayUnique(); - $this->assertEquals(Operator::TYPE_ARRAY_UNIQUE, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_UNIQUE, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([], $operator->getValues()); $this->assertNull($operator->getValue()); // Test type checking @@ -972,13 +972,13 @@ public function testArrayUniqueSerialization(): void 'attribute' => 'tags', 'values' => [] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test toString $string = $operator->toString(); $this->assertJson($string); $decoded = json_decode($string, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testArrayUniqueParsing(): void @@ -991,17 +991,17 @@ public function testArrayUniqueParsing(): void ]; $operator = Operator::parseOperator($array); - $this->assertEquals(Operator::TYPE_ARRAY_UNIQUE, $operator->getMethod()); - $this->assertEquals('items', $operator->getAttribute()); - $this->assertEquals([], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_UNIQUE, $operator->getMethod()); + $this->assertSame('items', $operator->getAttribute()); + $this->assertSame([], $operator->getValues()); // Test parse from JSON string $json = json_encode($array); $this->assertIsString($json); $operator = Operator::parse($json); - $this->assertEquals(Operator::TYPE_ARRAY_UNIQUE, $operator->getMethod()); - $this->assertEquals('items', $operator->getAttribute()); - $this->assertEquals([], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_UNIQUE, $operator->getMethod()); + $this->assertSame('items', $operator->getAttribute()); + $this->assertSame([], $operator->getValues()); } public function testArrayUniqueCloning(): void @@ -1010,14 +1010,14 @@ public function testArrayUniqueCloning(): void $operator1->setAttribute('original'); $operator2 = clone $operator1; - $this->assertEquals($operator1->getMethod(), $operator2->getMethod()); - $this->assertEquals($operator1->getAttribute(), $operator2->getAttribute()); - $this->assertEquals($operator1->getValues(), $operator2->getValues()); + $this->assertSame($operator1->getMethod(), $operator2->getMethod()); + $this->assertSame($operator1->getAttribute(), $operator2->getAttribute()); + $this->assertSame($operator1->getValues(), $operator2->getValues()); // Ensure they are different objects $operator2->setAttribute('cloned'); - $this->assertEquals('original', $operator1->getAttribute()); - $this->assertEquals('cloned', $operator2->getAttribute()); + $this->assertSame('original', $operator1->getAttribute()); + $this->assertSame('cloned', $operator2->getAttribute()); } // Tests for arrayIntersect() method @@ -1025,10 +1025,10 @@ public function testArrayIntersect(): void { // Test basic creation $operator = Operator::arrayIntersect(['a', 'b', 'c']); - $this->assertEquals(Operator::TYPE_ARRAY_INTERSECT, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals(['a', 'b', 'c'], $operator->getValues()); - $this->assertEquals('a', $operator->getValue()); + $this->assertSame(Operator::TYPE_ARRAY_INTERSECT, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame(['a', 'b', 'c'], $operator->getValues()); + $this->assertSame('a', $operator->getValue()); // Test type checking $this->assertTrue($operator->isArrayOperation()); @@ -1042,22 +1042,22 @@ public function testArrayIntersectEdgeCases(): void { // Test with empty array $operator = Operator::arrayIntersect([]); - $this->assertEquals([], $operator->getValues()); + $this->assertSame([], $operator->getValues()); $this->assertNull($operator->getValue()); // Test with numeric values $operator = Operator::arrayIntersect([1, 2, 3]); - $this->assertEquals([1, 2, 3], $operator->getValues()); - $this->assertEquals(1, $operator->getValue()); + $this->assertSame([1, 2, 3], $operator->getValues()); + $this->assertSame(1, $operator->getValue()); // Test with mixed types $operator = Operator::arrayIntersect(['string', 42, true, null]); - $this->assertEquals(['string', 42, true, null], $operator->getValues()); - $this->assertEquals('string', $operator->getValue()); + $this->assertSame(['string', 42, true, null], $operator->getValues()); + $this->assertSame('string', $operator->getValue()); // Test with nested arrays $operator = Operator::arrayIntersect([['nested'], ['array']]); - $this->assertEquals([['nested'], ['array']], $operator->getValues()); + $this->assertSame([['nested'], ['array']], $operator->getValues()); } public function testArrayIntersectSerialization(): void @@ -1072,13 +1072,13 @@ public function testArrayIntersectSerialization(): void 'attribute' => 'common', 'values' => ['x', 'y', 'z'] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test toString $string = $operator->toString(); $this->assertJson($string); $decoded = json_decode($string, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testArrayIntersectParsing(): void @@ -1091,17 +1091,17 @@ public function testArrayIntersectParsing(): void ]; $operator = Operator::parseOperator($array); - $this->assertEquals(Operator::TYPE_ARRAY_INTERSECT, $operator->getMethod()); - $this->assertEquals('allowed', $operator->getAttribute()); - $this->assertEquals(['admin', 'user'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_INTERSECT, $operator->getMethod()); + $this->assertSame('allowed', $operator->getAttribute()); + $this->assertSame(['admin', 'user'], $operator->getValues()); // Test parse from JSON string $json = json_encode($array); $this->assertIsString($json); $operator = Operator::parse($json); - $this->assertEquals(Operator::TYPE_ARRAY_INTERSECT, $operator->getMethod()); - $this->assertEquals('allowed', $operator->getAttribute()); - $this->assertEquals(['admin', 'user'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_INTERSECT, $operator->getMethod()); + $this->assertSame('allowed', $operator->getAttribute()); + $this->assertSame(['admin', 'user'], $operator->getValues()); } // Tests for arrayDiff() method @@ -1109,10 +1109,10 @@ public function testArrayDiff(): void { // Test basic creation $operator = Operator::arrayDiff(['remove', 'these']); - $this->assertEquals(Operator::TYPE_ARRAY_DIFF, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals(['remove', 'these'], $operator->getValues()); - $this->assertEquals('remove', $operator->getValue()); + $this->assertSame(Operator::TYPE_ARRAY_DIFF, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame(['remove', 'these'], $operator->getValues()); + $this->assertSame('remove', $operator->getValue()); // Test type checking $this->assertTrue($operator->isArrayOperation()); @@ -1126,21 +1126,21 @@ public function testArrayDiffEdgeCases(): void { // Test with empty array $operator = Operator::arrayDiff([]); - $this->assertEquals([], $operator->getValues()); + $this->assertSame([], $operator->getValues()); $this->assertNull($operator->getValue()); // Test with single value $operator = Operator::arrayDiff(['only-one']); - $this->assertEquals(['only-one'], $operator->getValues()); - $this->assertEquals('only-one', $operator->getValue()); + $this->assertSame(['only-one'], $operator->getValues()); + $this->assertSame('only-one', $operator->getValue()); // Test with numeric values $operator = Operator::arrayDiff([10, 20, 30]); - $this->assertEquals([10, 20, 30], $operator->getValues()); + $this->assertSame([10, 20, 30], $operator->getValues()); // Test with mixed types $operator = Operator::arrayDiff([false, 0, '']); - $this->assertEquals([false, 0, ''], $operator->getValues()); + $this->assertSame([false, 0, ''], $operator->getValues()); } public function testArrayDiffSerialization(): void @@ -1155,13 +1155,13 @@ public function testArrayDiffSerialization(): void 'attribute' => 'blocklist', 'values' => ['spam', 'unwanted'] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test toString $string = $operator->toString(); $this->assertJson($string); $decoded = json_decode($string, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testArrayDiffParsing(): void @@ -1174,17 +1174,17 @@ public function testArrayDiffParsing(): void ]; $operator = Operator::parseOperator($array); - $this->assertEquals(Operator::TYPE_ARRAY_DIFF, $operator->getMethod()); - $this->assertEquals('exclude', $operator->getAttribute()); - $this->assertEquals(['bad', 'invalid'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_DIFF, $operator->getMethod()); + $this->assertSame('exclude', $operator->getAttribute()); + $this->assertSame(['bad', 'invalid'], $operator->getValues()); // Test parse from JSON string $json = json_encode($array); $this->assertIsString($json); $operator = Operator::parse($json); - $this->assertEquals(Operator::TYPE_ARRAY_DIFF, $operator->getMethod()); - $this->assertEquals('exclude', $operator->getAttribute()); - $this->assertEquals(['bad', 'invalid'], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_DIFF, $operator->getMethod()); + $this->assertSame('exclude', $operator->getAttribute()); + $this->assertSame(['bad', 'invalid'], $operator->getValues()); } // Tests for arrayFilter() method @@ -1192,10 +1192,10 @@ public function testArrayFilter(): void { // Test basic creation with equals condition $operator = Operator::arrayFilter('equals', 'active'); - $this->assertEquals(Operator::TYPE_ARRAY_FILTER, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals(['equals', 'active'], $operator->getValues()); - $this->assertEquals('equals', $operator->getValue()); + $this->assertSame(Operator::TYPE_ARRAY_FILTER, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame(['equals', 'active'], $operator->getValues()); + $this->assertSame('equals', $operator->getValue()); // Test type checking $this->assertTrue($operator->isArrayOperation()); @@ -1209,43 +1209,43 @@ public function testArrayFilterConditions(): void { // Test different filter conditions $operator = Operator::arrayFilter('notEquals', 'inactive'); - $this->assertEquals(['notEquals', 'inactive'], $operator->getValues()); + $this->assertSame(['notEquals', 'inactive'], $operator->getValues()); $operator = Operator::arrayFilter('greaterThan', 100); - $this->assertEquals(['greaterThan', 100], $operator->getValues()); + $this->assertSame(['greaterThan', 100], $operator->getValues()); $operator = Operator::arrayFilter('lessThan', 50); - $this->assertEquals(['lessThan', 50], $operator->getValues()); + $this->assertSame(['lessThan', 50], $operator->getValues()); // Test null/notNull conditions (value parameter not used) $operator = Operator::arrayFilter('null'); - $this->assertEquals(['null', null], $operator->getValues()); + $this->assertSame(['null', null], $operator->getValues()); $operator = Operator::arrayFilter('notNull'); - $this->assertEquals(['notNull', null], $operator->getValues()); + $this->assertSame(['notNull', null], $operator->getValues()); // Test with explicit null value $operator = Operator::arrayFilter('null', null); - $this->assertEquals(['null', null], $operator->getValues()); + $this->assertSame(['null', null], $operator->getValues()); } public function testArrayFilterEdgeCases(): void { // Test with boolean value $operator = Operator::arrayFilter('equals', true); - $this->assertEquals(['equals', true], $operator->getValues()); + $this->assertSame(['equals', true], $operator->getValues()); // Test with zero value $operator = Operator::arrayFilter('equals', 0); - $this->assertEquals(['equals', 0], $operator->getValues()); + $this->assertSame(['equals', 0], $operator->getValues()); // Test with empty string value $operator = Operator::arrayFilter('equals', ''); - $this->assertEquals(['equals', ''], $operator->getValues()); + $this->assertSame(['equals', ''], $operator->getValues()); // Test with array value $operator = Operator::arrayFilter('equals', ['nested', 'array']); - $this->assertEquals(['equals', ['nested', 'array']], $operator->getValues()); + $this->assertSame(['equals', ['nested', 'array']], $operator->getValues()); } public function testArrayFilterSerialization(): void @@ -1260,13 +1260,13 @@ public function testArrayFilterSerialization(): void 'attribute' => 'scores', 'values' => ['greaterThan', 100] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test toString $string = $operator->toString(); $this->assertJson($string); $decoded = json_decode($string, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testArrayFilterParsing(): void @@ -1279,17 +1279,17 @@ public function testArrayFilterParsing(): void ]; $operator = Operator::parseOperator($array); - $this->assertEquals(Operator::TYPE_ARRAY_FILTER, $operator->getMethod()); - $this->assertEquals('ratings', $operator->getAttribute()); - $this->assertEquals(['lessThan', 3], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_FILTER, $operator->getMethod()); + $this->assertSame('ratings', $operator->getAttribute()); + $this->assertSame(['lessThan', 3], $operator->getValues()); // Test parse from JSON string $json = json_encode($array); $this->assertIsString($json); $operator = Operator::parse($json); - $this->assertEquals(Operator::TYPE_ARRAY_FILTER, $operator->getMethod()); - $this->assertEquals('ratings', $operator->getAttribute()); - $this->assertEquals(['lessThan', 3], $operator->getValues()); + $this->assertSame(Operator::TYPE_ARRAY_FILTER, $operator->getMethod()); + $this->assertSame('ratings', $operator->getAttribute()); + $this->assertSame(['lessThan', 3], $operator->getValues()); } // Tests for dateAddDays() method @@ -1297,10 +1297,10 @@ public function testDateAddDays(): void { // Test basic creation $operator = Operator::dateAddDays(7); - $this->assertEquals(Operator::TYPE_DATE_ADD_DAYS, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([7], $operator->getValues()); - $this->assertEquals(7, $operator->getValue()); + $this->assertSame(Operator::TYPE_DATE_ADD_DAYS, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([7], $operator->getValues()); + $this->assertSame(7, $operator->getValue()); // Test type checking $this->assertTrue($operator->isDateOperation()); @@ -1314,23 +1314,23 @@ public function testDateAddDaysEdgeCases(): void { // Test with zero days $operator = Operator::dateAddDays(0); - $this->assertEquals([0], $operator->getValues()); - $this->assertEquals(0, $operator->getValue()); + $this->assertSame([0], $operator->getValues()); + $this->assertSame(0, $operator->getValue()); // Test with negative days (should work per the docblock) $operator = Operator::dateAddDays(-5); - $this->assertEquals([-5], $operator->getValues()); - $this->assertEquals(-5, $operator->getValue()); + $this->assertSame([-5], $operator->getValues()); + $this->assertSame(-5, $operator->getValue()); // Test with large positive number $operator = Operator::dateAddDays(365); - $this->assertEquals([365], $operator->getValues()); - $this->assertEquals(365, $operator->getValue()); + $this->assertSame([365], $operator->getValues()); + $this->assertSame(365, $operator->getValue()); // Test with large negative number $operator = Operator::dateAddDays(-1000); - $this->assertEquals([-1000], $operator->getValues()); - $this->assertEquals(-1000, $operator->getValue()); + $this->assertSame([-1000], $operator->getValues()); + $this->assertSame(-1000, $operator->getValue()); } public function testDateAddDaysSerialization(): void @@ -1345,13 +1345,13 @@ public function testDateAddDaysSerialization(): void 'attribute' => 'expiresAt', 'values' => [30] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test toString $string = $operator->toString(); $this->assertJson($string); $decoded = json_decode($string, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testDateAddDaysParsing(): void @@ -1364,17 +1364,17 @@ public function testDateAddDaysParsing(): void ]; $operator = Operator::parseOperator($array); - $this->assertEquals(Operator::TYPE_DATE_ADD_DAYS, $operator->getMethod()); - $this->assertEquals('scheduledFor', $operator->getAttribute()); - $this->assertEquals([14], $operator->getValues()); + $this->assertSame(Operator::TYPE_DATE_ADD_DAYS, $operator->getMethod()); + $this->assertSame('scheduledFor', $operator->getAttribute()); + $this->assertSame([14], $operator->getValues()); // Test parse from JSON string $json = json_encode($array); $this->assertIsString($json); $operator = Operator::parse($json); - $this->assertEquals(Operator::TYPE_DATE_ADD_DAYS, $operator->getMethod()); - $this->assertEquals('scheduledFor', $operator->getAttribute()); - $this->assertEquals([14], $operator->getValues()); + $this->assertSame(Operator::TYPE_DATE_ADD_DAYS, $operator->getMethod()); + $this->assertSame('scheduledFor', $operator->getAttribute()); + $this->assertSame([14], $operator->getValues()); } public function testDateAddDaysCloning(): void @@ -1383,14 +1383,14 @@ public function testDateAddDaysCloning(): void $operator1->setAttribute('date1'); $operator2 = clone $operator1; - $this->assertEquals($operator1->getMethod(), $operator2->getMethod()); - $this->assertEquals($operator1->getAttribute(), $operator2->getAttribute()); - $this->assertEquals($operator1->getValues(), $operator2->getValues()); + $this->assertSame($operator1->getMethod(), $operator2->getMethod()); + $this->assertSame($operator1->getAttribute(), $operator2->getAttribute()); + $this->assertSame($operator1->getValues(), $operator2->getValues()); // Ensure they are different objects $operator2->setValues([20]); - $this->assertEquals([10], $operator1->getValues()); - $this->assertEquals([20], $operator2->getValues()); + $this->assertSame([10], $operator1->getValues()); + $this->assertSame([20], $operator2->getValues()); } // Tests for dateSubDays() method @@ -1398,10 +1398,10 @@ public function testDateSubDays(): void { // Test basic creation $operator = Operator::dateSubDays(3); - $this->assertEquals(Operator::TYPE_DATE_SUB_DAYS, $operator->getMethod()); - $this->assertEquals('', $operator->getAttribute()); - $this->assertEquals([3], $operator->getValues()); - $this->assertEquals(3, $operator->getValue()); + $this->assertSame(Operator::TYPE_DATE_SUB_DAYS, $operator->getMethod()); + $this->assertSame('', $operator->getAttribute()); + $this->assertSame([3], $operator->getValues()); + $this->assertSame(3, $operator->getValue()); // Test type checking $this->assertTrue($operator->isDateOperation()); @@ -1415,23 +1415,23 @@ public function testDateSubDaysEdgeCases(): void { // Test with zero days $operator = Operator::dateSubDays(0); - $this->assertEquals([0], $operator->getValues()); - $this->assertEquals(0, $operator->getValue()); + $this->assertSame([0], $operator->getValues()); + $this->assertSame(0, $operator->getValue()); // Test with single day $operator = Operator::dateSubDays(1); - $this->assertEquals([1], $operator->getValues()); - $this->assertEquals(1, $operator->getValue()); + $this->assertSame([1], $operator->getValues()); + $this->assertSame(1, $operator->getValue()); // Test with large number of days $operator = Operator::dateSubDays(90); - $this->assertEquals([90], $operator->getValues()); - $this->assertEquals(90, $operator->getValue()); + $this->assertSame([90], $operator->getValues()); + $this->assertSame(90, $operator->getValue()); // Test with very large number $operator = Operator::dateSubDays(10000); - $this->assertEquals([10000], $operator->getValues()); - $this->assertEquals(10000, $operator->getValue()); + $this->assertSame([10000], $operator->getValues()); + $this->assertSame(10000, $operator->getValue()); } public function testDateSubDaysSerialization(): void @@ -1446,13 +1446,13 @@ public function testDateSubDaysSerialization(): void 'attribute' => 'reminderDate', 'values' => [7] ]; - $this->assertEquals($expected, $array); + $this->assertSame($expected, $array); // Test toString $string = $operator->toString(); $this->assertJson($string); $decoded = json_decode($string, true); - $this->assertEquals($expected, $decoded); + $this->assertSame($expected, $decoded); } public function testDateSubDaysParsing(): void @@ -1465,17 +1465,17 @@ public function testDateSubDaysParsing(): void ]; $operator = Operator::parseOperator($array); - $this->assertEquals(Operator::TYPE_DATE_SUB_DAYS, $operator->getMethod()); - $this->assertEquals('dueDate', $operator->getAttribute()); - $this->assertEquals([5], $operator->getValues()); + $this->assertSame(Operator::TYPE_DATE_SUB_DAYS, $operator->getMethod()); + $this->assertSame('dueDate', $operator->getAttribute()); + $this->assertSame([5], $operator->getValues()); // Test parse from JSON string $json = json_encode($array); $this->assertIsString($json); $operator = Operator::parse($json); - $this->assertEquals(Operator::TYPE_DATE_SUB_DAYS, $operator->getMethod()); - $this->assertEquals('dueDate', $operator->getAttribute()); - $this->assertEquals([5], $operator->getValues()); + $this->assertSame(Operator::TYPE_DATE_SUB_DAYS, $operator->getMethod()); + $this->assertSame('dueDate', $operator->getAttribute()); + $this->assertSame([5], $operator->getValues()); } public function testDateSubDaysCloning(): void @@ -1484,14 +1484,14 @@ public function testDateSubDaysCloning(): void $operator1->setAttribute('date1'); $operator2 = clone $operator1; - $this->assertEquals($operator1->getMethod(), $operator2->getMethod()); - $this->assertEquals($operator1->getAttribute(), $operator2->getAttribute()); - $this->assertEquals($operator1->getValues(), $operator2->getValues()); + $this->assertSame($operator1->getMethod(), $operator2->getMethod()); + $this->assertSame($operator1->getAttribute(), $operator2->getAttribute()); + $this->assertSame($operator1->getValues(), $operator2->getValues()); // Ensure they are different objects $operator2->setValues([25]); - $this->assertEquals([15], $operator1->getValues()); - $this->assertEquals([25], $operator2->getValues()); + $this->assertSame([15], $operator1->getValues()); + $this->assertSame([25], $operator2->getValues()); } // Integration tests for all six new operators @@ -1528,24 +1528,24 @@ public function testExtractOperatorsWithNewOperators(): void // Check each operator type $this->assertInstanceOf(Operator::class, $operators['uniqueTags']); - $this->assertEquals(Operator::TYPE_ARRAY_UNIQUE, $operators['uniqueTags']->getMethod()); + $this->assertSame(Operator::TYPE_ARRAY_UNIQUE, $operators['uniqueTags']->getMethod()); $this->assertInstanceOf(Operator::class, $operators['commonItems']); - $this->assertEquals(Operator::TYPE_ARRAY_INTERSECT, $operators['commonItems']->getMethod()); + $this->assertSame(Operator::TYPE_ARRAY_INTERSECT, $operators['commonItems']->getMethod()); $this->assertInstanceOf(Operator::class, $operators['filteredList']); - $this->assertEquals(Operator::TYPE_ARRAY_DIFF, $operators['filteredList']->getMethod()); + $this->assertSame(Operator::TYPE_ARRAY_DIFF, $operators['filteredList']->getMethod()); $this->assertInstanceOf(Operator::class, $operators['activeUsers']); - $this->assertEquals(Operator::TYPE_ARRAY_FILTER, $operators['activeUsers']->getMethod()); + $this->assertSame(Operator::TYPE_ARRAY_FILTER, $operators['activeUsers']->getMethod()); $this->assertInstanceOf(Operator::class, $operators['expiry']); - $this->assertEquals(Operator::TYPE_DATE_ADD_DAYS, $operators['expiry']->getMethod()); + $this->assertSame(Operator::TYPE_DATE_ADD_DAYS, $operators['expiry']->getMethod()); $this->assertInstanceOf(Operator::class, $operators['reminder']); - $this->assertEquals(Operator::TYPE_DATE_SUB_DAYS, $operators['reminder']->getMethod()); + $this->assertSame(Operator::TYPE_DATE_SUB_DAYS, $operators['reminder']->getMethod()); // Check updates - $this->assertEquals(['name' => 'Regular value'], $updates); + $this->assertSame(['name' => 'Regular value'], $updates); } } diff --git a/tests/unit/PermissionTest.php b/tests/unit/PermissionTest.php index 6ca554f37..ee6bb8355 100644 --- a/tests/unit/PermissionTest.php +++ b/tests/unit/PermissionTest.php @@ -13,249 +13,249 @@ class PermissionTest extends TestCase public function testOutputFromString(): void { $permission = Permission::parse('read("any")'); - $this->assertEquals('read', $permission->getPermission()); - $this->assertEquals('any', $permission->getRole()); + $this->assertSame('read', $permission->getPermission()); + $this->assertSame('any', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('read("users")'); - $this->assertEquals('read', $permission->getPermission()); - $this->assertEquals('users', $permission->getRole()); + $this->assertSame('read', $permission->getPermission()); + $this->assertSame('users', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('read("user:123")'); - $this->assertEquals('read', $permission->getPermission()); - $this->assertEquals('user', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); + $this->assertSame('read', $permission->getPermission()); + $this->assertSame('user', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); $permission = Permission::parse('read("team:123/admin")'); - $this->assertEquals('read', $permission->getPermission()); - $this->assertEquals('team', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); - $this->assertEquals('admin', $permission->getDimension()); + $this->assertSame('read', $permission->getPermission()); + $this->assertSame('team', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); + $this->assertSame('admin', $permission->getDimension()); $permission = Permission::parse('read("guests")'); - $this->assertEquals('read', $permission->getPermission()); - $this->assertEquals('guests', $permission->getRole()); + $this->assertSame('read', $permission->getPermission()); + $this->assertSame('guests', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('create("any")'); - $this->assertEquals('create', $permission->getPermission()); - $this->assertEquals('any', $permission->getRole()); + $this->assertSame('create', $permission->getPermission()); + $this->assertSame('any', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('create("users")'); - $this->assertEquals('create', $permission->getPermission()); - $this->assertEquals('users', $permission->getRole()); + $this->assertSame('create', $permission->getPermission()); + $this->assertSame('users', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('create("user:123")'); - $this->assertEquals('create', $permission->getPermission()); - $this->assertEquals('user', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); + $this->assertSame('create', $permission->getPermission()); + $this->assertSame('user', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); $permission = Permission::parse('create("team:123/admin")'); - $this->assertEquals('create', $permission->getPermission()); - $this->assertEquals('team', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); - $this->assertEquals('admin', $permission->getDimension()); + $this->assertSame('create', $permission->getPermission()); + $this->assertSame('team', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); + $this->assertSame('admin', $permission->getDimension()); $permission = Permission::parse('create("guests")'); - $this->assertEquals('create', $permission->getPermission()); - $this->assertEquals('guests', $permission->getRole()); + $this->assertSame('create', $permission->getPermission()); + $this->assertSame('guests', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('update("any")'); - $this->assertEquals('update', $permission->getPermission()); - $this->assertEquals('any', $permission->getRole()); + $this->assertSame('update', $permission->getPermission()); + $this->assertSame('any', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('update("users")'); - $this->assertEquals('update', $permission->getPermission()); - $this->assertEquals('users', $permission->getRole()); + $this->assertSame('update', $permission->getPermission()); + $this->assertSame('users', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('update("user:123")'); - $this->assertEquals('update', $permission->getPermission()); - $this->assertEquals('user', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); + $this->assertSame('update', $permission->getPermission()); + $this->assertSame('user', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); $permission = Permission::parse('update("team:123/admin")'); - $this->assertEquals('update', $permission->getPermission()); - $this->assertEquals('team', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); - $this->assertEquals('admin', $permission->getDimension()); + $this->assertSame('update', $permission->getPermission()); + $this->assertSame('team', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); + $this->assertSame('admin', $permission->getDimension()); $permission = Permission::parse('update("guests")'); - $this->assertEquals('update', $permission->getPermission()); - $this->assertEquals('guests', $permission->getRole()); + $this->assertSame('update', $permission->getPermission()); + $this->assertSame('guests', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('delete("any")'); - $this->assertEquals('delete', $permission->getPermission()); - $this->assertEquals('any', $permission->getRole()); + $this->assertSame('delete', $permission->getPermission()); + $this->assertSame('any', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('delete("users")'); - $this->assertEquals('delete', $permission->getPermission()); - $this->assertEquals('users', $permission->getRole()); + $this->assertSame('delete', $permission->getPermission()); + $this->assertSame('users', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('delete("user:123")'); - $this->assertEquals('delete', $permission->getPermission()); - $this->assertEquals('user', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); + $this->assertSame('delete', $permission->getPermission()); + $this->assertSame('user', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); $permission = Permission::parse('delete("team:123/admin")'); - $this->assertEquals('delete', $permission->getPermission()); - $this->assertEquals('team', $permission->getRole()); - $this->assertEquals('123', $permission->getIdentifier()); - $this->assertEquals('admin', $permission->getDimension()); + $this->assertSame('delete', $permission->getPermission()); + $this->assertSame('team', $permission->getRole()); + $this->assertSame('123', $permission->getIdentifier()); + $this->assertSame('admin', $permission->getDimension()); $permission = Permission::parse('delete("guests")'); - $this->assertEquals('delete', $permission->getPermission()); - $this->assertEquals('guests', $permission->getRole()); + $this->assertSame('delete', $permission->getPermission()); + $this->assertSame('guests', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); $this->assertEmpty($permission->getDimension()); $permission = Permission::parse('read("users/verified")'); - $this->assertEquals('read', $permission->getPermission()); - $this->assertEquals('users', $permission->getRole()); + $this->assertSame('read', $permission->getPermission()); + $this->assertSame('users', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); - $this->assertEquals('verified', $permission->getDimension()); + $this->assertSame('verified', $permission->getDimension()); $permission = Permission::parse('read("users/unverified")'); - $this->assertEquals('read', $permission->getPermission()); - $this->assertEquals('users', $permission->getRole()); + $this->assertSame('read', $permission->getPermission()); + $this->assertSame('users', $permission->getRole()); $this->assertEmpty($permission->getIdentifier()); - $this->assertEquals('unverified', $permission->getDimension()); + $this->assertSame('unverified', $permission->getDimension()); } public function testInputFromParameters(): void { $permission = new Permission('read', 'any'); - $this->assertEquals('read("any")', $permission->toString()); + $this->assertSame('read("any")', $permission->toString()); $permission = new Permission('read', 'users'); - $this->assertEquals('read("users")', $permission->toString()); + $this->assertSame('read("users")', $permission->toString()); $permission = new Permission('read', 'user', '123'); - $this->assertEquals('read("user:123")', $permission->toString()); + $this->assertSame('read("user:123")', $permission->toString()); $permission = new Permission('read', 'team', '123', 'admin'); - $this->assertEquals('read("team:123/admin")', $permission->toString()); + $this->assertSame('read("team:123/admin")', $permission->toString()); $permission = new Permission('create', 'any'); - $this->assertEquals('create("any")', $permission->toString()); + $this->assertSame('create("any")', $permission->toString()); $permission = new Permission('create', 'users'); - $this->assertEquals('create("users")', $permission->toString()); + $this->assertSame('create("users")', $permission->toString()); $permission = new Permission('create', 'user', '123'); - $this->assertEquals('create("user:123")', $permission->toString()); + $this->assertSame('create("user:123")', $permission->toString()); $permission = new Permission('create', 'team', '123', 'admin'); - $this->assertEquals('create("team:123/admin")', $permission->toString()); + $this->assertSame('create("team:123/admin")', $permission->toString()); $permission = new Permission('update', 'any'); - $this->assertEquals('update("any")', $permission->toString()); + $this->assertSame('update("any")', $permission->toString()); $permission = new Permission('update', 'users'); - $this->assertEquals('update("users")', $permission->toString()); + $this->assertSame('update("users")', $permission->toString()); $permission = new Permission('update', 'user', '123'); - $this->assertEquals('update("user:123")', $permission->toString()); + $this->assertSame('update("user:123")', $permission->toString()); $permission = new Permission('update', 'team', '123', 'admin'); - $this->assertEquals('update("team:123/admin")', $permission->toString()); + $this->assertSame('update("team:123/admin")', $permission->toString()); $permission = new Permission('delete', 'any'); - $this->assertEquals('delete("any")', $permission->toString()); + $this->assertSame('delete("any")', $permission->toString()); $permission = new Permission('delete', 'users'); - $this->assertEquals('delete("users")', $permission->toString()); + $this->assertSame('delete("users")', $permission->toString()); $permission = new Permission('delete', 'user', '123'); - $this->assertEquals('delete("user:123")', $permission->toString()); + $this->assertSame('delete("user:123")', $permission->toString()); $permission = new Permission('delete', 'team', '123', 'admin'); - $this->assertEquals('delete("team:123/admin")', $permission->toString()); + $this->assertSame('delete("team:123/admin")', $permission->toString()); } public function testInputFromRoles(): void { $permission = Permission::read(Role::any()); - $this->assertEquals('read("any")', $permission); + $this->assertSame('read("any")', $permission); $permission = Permission::read(Role::users()); - $this->assertEquals('read("users")', $permission); + $this->assertSame('read("users")', $permission); $permission = Permission::read(Role::user(ID::custom('123'))); - $this->assertEquals('read("user:123")', $permission); + $this->assertSame('read("user:123")', $permission); $permission = Permission::read(Role::team(ID::custom('123'), 'admin')); - $this->assertEquals('read("team:123/admin")', $permission); + $this->assertSame('read("team:123/admin")', $permission); $permission = Permission::read(Role::guests()); - $this->assertEquals('read("guests")', $permission); + $this->assertSame('read("guests")', $permission); $permission = Permission::create(Role::any()); - $this->assertEquals('create("any")', $permission); + $this->assertSame('create("any")', $permission); $permission = Permission::create(Role::users()); - $this->assertEquals('create("users")', $permission); + $this->assertSame('create("users")', $permission); $permission = Permission::create(Role::user(ID::custom('123'))); - $this->assertEquals('create("user:123")', $permission); + $this->assertSame('create("user:123")', $permission); $permission = Permission::create(Role::team(ID::custom('123'), 'admin')); - $this->assertEquals('create("team:123/admin")', $permission); + $this->assertSame('create("team:123/admin")', $permission); $permission = Permission::create(Role::guests()); - $this->assertEquals('create("guests")', $permission); + $this->assertSame('create("guests")', $permission); $permission = Permission::update(Role::any()); - $this->assertEquals('update("any")', $permission); + $this->assertSame('update("any")', $permission); $permission = Permission::update(Role::users()); - $this->assertEquals('update("users")', $permission); + $this->assertSame('update("users")', $permission); $permission = Permission::update(Role::user(ID::custom('123'))); - $this->assertEquals('update("user:123")', $permission); + $this->assertSame('update("user:123")', $permission); $permission = Permission::update(Role::team(ID::custom('123'), 'admin')); - $this->assertEquals('update("team:123/admin")', $permission); + $this->assertSame('update("team:123/admin")', $permission); $permission = Permission::update(Role::guests()); - $this->assertEquals('update("guests")', $permission); + $this->assertSame('update("guests")', $permission); $permission = Permission::delete(Role::any()); - $this->assertEquals('delete("any")', $permission); + $this->assertSame('delete("any")', $permission); $permission = Permission::delete(Role::users()); - $this->assertEquals('delete("users")', $permission); + $this->assertSame('delete("users")', $permission); $permission = Permission::delete(Role::user(ID::custom('123'))); - $this->assertEquals('delete("user:123")', $permission); + $this->assertSame('delete("user:123")', $permission); $permission = Permission::delete(Role::team(ID::custom('123'), 'admin')); - $this->assertEquals('delete("team:123/admin")', $permission); + $this->assertSame('delete("team:123/admin")', $permission); $permission = Permission::delete(Role::guests()); - $this->assertEquals('delete("guests")', $permission); + $this->assertSame('delete("guests")', $permission); $permission = Permission::write(Role::any()); - $this->assertEquals('write("any")', $permission); + $this->assertSame('write("any")', $permission); } public function testInvalidFormats(): void @@ -264,28 +264,28 @@ public function testInvalidFormats(): void Permission::parse('read'); $this->fail('Failed to throw Exception'); } catch (\Exception $e) { - $this->assertEquals('Invalid permission string format: "read".', $e->getMessage()); + $this->assertSame('Invalid permission string format: "read".', $e->getMessage()); } try { Permission::parse('read(("any")'); $this->fail('Failed to throw Exception'); } catch (\Exception $e) { - $this->assertEquals('Invalid permission type: "read(".', $e->getMessage()); + $this->assertSame('Invalid permission type: "read(".', $e->getMessage()); } try { Permission::parse('read("users/un/verified")'); $this->fail('Failed to throw Exception'); } catch (\Exception $e) { - $this->assertEquals('Only one dimension can be provided', $e->getMessage()); + $this->assertSame('Only one dimension can be provided', $e->getMessage()); } try { Permission::parse('read("users/")'); $this->fail('Failed to throw Exception'); } catch (\Exception $e) { - $this->assertEquals('Dimension must not be empty', $e->getMessage()); + $this->assertSame('Dimension must not be empty', $e->getMessage()); } } @@ -296,10 +296,10 @@ public function testAggregation(): void { $permissions = ['write("any")']; $parsed = Permission::aggregate($permissions); - $this->assertEquals(['create("any")', 'update("any")', 'delete("any")'], $parsed); + $this->assertSame(['create("any")', 'update("any")', 'delete("any")'], $parsed); $parsed = Permission::aggregate($permissions, [Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE]); - $this->assertEquals(['update("any")', 'delete("any")'], $parsed); + $this->assertSame(['update("any")', 'delete("any")'], $parsed); $permissions = [ 'read("any")', @@ -311,7 +311,7 @@ public function testAggregation(): void ]; $parsed = Permission::aggregate($permissions, Database::PERMISSIONS); - $this->assertEquals([ + $this->assertSame([ 'read("any")', 'read("user:123")', 'create("user:123")', diff --git a/tests/unit/QueryTest.php b/tests/unit/QueryTest.php index e23193ecb..3812cfd9d 100644 --- a/tests/unit/QueryTest.php +++ b/tests/unit/QueryTest.php @@ -21,161 +21,161 @@ public function testCreate(): void { $query = new Query(Query::TYPE_EQUAL, 'title', ['Iron Man']); - $this->assertEquals(Query::TYPE_EQUAL, $query->getMethod()); - $this->assertEquals('title', $query->getAttribute()); - $this->assertEquals('Iron Man', $query->getValues()[0]); + $this->assertSame(Query::TYPE_EQUAL, $query->getMethod()); + $this->assertSame('title', $query->getAttribute()); + $this->assertSame('Iron Man', $query->getValues()[0]); $query = new Query(Query::TYPE_ORDER_DESC, 'score'); - $this->assertEquals(Query::TYPE_ORDER_DESC, $query->getMethod()); - $this->assertEquals('score', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame(Query::TYPE_ORDER_DESC, $query->getMethod()); + $this->assertSame('score', $query->getAttribute()); + $this->assertSame([], $query->getValues()); $query = new Query(Query::TYPE_LIMIT, values: [10]); - $this->assertEquals(Query::TYPE_LIMIT, $query->getMethod()); - $this->assertEquals('', $query->getAttribute()); - $this->assertEquals(10, $query->getValues()[0]); + $this->assertSame(Query::TYPE_LIMIT, $query->getMethod()); + $this->assertSame('', $query->getAttribute()); + $this->assertSame(10, $query->getValues()[0]); $query = Query::equal('title', ['Iron Man']); - $this->assertEquals(Query::TYPE_EQUAL, $query->getMethod()); - $this->assertEquals('title', $query->getAttribute()); - $this->assertEquals('Iron Man', $query->getValues()[0]); + $this->assertSame(Query::TYPE_EQUAL, $query->getMethod()); + $this->assertSame('title', $query->getAttribute()); + $this->assertSame('Iron Man', $query->getValues()[0]); $query = Query::greaterThan('score', 10); - $this->assertEquals(Query::TYPE_GREATER, $query->getMethod()); - $this->assertEquals('score', $query->getAttribute()); - $this->assertEquals(10, $query->getValues()[0]); + $this->assertSame(Query::TYPE_GREATER, $query->getMethod()); + $this->assertSame('score', $query->getAttribute()); + $this->assertSame(10, $query->getValues()[0]); // Test vector queries $vector = [0.1, 0.2, 0.3]; $query = Query::vectorDot('embedding', $vector); - $this->assertEquals(Query::TYPE_VECTOR_DOT, $query->getMethod()); - $this->assertEquals('embedding', $query->getAttribute()); - $this->assertEquals([$vector], $query->getValues()); + $this->assertSame(Query::TYPE_VECTOR_DOT, $query->getMethod()); + $this->assertSame('embedding', $query->getAttribute()); + $this->assertSame([$vector], $query->getValues()); $query = Query::vectorCosine('embedding', $vector); - $this->assertEquals(Query::TYPE_VECTOR_COSINE, $query->getMethod()); - $this->assertEquals('embedding', $query->getAttribute()); - $this->assertEquals([$vector], $query->getValues()); + $this->assertSame(Query::TYPE_VECTOR_COSINE, $query->getMethod()); + $this->assertSame('embedding', $query->getAttribute()); + $this->assertSame([$vector], $query->getValues()); $query = Query::vectorEuclidean('embedding', $vector); - $this->assertEquals(Query::TYPE_VECTOR_EUCLIDEAN, $query->getMethod()); - $this->assertEquals('embedding', $query->getAttribute()); - $this->assertEquals([$vector], $query->getValues()); + $this->assertSame(Query::TYPE_VECTOR_EUCLIDEAN, $query->getMethod()); + $this->assertSame('embedding', $query->getAttribute()); + $this->assertSame([$vector], $query->getValues()); $query = Query::search('search', 'John Doe'); - $this->assertEquals(Query::TYPE_SEARCH, $query->getMethod()); - $this->assertEquals('search', $query->getAttribute()); - $this->assertEquals('John Doe', $query->getValues()[0]); + $this->assertSame(Query::TYPE_SEARCH, $query->getMethod()); + $this->assertSame('search', $query->getAttribute()); + $this->assertSame('John Doe', $query->getValues()[0]); $query = Query::orderAsc('score'); - $this->assertEquals(Query::TYPE_ORDER_ASC, $query->getMethod()); - $this->assertEquals('score', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame(Query::TYPE_ORDER_ASC, $query->getMethod()); + $this->assertSame('score', $query->getAttribute()); + $this->assertSame([], $query->getValues()); $query = Query::limit(10); - $this->assertEquals(Query::TYPE_LIMIT, $query->getMethod()); - $this->assertEquals('', $query->getAttribute()); - $this->assertEquals([10], $query->getValues()); + $this->assertSame(Query::TYPE_LIMIT, $query->getMethod()); + $this->assertSame('', $query->getAttribute()); + $this->assertSame([10], $query->getValues()); $cursor = new Document(); $query = Query::cursorAfter($cursor); - $this->assertEquals(Query::TYPE_CURSOR_AFTER, $query->getMethod()); - $this->assertEquals('', $query->getAttribute()); - $this->assertEquals([$cursor], $query->getValues()); + $this->assertSame(Query::TYPE_CURSOR_AFTER, $query->getMethod()); + $this->assertSame('', $query->getAttribute()); + $this->assertSame([$cursor], $query->getValues()); $query = Query::isNull('title'); - $this->assertEquals(Query::TYPE_IS_NULL, $query->getMethod()); - $this->assertEquals('title', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame(Query::TYPE_IS_NULL, $query->getMethod()); + $this->assertSame('title', $query->getAttribute()); + $this->assertSame([], $query->getValues()); $query = Query::isNotNull('title'); - $this->assertEquals(Query::TYPE_IS_NOT_NULL, $query->getMethod()); - $this->assertEquals('title', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame(Query::TYPE_IS_NOT_NULL, $query->getMethod()); + $this->assertSame('title', $query->getAttribute()); + $this->assertSame([], $query->getValues()); $query = Query::notContains('tags', ['test', 'example']); - $this->assertEquals(Query::TYPE_NOT_CONTAINS, $query->getMethod()); - $this->assertEquals('tags', $query->getAttribute()); - $this->assertEquals(['test', 'example'], $query->getValues()); + $this->assertSame(Query::TYPE_NOT_CONTAINS, $query->getMethod()); + $this->assertSame('tags', $query->getAttribute()); + $this->assertSame(['test', 'example'], $query->getValues()); $query = Query::notSearch('content', 'keyword'); - $this->assertEquals(Query::TYPE_NOT_SEARCH, $query->getMethod()); - $this->assertEquals('content', $query->getAttribute()); - $this->assertEquals(['keyword'], $query->getValues()); + $this->assertSame(Query::TYPE_NOT_SEARCH, $query->getMethod()); + $this->assertSame('content', $query->getAttribute()); + $this->assertSame(['keyword'], $query->getValues()); $query = Query::notStartsWith('title', 'prefix'); - $this->assertEquals(Query::TYPE_NOT_STARTS_WITH, $query->getMethod()); - $this->assertEquals('title', $query->getAttribute()); - $this->assertEquals(['prefix'], $query->getValues()); + $this->assertSame(Query::TYPE_NOT_STARTS_WITH, $query->getMethod()); + $this->assertSame('title', $query->getAttribute()); + $this->assertSame(['prefix'], $query->getValues()); $query = Query::notEndsWith('url', '.html'); - $this->assertEquals(Query::TYPE_NOT_ENDS_WITH, $query->getMethod()); - $this->assertEquals('url', $query->getAttribute()); - $this->assertEquals(['.html'], $query->getValues()); + $this->assertSame(Query::TYPE_NOT_ENDS_WITH, $query->getMethod()); + $this->assertSame('url', $query->getAttribute()); + $this->assertSame(['.html'], $query->getValues()); $query = Query::notBetween('score', 10, 20); - $this->assertEquals(Query::TYPE_NOT_BETWEEN, $query->getMethod()); - $this->assertEquals('score', $query->getAttribute()); - $this->assertEquals([10, 20], $query->getValues()); + $this->assertSame(Query::TYPE_NOT_BETWEEN, $query->getMethod()); + $this->assertSame('score', $query->getAttribute()); + $this->assertSame([10, 20], $query->getValues()); // Test new date query wrapper methods $query = Query::createdBefore('2023-01-01T00:00:00.000Z'); - $this->assertEquals(Query::TYPE_LESSER, $query->getMethod()); - $this->assertEquals('$createdAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z'], $query->getValues()); + $this->assertSame(Query::TYPE_LESSER, $query->getMethod()); + $this->assertSame('$createdAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z'], $query->getValues()); $query = Query::createdAfter('2023-01-01T00:00:00.000Z'); - $this->assertEquals(Query::TYPE_GREATER, $query->getMethod()); - $this->assertEquals('$createdAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z'], $query->getValues()); + $this->assertSame(Query::TYPE_GREATER, $query->getMethod()); + $this->assertSame('$createdAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z'], $query->getValues()); $query = Query::updatedBefore('2023-12-31T23:59:59.999Z'); - $this->assertEquals(Query::TYPE_LESSER, $query->getMethod()); - $this->assertEquals('$updatedAt', $query->getAttribute()); - $this->assertEquals(['2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame(Query::TYPE_LESSER, $query->getMethod()); + $this->assertSame('$updatedAt', $query->getAttribute()); + $this->assertSame(['2023-12-31T23:59:59.999Z'], $query->getValues()); $query = Query::updatedAfter('2023-12-31T23:59:59.999Z'); - $this->assertEquals(Query::TYPE_GREATER, $query->getMethod()); - $this->assertEquals('$updatedAt', $query->getAttribute()); - $this->assertEquals(['2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame(Query::TYPE_GREATER, $query->getMethod()); + $this->assertSame('$updatedAt', $query->getAttribute()); + $this->assertSame(['2023-12-31T23:59:59.999Z'], $query->getValues()); $query = Query::createdBetween('2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'); - $this->assertEquals(Query::TYPE_BETWEEN, $query->getMethod()); - $this->assertEquals('$createdAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame(Query::TYPE_BETWEEN, $query->getMethod()); + $this->assertSame('$createdAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); $query = Query::updatedBetween('2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'); - $this->assertEquals(Query::TYPE_BETWEEN, $query->getMethod()); - $this->assertEquals('$updatedAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame(Query::TYPE_BETWEEN, $query->getMethod()); + $this->assertSame('$updatedAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); // Test orderRandom query $query = Query::orderRandom(); - $this->assertEquals(Query::TYPE_ORDER_RANDOM, $query->getMethod()); - $this->assertEquals('', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame(Query::TYPE_ORDER_RANDOM, $query->getMethod()); + $this->assertSame('', $query->getAttribute()); + $this->assertSame([], $query->getValues()); } /** @@ -186,164 +186,164 @@ public function testParse(): void { $jsonString = Query::equal('title', ['Iron Man'])->toString(); $query = Query::parse($jsonString); - $this->assertEquals('{"method":"equal","attribute":"title","values":["Iron Man"]}', $jsonString); - $this->assertEquals('equal', $query->getMethod()); - $this->assertEquals('title', $query->getAttribute()); - $this->assertEquals('Iron Man', $query->getValues()[0]); + $this->assertSame('{"method":"equal","attribute":"title","values":["Iron Man"]}', $jsonString); + $this->assertSame('equal', $query->getMethod()); + $this->assertSame('title', $query->getAttribute()); + $this->assertSame('Iron Man', $query->getValues()[0]); $query = Query::parse(Query::lessThan('year', 2001)->toString()); - $this->assertEquals('lessThan', $query->getMethod()); - $this->assertEquals('year', $query->getAttribute()); - $this->assertEquals(2001, $query->getValues()[0]); + $this->assertSame('lessThan', $query->getMethod()); + $this->assertSame('year', $query->getAttribute()); + $this->assertSame(2001, $query->getValues()[0]); $query = Query::parse(Query::equal('published', [true])->toString()); - $this->assertEquals('equal', $query->getMethod()); - $this->assertEquals('published', $query->getAttribute()); + $this->assertSame('equal', $query->getMethod()); + $this->assertSame('published', $query->getAttribute()); $this->assertTrue($query->getValues()[0]); $query = Query::parse(Query::equal('published', [false])->toString()); - $this->assertEquals('equal', $query->getMethod()); - $this->assertEquals('published', $query->getAttribute()); + $this->assertSame('equal', $query->getMethod()); + $this->assertSame('published', $query->getAttribute()); $this->assertFalse($query->getValues()[0]); $query = Query::parse(Query::equal('actors', [' Johnny Depp ', ' Brad Pitt', 'Al Pacino '])->toString()); - $this->assertEquals('equal', $query->getMethod()); - $this->assertEquals('actors', $query->getAttribute()); - $this->assertEquals(' Johnny Depp ', $query->getValues()[0]); - $this->assertEquals(' Brad Pitt', $query->getValues()[1]); - $this->assertEquals('Al Pacino ', $query->getValues()[2]); + $this->assertSame('equal', $query->getMethod()); + $this->assertSame('actors', $query->getAttribute()); + $this->assertSame(' Johnny Depp ', $query->getValues()[0]); + $this->assertSame(' Brad Pitt', $query->getValues()[1]); + $this->assertSame('Al Pacino ', $query->getValues()[2]); $query = Query::parse(Query::equal('actors', ['Brad Pitt', 'Johnny Depp'])->toString()); - $this->assertEquals('equal', $query->getMethod()); - $this->assertEquals('actors', $query->getAttribute()); - $this->assertEquals('Brad Pitt', $query->getValues()[0]); - $this->assertEquals('Johnny Depp', $query->getValues()[1]); + $this->assertSame('equal', $query->getMethod()); + $this->assertSame('actors', $query->getAttribute()); + $this->assertSame('Brad Pitt', $query->getValues()[0]); + $this->assertSame('Johnny Depp', $query->getValues()[1]); $query = Query::parse(Query::contains('writers', ['Tim O\'Reilly'])->toString()); - $this->assertEquals('contains', $query->getMethod()); - $this->assertEquals('writers', $query->getAttribute()); - $this->assertEquals('Tim O\'Reilly', $query->getValues()[0]); + $this->assertSame('contains', $query->getMethod()); + $this->assertSame('writers', $query->getAttribute()); + $this->assertSame('Tim O\'Reilly', $query->getValues()[0]); $query = Query::parse(Query::greaterThan('score', 8.5)->toString()); - $this->assertEquals('greaterThan', $query->getMethod()); - $this->assertEquals('score', $query->getAttribute()); - $this->assertEquals(8.5, $query->getValues()[0]); + $this->assertSame('greaterThan', $query->getMethod()); + $this->assertSame('score', $query->getAttribute()); + $this->assertSame(8.5, $query->getValues()[0]); $query = Query::parse(Query::notContains('tags', ['unwanted', 'spam'])->toString()); - $this->assertEquals('notContains', $query->getMethod()); - $this->assertEquals('tags', $query->getAttribute()); - $this->assertEquals(['unwanted', 'spam'], $query->getValues()); + $this->assertSame('notContains', $query->getMethod()); + $this->assertSame('tags', $query->getAttribute()); + $this->assertSame(['unwanted', 'spam'], $query->getValues()); $query = Query::parse(Query::notSearch('content', 'unwanted content')->toString()); - $this->assertEquals('notSearch', $query->getMethod()); - $this->assertEquals('content', $query->getAttribute()); - $this->assertEquals(['unwanted content'], $query->getValues()); + $this->assertSame('notSearch', $query->getMethod()); + $this->assertSame('content', $query->getAttribute()); + $this->assertSame(['unwanted content'], $query->getValues()); $query = Query::parse(Query::notStartsWith('title', 'temp')->toString()); - $this->assertEquals('notStartsWith', $query->getMethod()); - $this->assertEquals('title', $query->getAttribute()); - $this->assertEquals(['temp'], $query->getValues()); + $this->assertSame('notStartsWith', $query->getMethod()); + $this->assertSame('title', $query->getAttribute()); + $this->assertSame(['temp'], $query->getValues()); $query = Query::parse(Query::notEndsWith('filename', '.tmp')->toString()); - $this->assertEquals('notEndsWith', $query->getMethod()); - $this->assertEquals('filename', $query->getAttribute()); - $this->assertEquals(['.tmp'], $query->getValues()); + $this->assertSame('notEndsWith', $query->getMethod()); + $this->assertSame('filename', $query->getAttribute()); + $this->assertSame(['.tmp'], $query->getValues()); $query = Query::parse(Query::notBetween('score', 0, 50)->toString()); - $this->assertEquals('notBetween', $query->getMethod()); - $this->assertEquals('score', $query->getAttribute()); - $this->assertEquals([0, 50], $query->getValues()); + $this->assertSame('notBetween', $query->getMethod()); + $this->assertSame('score', $query->getAttribute()); + $this->assertSame([0, 50], $query->getValues()); $query = Query::parse(Query::notEqual('director', 'null')->toString()); - $this->assertEquals('notEqual', $query->getMethod()); - $this->assertEquals('director', $query->getAttribute()); - $this->assertEquals('null', $query->getValues()[0]); + $this->assertSame('notEqual', $query->getMethod()); + $this->assertSame('director', $query->getAttribute()); + $this->assertSame('null', $query->getValues()[0]); $query = Query::parse(Query::isNull('director')->toString()); - $this->assertEquals('isNull', $query->getMethod()); - $this->assertEquals('director', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame('isNull', $query->getMethod()); + $this->assertSame('director', $query->getAttribute()); + $this->assertSame([], $query->getValues()); $query = Query::parse(Query::isNotNull('director')->toString()); - $this->assertEquals('isNotNull', $query->getMethod()); - $this->assertEquals('director', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame('isNotNull', $query->getMethod()); + $this->assertSame('director', $query->getAttribute()); + $this->assertSame([], $query->getValues()); $query = Query::parse(Query::startsWith('director', 'Quentin')->toString()); - $this->assertEquals('startsWith', $query->getMethod()); - $this->assertEquals('director', $query->getAttribute()); - $this->assertEquals(['Quentin'], $query->getValues()); + $this->assertSame('startsWith', $query->getMethod()); + $this->assertSame('director', $query->getAttribute()); + $this->assertSame(['Quentin'], $query->getValues()); $query = Query::parse(Query::endsWith('director', 'Tarantino')->toString()); - $this->assertEquals('endsWith', $query->getMethod()); - $this->assertEquals('director', $query->getAttribute()); - $this->assertEquals(['Tarantino'], $query->getValues()); + $this->assertSame('endsWith', $query->getMethod()); + $this->assertSame('director', $query->getAttribute()); + $this->assertSame(['Tarantino'], $query->getValues()); $query = Query::parse(Query::select(['title', 'director'])->toString()); - $this->assertEquals('select', $query->getMethod()); - $this->assertEquals(null, $query->getAttribute()); - $this->assertEquals(['title', 'director'], $query->getValues()); + $this->assertSame('select', $query->getMethod()); + $this->assertSame(null, $query->getAttribute()); + $this->assertSame(['title', 'director'], $query->getValues()); // Test new date query wrapper methods parsing $query = Query::parse(Query::createdBefore('2023-01-01T00:00:00.000Z')->toString()); - $this->assertEquals('lessThan', $query->getMethod()); - $this->assertEquals('$createdAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z'], $query->getValues()); + $this->assertSame('lessThan', $query->getMethod()); + $this->assertSame('$createdAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z'], $query->getValues()); $query = Query::parse(Query::createdAfter('2023-01-01T00:00:00.000Z')->toString()); - $this->assertEquals('greaterThan', $query->getMethod()); - $this->assertEquals('$createdAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z'], $query->getValues()); + $this->assertSame('greaterThan', $query->getMethod()); + $this->assertSame('$createdAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z'], $query->getValues()); $query = Query::parse(Query::updatedBefore('2023-12-31T23:59:59.999Z')->toString()); - $this->assertEquals('lessThan', $query->getMethod()); - $this->assertEquals('$updatedAt', $query->getAttribute()); - $this->assertEquals(['2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame('lessThan', $query->getMethod()); + $this->assertSame('$updatedAt', $query->getAttribute()); + $this->assertSame(['2023-12-31T23:59:59.999Z'], $query->getValues()); $query = Query::parse(Query::updatedAfter('2023-12-31T23:59:59.999Z')->toString()); - $this->assertEquals('greaterThan', $query->getMethod()); - $this->assertEquals('$updatedAt', $query->getAttribute()); - $this->assertEquals(['2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame('greaterThan', $query->getMethod()); + $this->assertSame('$updatedAt', $query->getAttribute()); + $this->assertSame(['2023-12-31T23:59:59.999Z'], $query->getValues()); $query = Query::parse(Query::createdBetween('2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z')->toString()); - $this->assertEquals('between', $query->getMethod()); - $this->assertEquals('$createdAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame('between', $query->getMethod()); + $this->assertSame('$createdAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); $query = Query::parse(Query::updatedBetween('2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z')->toString()); - $this->assertEquals('between', $query->getMethod()); - $this->assertEquals('$updatedAt', $query->getAttribute()); - $this->assertEquals(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); + $this->assertSame('between', $query->getMethod()); + $this->assertSame('$updatedAt', $query->getAttribute()); + $this->assertSame(['2023-01-01T00:00:00.000Z', '2023-12-31T23:59:59.999Z'], $query->getValues()); $query = Query::parse(Query::between('age', 15, 18)->toString()); - $this->assertEquals('between', $query->getMethod()); - $this->assertEquals('age', $query->getAttribute()); - $this->assertEquals([15, 18], $query->getValues()); + $this->assertSame('between', $query->getMethod()); + $this->assertSame('age', $query->getAttribute()); + $this->assertSame([15, 18], $query->getValues()); $query = Query::parse(Query::between('lastUpdate', 'DATE1', 'DATE2')->toString()); - $this->assertEquals('between', $query->getMethod()); - $this->assertEquals('lastUpdate', $query->getAttribute()); - $this->assertEquals(['DATE1', 'DATE2'], $query->getValues()); + $this->assertSame('between', $query->getMethod()); + $this->assertSame('lastUpdate', $query->getAttribute()); + $this->assertSame(['DATE1', 'DATE2'], $query->getValues()); $query = Query::parse(Query::equal('attr', [1])->toString()); $this->assertCount(1, $query->getValues()); - $this->assertEquals('attr', $query->getAttribute()); - $this->assertEquals([1], $query->getValues()); + $this->assertSame('attr', $query->getAttribute()); + $this->assertSame([1], $query->getValues()); $query = Query::parse(Query::equal('attr', [0])->toString()); $this->assertCount(1, $query->getValues()); - $this->assertEquals('attr', $query->getAttribute()); - $this->assertEquals([0], $query->getValues()); + $this->assertSame('attr', $query->getAttribute()); + $this->assertSame([0], $query->getValues()); $query = Query::parse(Query::equal('1', ['[Hello] World'])->toString()); $this->assertCount(1, $query->getValues()); - $this->assertEquals('1', $query->getAttribute()); - $this->assertEquals(['[Hello] World'], $query->getValues()); + $this->assertSame('1', $query->getAttribute()); + $this->assertSame(['[Hello] World'], $query->getValues()); $query = Query::parse(Query::equal('1', ['Hello /\\ World'])->toString()); $this->assertCount(1, $query->getValues()); - $this->assertEquals(1, $query->getAttribute()); - $this->assertEquals(['Hello /\ World'], $query->getValues()); + $this->assertSame(1, $query->getAttribute()); + $this->assertSame(['Hello /\ World'], $query->getValues()); $json = Query::or([ Query::equal('actors', ['Brad Pitt']), @@ -355,44 +355,44 @@ public function testParse(): void /** @var array $queries */ $queries = $query->getValues(); $this->assertCount(2, $query->getValues()); - $this->assertEquals(Query::TYPE_OR, $query->getMethod()); - $this->assertEquals(Query::TYPE_EQUAL, $queries[0]->getMethod()); - $this->assertEquals('actors', $queries[0]->getAttribute()); - $this->assertEquals($json, '{"method":"or","values":[{"method":"equal","attribute":"actors","values":["Brad Pitt"]},{"method":"equal","attribute":"actors","values":["Johnny Depp"]}]}'); + $this->assertSame(Query::TYPE_OR, $query->getMethod()); + $this->assertSame(Query::TYPE_EQUAL, $queries[0]->getMethod()); + $this->assertSame('actors', $queries[0]->getAttribute()); + $this->assertSame($json, '{"method":"or","values":[{"method":"equal","attribute":"actors","values":["Brad Pitt"]},{"method":"equal","attribute":"actors","values":["Johnny Depp"]}]}'); try { Query::parse('{"method":["equal"],"attribute":["title"],"values":["test"]}'); $this->fail('Failed to throw exception'); } catch (QueryException $e) { - $this->assertEquals('Invalid query method. Must be a string, got array', $e->getMessage()); + $this->assertSame('Invalid query method. Must be a string, got array', $e->getMessage()); } try { Query::parse('{"method":"equal","attribute":["title"],"values":["test"]}'); $this->fail('Failed to throw exception'); } catch (QueryException $e) { - $this->assertEquals('Invalid query attribute. Must be a string, got array', $e->getMessage()); + $this->assertSame('Invalid query attribute. Must be a string, got array', $e->getMessage()); } try { Query::parse('{"method":"equal","attribute":"title","values":"test"}'); $this->fail('Failed to throw exception'); } catch (QueryException $e) { - $this->assertEquals('Invalid query values. Must be an array, got string', $e->getMessage()); + $this->assertSame('Invalid query values. Must be an array, got string', $e->getMessage()); } try { Query::parse('false'); $this->fail('Failed to throw exception'); } catch (QueryException $e) { - $this->assertEquals('Invalid query. Must be an array, got boolean', $e->getMessage()); + $this->assertSame('Invalid query. Must be an array, got boolean', $e->getMessage()); } // Test orderRandom query parsing $query = Query::parse(Query::orderRandom()->toString()); - $this->assertEquals('orderRandom', $query->getMethod()); - $this->assertEquals('', $query->getAttribute()); - $this->assertEquals([], $query->getValues()); + $this->assertSame('orderRandom', $query->getMethod()); + $this->assertSame('', $query->getAttribute()); + $this->assertSame([], $query->getValues()); } public function testIsMethod(): void diff --git a/tests/unit/RoleTest.php b/tests/unit/RoleTest.php index c16bbf5a7..3c734c3ea 100644 --- a/tests/unit/RoleTest.php +++ b/tests/unit/RoleTest.php @@ -11,108 +11,108 @@ class RoleTest extends TestCase public function testOutputFromString(): void { $role = Role::parse('any'); - $this->assertEquals('any', $role->getRole()); + $this->assertSame('any', $role->getRole()); $this->assertEmpty($role->getIdentifier()); $this->assertEmpty($role->getDimension()); $role = Role::parse('guests'); - $this->assertEquals('guests', $role->getRole()); + $this->assertSame('guests', $role->getRole()); $this->assertEmpty($role->getIdentifier()); $this->assertEmpty($role->getDimension()); $role = Role::parse('users'); - $this->assertEquals('users', $role->getRole()); + $this->assertSame('users', $role->getRole()); $this->assertEmpty($role->getIdentifier()); $this->assertEmpty($role->getDimension()); $role = Role::parse('user:123'); - $this->assertEquals('user', $role->getRole()); - $this->assertEquals('123', $role->getIdentifier()); + $this->assertSame('user', $role->getRole()); + $this->assertSame('123', $role->getIdentifier()); $this->assertEmpty($role->getDimension()); $role = Role::parse('team:123'); - $this->assertEquals('team', $role->getRole()); - $this->assertEquals('123', $role->getIdentifier()); + $this->assertSame('team', $role->getRole()); + $this->assertSame('123', $role->getIdentifier()); $this->assertEmpty($role->getDimension()); $role = Role::parse('team:123/456'); - $this->assertEquals('team', $role->getRole()); - $this->assertEquals('123', $role->getIdentifier()); - $this->assertEquals('456', $role->getDimension()); + $this->assertSame('team', $role->getRole()); + $this->assertSame('123', $role->getIdentifier()); + $this->assertSame('456', $role->getDimension()); $role = Role::parse('user:123/verified'); - $this->assertEquals('user', $role->getRole()); - $this->assertEquals('123', $role->getIdentifier()); - $this->assertEquals('verified', $role->getDimension()); + $this->assertSame('user', $role->getRole()); + $this->assertSame('123', $role->getIdentifier()); + $this->assertSame('verified', $role->getDimension()); $role = Role::parse('users/verified'); - $this->assertEquals('users', $role->getRole()); + $this->assertSame('users', $role->getRole()); $this->assertEmpty($role->getIdentifier()); - $this->assertEquals('verified', $role->getDimension()); + $this->assertSame('verified', $role->getDimension()); $role = Role::parse('label:vip'); - $this->assertEquals('label', $role->getRole()); - $this->assertEquals('vip', $role->getIdentifier()); + $this->assertSame('label', $role->getRole()); + $this->assertSame('vip', $role->getIdentifier()); $this->assertEmpty($role->getDimension()); } public function testInputFromParameters(): void { $role = new Role('any'); - $this->assertEquals('any', $role->toString()); + $this->assertSame('any', $role->toString()); $role = new Role('guests'); - $this->assertEquals('guests', $role->toString()); + $this->assertSame('guests', $role->toString()); $role = new Role('users'); - $this->assertEquals('users', $role->toString()); + $this->assertSame('users', $role->toString()); $role = new Role('user', '123'); - $this->assertEquals('user:123', $role->toString()); + $this->assertSame('user:123', $role->toString()); $role = new Role('team', '123'); - $this->assertEquals('team:123', $role->toString()); + $this->assertSame('team:123', $role->toString()); $role = new Role('team', '123', '456'); - $this->assertEquals('team:123/456', $role->toString()); + $this->assertSame('team:123/456', $role->toString()); $role = new Role('label', 'vip'); - $this->assertEquals('label:vip', $role->toString()); + $this->assertSame('label:vip', $role->toString()); } public function testInputFromRoles(): void { $role = Role::any(); - $this->assertEquals('any', $role->toString()); + $this->assertSame('any', $role->toString()); $role = Role::guests(); - $this->assertEquals('guests', $role->toString()); + $this->assertSame('guests', $role->toString()); $role = Role::users(); - $this->assertEquals('users', $role->toString()); + $this->assertSame('users', $role->toString()); $role = Role::user(ID::custom('123')); - $this->assertEquals('user:123', $role->toString()); + $this->assertSame('user:123', $role->toString()); $role = Role::team(ID::custom('123')); - $this->assertEquals('team:123', $role->toString()); + $this->assertSame('team:123', $role->toString()); $role = Role::team(ID::custom('123'), '456'); - $this->assertEquals('team:123/456', $role->toString()); + $this->assertSame('team:123/456', $role->toString()); $role = Role::label('vip'); - $this->assertEquals('label:vip', $role->toString()); + $this->assertSame('label:vip', $role->toString()); } public function testInputFromID(): void { $role = Role::user(ID::custom('123')); - $this->assertEquals('user:123', $role->toString()); + $this->assertSame('user:123', $role->toString()); $role = Role::team(ID::custom('123')); - $this->assertEquals('team:123', $role->toString()); + $this->assertSame('team:123', $role->toString()); $role = Role::team(ID::custom('123'), '456'); - $this->assertEquals('team:123/456', $role->toString()); + $this->assertSame('team:123/456', $role->toString()); } } diff --git a/tests/unit/Validator/AuthorizationTest.php b/tests/unit/Validator/AuthorizationTest.php index e8685549e..edfd431f1 100644 --- a/tests/unit/Validator/AuthorizationTest.php +++ b/tests/unit/Validator/AuthorizationTest.php @@ -42,49 +42,49 @@ public function testValues(): void $object = $this->authorization; - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, [])), false); - $this->assertEquals($object->getDescription(), 'No permissions provided for action \'read\''); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, [])), false); + $this->assertSame($object->getDescription(), 'No permissions provided for action \'read\''); $this->authorization->addRole(Role::user('456')->toString()); $this->authorization->addRole(Role::user('123')->toString()); - $this->assertEquals($this->authorization->hasRole(Role::user('456')->toString()), true); - $this->assertEquals($this->authorization->hasRole(Role::user('457')->toString()), false); - $this->assertEquals($this->authorization->hasRole(''), false); - $this->assertEquals($this->authorization->hasRole(Role::any()->toString()), true); + $this->assertSame($this->authorization->hasRole(Role::user('456')->toString()), true); + $this->assertSame($this->authorization->hasRole(Role::user('457')->toString()), false); + $this->assertSame($this->authorization->hasRole(''), false); + $this->assertSame($this->authorization->hasRole(Role::any()->toString()), true); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); $this->authorization->cleanRoles(); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); $this->authorization->addRole(Role::team('123')->toString()); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); $this->authorization->cleanRoles(); $this->authorization->disable(); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); $this->authorization->reset(); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); $this->authorization->setDefaultStatus(false); $this->authorization->disable(); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); $this->authorization->reset(); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), true); $this->authorization->enable(); - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); $this->authorization->addRole('textX'); @@ -95,32 +95,32 @@ public function testValues(): void $this->assertNotContains('textX', $this->authorization->getRoles()); // Test skip method - $this->assertEquals($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); - $this->assertEquals($this->authorization->skip(function () use ($object, $document) { + $this->assertSame($object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())), false); + $this->assertSame($this->authorization->skip(function () use ($object, $document) { return $object->isValid(new Input(Database::PERMISSION_READ, $document->getRead())); }), true); } public function testNestedSkips(): void { - $this->assertEquals(true, $this->authorization->getStatus()); + $this->assertSame(true, $this->authorization->getStatus()); $this->authorization->skip(function () { - $this->assertEquals(false, $this->authorization->getStatus()); + $this->assertSame(false, $this->authorization->getStatus()); $this->authorization->skip(function () { - $this->assertEquals(false, $this->authorization->getStatus()); + $this->assertSame(false, $this->authorization->getStatus()); $this->authorization->skip(function () { - $this->assertEquals(false, $this->authorization->getStatus()); + $this->assertSame(false, $this->authorization->getStatus()); }); - $this->assertEquals(false, $this->authorization->getStatus()); + $this->assertSame(false, $this->authorization->getStatus()); }); - $this->assertEquals(false, $this->authorization->getStatus()); + $this->assertSame(false, $this->authorization->getStatus()); }); - $this->assertEquals(true, $this->authorization->getStatus()); + $this->assertSame(true, $this->authorization->getStatus()); } } diff --git a/tests/unit/Validator/DateTimeTest.php b/tests/unit/Validator/DateTimeTest.php index 106080c29..d94c39ac1 100644 --- a/tests/unit/Validator/DateTimeTest.php +++ b/tests/unit/Validator/DateTimeTest.php @@ -34,39 +34,39 @@ public function testCreateDatetime(): void $dateValidator = new DatetimeValidator($this->minAllowed, $this->maxAllowed); $this->assertGreaterThan(DateTime::addSeconds(new \DateTime(), -3), DateTime::now()); - $this->assertEquals(true, $dateValidator->isValid("2022-12-04")); - $this->assertEquals(true, $dateValidator->isValid("2022-1-4 11:31")); - $this->assertEquals(true, $dateValidator->isValid("2022-12-04 11:31:52")); - $this->assertEquals(true, $dateValidator->isValid("2022-1-4 11:31:52.123456789")); + $this->assertSame(true, $dateValidator->isValid("2022-12-04")); + $this->assertSame(true, $dateValidator->isValid("2022-1-4 11:31")); + $this->assertSame(true, $dateValidator->isValid("2022-12-04 11:31:52")); + $this->assertSame(true, $dateValidator->isValid("2022-1-4 11:31:52.123456789")); $this->assertGreaterThan('2022-7-2', '2022-7-2 11:31:52.680'); $now = DateTime::now(); - $this->assertEquals(23, strlen($now)); + $this->assertSame(23, strlen($now)); $this->assertGreaterThan('2020-1-1 11:31:52.680', $now); - $this->assertEquals("Value must be valid date between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame("Value must be valid date between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); $date = '2022-07-02 18:31:52.680'; $dateObject = new \DateTime($date); - $this->assertEquals(DateTime::format($dateObject), $date); - $this->assertEquals('2022', $dateObject->format('Y')); - $this->assertEquals('07', $dateObject->format('m')); - $this->assertEquals('02', $dateObject->format('d')); - $this->assertEquals('18', $dateObject->format('H')); - $this->assertEquals('31', $dateObject->format('i')); - $this->assertEquals('52', $dateObject->format('s')); - $this->assertEquals('680', $dateObject->format('v')); - - $this->assertEquals(true, $dateValidator->isValid("2022-12-04 11:31:52.680+02:00")); - $this->assertEquals('UTC', date_default_timezone_get()); - $this->assertEquals("2022-12-04 09:31:52.680", DateTime::setTimezone("2022-12-04 11:31:52.680+02:00")); - $this->assertEquals("2022-12-04T09:31:52.681+00:00", DateTime::formatTz("2022-12-04 09:31:52.681")); + $this->assertSame(DateTime::format($dateObject), $date); + $this->assertSame('2022', $dateObject->format('Y')); + $this->assertSame('07', $dateObject->format('m')); + $this->assertSame('02', $dateObject->format('d')); + $this->assertSame('18', $dateObject->format('H')); + $this->assertSame('31', $dateObject->format('i')); + $this->assertSame('52', $dateObject->format('s')); + $this->assertSame('680', $dateObject->format('v')); + + $this->assertSame(true, $dateValidator->isValid("2022-12-04 11:31:52.680+02:00")); + $this->assertSame('UTC', date_default_timezone_get()); + $this->assertSame("2022-12-04 09:31:52.680", DateTime::setTimezone("2022-12-04 11:31:52.680+02:00")); + $this->assertSame("2022-12-04T09:31:52.681+00:00", DateTime::formatTz("2022-12-04 09:31:52.681")); /** * Test for Failure */ - $this->assertEquals(false, $dateValidator->isValid("2022-13-04 11:31:52.680")); - $this->assertEquals(false, $dateValidator->isValid("-0001-13-04 00:00:00")); - $this->assertEquals(false, $dateValidator->isValid("0000-00-00 00:00:00")); - $this->assertEquals(false, $dateValidator->isValid("10000-01-01 00:00:00")); + $this->assertSame(false, $dateValidator->isValid("2022-13-04 11:31:52.680")); + $this->assertSame(false, $dateValidator->isValid("-0001-13-04 00:00:00")); + $this->assertSame(false, $dateValidator->isValid("0000-00-00 00:00:00")); + $this->assertSame(false, $dateValidator->isValid("10000-01-01 00:00:00")); } public function testPastDateValidation(): void @@ -77,9 +77,9 @@ public function testPastDateValidation(): void requireDateInFuture: true, ); - $this->assertEquals(false, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), -3))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), 5))); - $this->assertEquals("Value must be valid date in the future and between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(false, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), -3))); + $this->assertSame(true, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), 5))); + $this->assertSame("Value must be valid date in the future and between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); $dateValidator = new DatetimeValidator( $this->minAllowed, @@ -87,9 +87,9 @@ public function testPastDateValidation(): void requireDateInFuture: false ); - $this->assertEquals(true, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), -3))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), 5))); - $this->assertEquals("Value must be valid date between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(true, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), -3))); + $this->assertSame(true, $dateValidator->isValid(DateTime::addSeconds(new \DateTime(), 5))); + $this->assertSame("Value must be valid date between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); } public function testDatePrecision(): void @@ -99,56 +99,56 @@ public function testDatePrecision(): void $this->maxAllowed, precision: DatetimeValidator::PRECISION_SECONDS ); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); - $this->assertEquals("Value must be valid date with seconds precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); + $this->assertSame(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); + $this->assertSame(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); + $this->assertSame("Value must be valid date with seconds precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); $dateValidator = new DatetimeValidator( $this->minAllowed, $this->maxAllowed, precision: DatetimeValidator::PRECISION_MINUTES ); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:00')))); - $this->assertEquals("Value must be valid date with minutes precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); + $this->assertSame(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:00')))); + $this->assertSame("Value must be valid date with minutes precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); $dateValidator = new DatetimeValidator( $this->minAllowed, $this->maxAllowed, precision: DatetimeValidator::PRECISION_HOURS ); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:00')))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:00:00')))); - $this->assertEquals("Value must be valid date with hours precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:00')))); + $this->assertSame(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:00:00')))); + $this->assertSame("Value must be valid date with hours precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); $dateValidator = new DatetimeValidator( $this->minAllowed, $this->maxAllowed, precision: DatetimeValidator::PRECISION_DAYS ); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:00')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:00:00')))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 00:00:00')))); - $this->assertEquals("Value must be valid date with days precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.000')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:00')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:00:00')))); + $this->assertSame(true, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 00:00:00')))); + $this->assertSame("Value must be valid date with days precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); $dateValidator = new DatetimeValidator( $this->minAllowed, $this->maxAllowed, precision: DatetimeValidator::PRECISION_MINUTES ); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format(new \DateTime('2100-04-08 19:36:26.255')))); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format(new \DateTime('2100-04-08 19:36:00')))); - $this->assertEquals("Value must be valid date with minutes precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2019-04-08 19:36:26.255')))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format(new \DateTime('2100-04-08 19:36:26.255')))); + $this->assertSame(true, $dateValidator->isValid(DateTime::format(new \DateTime('2100-04-08 19:36:00')))); + $this->assertSame("Value must be valid date with minutes precision between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); } public function testOffset(): void @@ -160,12 +160,12 @@ public function testOffset(): void ); $time = (new \DateTime()); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format($time))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format($time))); $time = $time->add(new \DateInterval('PT50S')); - $this->assertEquals(false, $dateValidator->isValid(DateTime::format($time))); + $this->assertSame(false, $dateValidator->isValid(DateTime::format($time))); $time = $time->add(new \DateInterval('PT20S')); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format($time))); - $this->assertEquals("Value must be valid date at least 60 seconds in the future and between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(true, $dateValidator->isValid(DateTime::format($time))); + $this->assertSame("Value must be valid date at least 60 seconds in the future and between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); $dateValidator = new DatetimeValidator( $this->minAllowed, @@ -177,8 +177,8 @@ public function testOffset(): void $time = (new \DateTime()); $time = $time->add(new \DateInterval('PT50S')); $time = $time->add(new \DateInterval('PT20S')); - $this->assertEquals(true, $dateValidator->isValid(DateTime::format($time))); - $this->assertEquals("Value must be valid date at least 60 seconds in the future and between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); + $this->assertSame(true, $dateValidator->isValid(DateTime::format($time))); + $this->assertSame("Value must be valid date at least 60 seconds in the future and between {$this->minString} and {$this->maxString}.", $dateValidator->getDescription()); try { new DatetimeValidator( @@ -188,7 +188,7 @@ public function testOffset(): void ); $this->fail('Failed to throw exception when offset is negative.'); } catch (\Exception $e) { - $this->assertEquals('Offset must be a positive integer.', $e->getMessage()); + $this->assertSame('Offset must be a positive integer.', $e->getMessage()); } } } diff --git a/tests/unit/Validator/DocumentQueriesTest.php b/tests/unit/Validator/DocumentQueriesTest.php index 558d0b455..f0f66ae21 100644 --- a/tests/unit/Validator/DocumentQueriesTest.php +++ b/tests/unit/Validator/DocumentQueriesTest.php @@ -66,10 +66,10 @@ public function testValidQueries(): void Query::select(['title']), ]; - $this->assertEquals(true, $validator->isValid($queries)); + $this->assertSame(true, $validator->isValid($queries)); $queries[] = Query::select(['price.relation']); - $this->assertEquals(true, $validator->isValid($queries)); + $this->assertSame(true, $validator->isValid($queries)); } /** @@ -79,6 +79,6 @@ public function testInvalidQueries(): void { $validator = new DocumentQueries($this->collection['attributes']); $queries = [Query::limit(1)]; - $this->assertEquals(false, $validator->isValid($queries)); + $this->assertSame(false, $validator->isValid($queries)); } } diff --git a/tests/unit/Validator/DocumentsQueriesTest.php b/tests/unit/Validator/DocumentsQueriesTest.php index 6530ad299..df6caefc9 100644 --- a/tests/unit/Validator/DocumentsQueriesTest.php +++ b/tests/unit/Validator/DocumentsQueriesTest.php @@ -153,7 +153,7 @@ public function testValidQueries(): void Query::orderDesc(), ]; - $this->assertEquals(true, $validator->isValid($queries)); + $this->assertSame(true, $validator->isValid($queries)); } /** @@ -168,24 +168,24 @@ public function testInvalidQueries(): void ); $queries = ['{"method":"notEqual","attribute":"title","values":["Iron Man","Ant Man"]}']; - $this->assertEquals(false, $validator->isValid($queries)); - $this->assertEquals('Invalid query: NotEqual queries require exactly one value.', $validator->getDescription()); + $this->assertSame(false, $validator->isValid($queries)); + $this->assertSame('Invalid query: NotEqual queries require exactly one value.', $validator->getDescription()); $queries = [Query::search('description', 'iron')]; - $this->assertEquals(false, $validator->isValid($queries)); - $this->assertEquals('Searching by attribute "description" requires a fulltext index.', $validator->getDescription()); + $this->assertSame(false, $validator->isValid($queries)); + $this->assertSame('Searching by attribute "description" requires a fulltext index.', $validator->getDescription()); $queries = [Query::equal('not_found', [4])]; - $this->assertEquals(false, $validator->isValid($queries)); - $this->assertEquals('Invalid query: Attribute not found in schema: not_found', $validator->getDescription()); + $this->assertSame(false, $validator->isValid($queries)); + $this->assertSame('Invalid query: Attribute not found in schema: not_found', $validator->getDescription()); $queries = [Query::limit(-1)]; - $this->assertEquals(false, $validator->isValid($queries)); - $this->assertEquals('Invalid query: Invalid limit: Value must be a valid range between 1 and ' . number_format(PHP_INT_MAX), $validator->getDescription()); + $this->assertSame(false, $validator->isValid($queries)); + $this->assertSame('Invalid query: Invalid limit: Value must be a valid range between 1 and ' . number_format(PHP_INT_MAX), $validator->getDescription()); $queries = [Query::equal('title', [])]; // empty array - $this->assertEquals(false, $validator->isValid($queries)); - $this->assertEquals('Invalid query: Equal queries require at least one value.', $validator->getDescription()); + $this->assertSame(false, $validator->isValid($queries)); + $this->assertSame('Invalid query: Equal queries require at least one value.', $validator->getDescription()); } diff --git a/tests/unit/Validator/IndexTest.php b/tests/unit/Validator/IndexTest.php index 608a65d2b..b6a7fda70 100644 --- a/tests/unit/Validator/IndexTest.php +++ b/tests/unit/Validator/IndexTest.php @@ -54,7 +54,7 @@ public function testAttributeNotFound(): void $validator = new Index($collection->getAttribute('attributes'), $collection->getAttribute('indexes'), 768); $index = $collection->getAttribute('indexes')[0]; $this->assertFalse($validator->isValid($index)); - $this->assertEquals('Invalid index attribute "not_exist" not found', $validator->getDescription()); + $this->assertSame('Invalid index attribute "not_exist" not found', $validator->getDescription()); } /** @@ -103,7 +103,7 @@ public function testFulltextWithNonString(): void $validator = new Index($collection->getAttribute('attributes'), $collection->getAttribute('indexes'), 768); $index = $collection->getAttribute('indexes')[0]; $this->assertFalse($validator->isValid($index)); - $this->assertEquals('Attribute "date" cannot be part of a fulltext index, must be of type string', $validator->getDescription()); + $this->assertSame('Attribute "date" cannot be part of a fulltext index, must be of type string', $validator->getDescription()); } /** @@ -141,7 +141,7 @@ public function testIndexLength(): void $validator = new Index($collection->getAttribute('attributes'), $collection->getAttribute('indexes'), 768); $index = $collection->getAttribute('indexes')[0]; $this->assertFalse($validator->isValid($index)); - $this->assertEquals('Index length is longer than the maximum: 768', $validator->getDescription()); + $this->assertSame('Index length is longer than the maximum: 768', $validator->getDescription()); } /** @@ -197,7 +197,7 @@ public function testMultipleIndexLength(): void $collection->setAttribute('indexes', $index, Document::SET_TYPE_APPEND); $this->assertFalse($validator->isValid($index)); - $this->assertEquals('Index length is longer than the maximum: 768', $validator->getDescription()); + $this->assertSame('Index length is longer than the maximum: 768', $validator->getDescription()); } /** @@ -235,7 +235,7 @@ public function testEmptyAttributes(): void $validator = new Index($collection->getAttribute('attributes'), $collection->getAttribute('indexes'), 768); $index = $collection->getAttribute('indexes')[0]; $this->assertFalse($validator->isValid($index)); - $this->assertEquals('No attributes provided for index', $validator->getDescription()); + $this->assertSame('No attributes provided for index', $validator->getDescription()); } /** @@ -322,7 +322,7 @@ public function testObjectIndexValidation(): void // Validator with supportForObjectIndexes disabled should reject GIN $validatorNoSupport = new Index($collection->getAttribute('attributes'), $collection->getAttribute('indexes', []), 768, [], false, false, false, false, false); $this->assertFalse($validatorNoSupport->isValid($validIndex)); - $this->assertEquals('Object indexes are not supported', $validatorNoSupport->getDescription()); + $this->assertSame('Object indexes are not supported', $validatorNoSupport->getDescription()); } /** @@ -360,7 +360,7 @@ public function testDuplicatedAttributes(): void $validator = new Index($collection->getAttribute('attributes'), $collection->getAttribute('indexes'), 768); $index = $collection->getAttribute('indexes')[0]; $this->assertFalse($validator->isValid($index)); - $this->assertEquals('Duplicate attributes provided', $validator->getDescription()); + $this->assertSame('Duplicate attributes provided', $validator->getDescription()); } /** diff --git a/tests/unit/Validator/IndexedQueriesTest.php b/tests/unit/Validator/IndexedQueriesTest.php index 409fcf365..d7770817e 100644 --- a/tests/unit/Validator/IndexedQueriesTest.php +++ b/tests/unit/Validator/IndexedQueriesTest.php @@ -28,29 +28,29 @@ public function testEmptyQueries(): void { $validator = new IndexedQueries(); - $this->assertEquals(true, $validator->isValid([])); + $this->assertSame(true, $validator->isValid([])); } public function testInvalidQuery(): void { $validator = new IndexedQueries(); - $this->assertEquals(false, $validator->isValid(["this.is.invalid"])); + $this->assertSame(false, $validator->isValid(["this.is.invalid"])); } public function testInvalidMethod(): void { $validator = new IndexedQueries(); - $this->assertEquals(false, $validator->isValid(['equal("attr", "value")'])); + $this->assertSame(false, $validator->isValid(['equal("attr", "value")'])); $validator = new IndexedQueries([], [], [new Limit()]); - $this->assertEquals(false, $validator->isValid(['equal("attr", "value")'])); + $this->assertSame(false, $validator->isValid(['equal("attr", "value")'])); } public function testInvalidValue(): void { $validator = new IndexedQueries([], [], [new Limit()]); - $this->assertEquals(false, $validator->isValid(['limit(-1)'])); + $this->assertSame(false, $validator->isValid(['limit(-1)'])); } public function testValid(): void @@ -88,37 +88,37 @@ public function testValid(): void ); $query = Query::cursorAfter(new Document(['$id' => 'abc'])); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::parse('{"method":"cursorAfter","attribute":"","values":["abc"]}'); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::parse('{"method":"cursorAfter","values":["abc"]}'); // No attribute required - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::equal('name', ['value']); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::parse('{"method":"equal","attribute":"name","values":["value"]}'); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::limit(10); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::parse('{"method":"limit","values":[10]}'); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::offset(10); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::parse('{"method":"offset","values":[10]}'); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::orderAsc('name'); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::parse('{"method":"orderAsc","attribute":"name"}'); // No values required - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::search('name', 'value'); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); $query = Query::parse('{"method":"search","attribute":"name","values":["value"]}'); - $this->assertEquals(true, $validator->isValid([$query])); + $this->assertSame(true, $validator->isValid([$query])); } public function testMissingIndex(): void @@ -151,20 +151,20 @@ public function testMissingIndex(): void ); $query = Query::equal('dne', ['value']); - $this->assertEquals(false, $validator->isValid([$query])); - $this->assertEquals('Invalid query: Attribute not found in schema: dne', $validator->getDescription()); + $this->assertSame(false, $validator->isValid([$query])); + $this->assertSame('Invalid query: Attribute not found in schema: dne', $validator->getDescription()); $query = Query::orderAsc('dne'); - $this->assertEquals(false, $validator->isValid([$query])); - $this->assertEquals('Invalid query: Attribute not found in schema: dne', $validator->getDescription()); + $this->assertSame(false, $validator->isValid([$query])); + $this->assertSame('Invalid query: Attribute not found in schema: dne', $validator->getDescription()); $query = Query::search('dne', 'phrase'); - $this->assertEquals(false, $validator->isValid([$query])); - $this->assertEquals('Invalid query: Attribute not found in schema: dne', $validator->getDescription()); + $this->assertSame(false, $validator->isValid([$query])); + $this->assertSame('Invalid query: Attribute not found in schema: dne', $validator->getDescription()); $query = Query::search('name', 'phrase'); - $this->assertEquals(false, $validator->isValid([$query])); - $this->assertEquals('Searching by attribute "name" requires a fulltext index.', $validator->getDescription()); + $this->assertSame(false, $validator->isValid([$query])); + $this->assertSame('Searching by attribute "name" requires a fulltext index.', $validator->getDescription()); } public function testTwoAttributesFulltext(): void @@ -203,7 +203,7 @@ public function testTwoAttributesFulltext(): void ] ); - $this->assertEquals(false, $validator->isValid([Query::search('ft1', 'value')])); + $this->assertSame(false, $validator->isValid([Query::search('ft1', 'value')])); } @@ -213,7 +213,7 @@ public function testJsonParse(): void Query::parse('{"method":"equal","attribute":"name","values":["value"]'); // broken Json; $this->fail('Failed to throw exception'); } catch (Exception $e) { - $this->assertEquals('Invalid query: Syntax error', $e->getMessage()); + $this->assertSame('Invalid query: Syntax error', $e->getMessage()); } } } diff --git a/tests/unit/Validator/KeyTest.php b/tests/unit/Validator/KeyTest.php index 3c19346d8..6097f2ff6 100644 --- a/tests/unit/Validator/KeyTest.php +++ b/tests/unit/Validator/KeyTest.php @@ -24,65 +24,65 @@ public function tearDown(): void public function testValues(): void { // Must be strings - $this->assertEquals(false, $this->object->isValid(false)); - $this->assertEquals(false, $this->object->isValid(null)); - $this->assertEquals(false, $this->object->isValid(['value'])); - $this->assertEquals(false, $this->object->isValid(0)); - $this->assertEquals(false, $this->object->isValid(1.5)); - $this->assertEquals(true, $this->object->isValid('asdas7as9as')); - $this->assertEquals(true, $this->object->isValid('5f058a8925807')); + $this->assertSame(false, $this->object->isValid(false)); + $this->assertSame(false, $this->object->isValid(null)); + $this->assertSame(false, $this->object->isValid(['value'])); + $this->assertSame(false, $this->object->isValid(0)); + $this->assertSame(false, $this->object->isValid(1.5)); + $this->assertSame(true, $this->object->isValid('asdas7as9as')); + $this->assertSame(true, $this->object->isValid('5f058a8925807')); // Don't allow empty string - $this->assertEquals(false, $this->object->isValid('')); - $this->assertEquals(true, $this->object->isValid('0')); - $this->assertEquals(true, $this->object->isValid('null')); + $this->assertSame(false, $this->object->isValid('')); + $this->assertSame(true, $this->object->isValid('0')); + $this->assertSame(true, $this->object->isValid('null')); // No leading special chars - $this->assertEquals(false, $this->object->isValid('_asdasdasdas')); - $this->assertEquals(false, $this->object->isValid('.as5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('-as5dasdasdas')); + $this->assertSame(false, $this->object->isValid('_asdasdasdas')); + $this->assertSame(false, $this->object->isValid('.as5dasdasdas')); + $this->assertSame(false, $this->object->isValid('-as5dasdasdas')); // Special chars allowed: underscore, period, hyphen - $this->assertEquals(true, $this->object->isValid('as5dadasdas_')); - $this->assertEquals(true, $this->object->isValid('as_5dasdasdas')); - $this->assertEquals(true, $this->object->isValid('as5dasdasdas.')); - $this->assertEquals(true, $this->object->isValid('as.5dasdasdas')); - $this->assertEquals(true, $this->object->isValid('as5dasdasdas-')); - $this->assertEquals(true, $this->object->isValid('as-5dasdasdas')); + $this->assertSame(true, $this->object->isValid('as5dadasdas_')); + $this->assertSame(true, $this->object->isValid('as_5dasdasdas')); + $this->assertSame(true, $this->object->isValid('as5dasdasdas.')); + $this->assertSame(true, $this->object->isValid('as.5dasdasdas')); + $this->assertSame(true, $this->object->isValid('as5dasdasdas-')); + $this->assertSame(true, $this->object->isValid('as-5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('dasda asdasd')); - $this->assertEquals(false, $this->object->isValid('asd"asd6sdas')); - $this->assertEquals(false, $this->object->isValid('asd\'as0asdas')); - $this->assertEquals(false, $this->object->isValid('as!5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as@5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as#5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as$5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as%5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as^5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as&5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as*5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as(5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as)5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as+5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as=5dasdasdas')); + $this->assertSame(false, $this->object->isValid('dasda asdasd')); + $this->assertSame(false, $this->object->isValid('asd"asd6sdas')); + $this->assertSame(false, $this->object->isValid('asd\'as0asdas')); + $this->assertSame(false, $this->object->isValid('as!5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as@5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as#5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as$5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as%5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as^5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as&5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as*5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as(5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as)5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as+5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as=5dasdasdas')); // At most 36 chars - $this->assertEquals(true, $this->object->isValid(str_repeat('a', 36))); - $this->assertEquals(false, $this->object->isValid(str_repeat('a', 256))); + $this->assertSame(true, $this->object->isValid(str_repeat('a', 36))); + $this->assertSame(false, $this->object->isValid(str_repeat('a', 256))); // Internal keys $validator = new Key(true); - $this->assertEquals(true, $validator->isValid('appwrite')); - $this->assertEquals(true, $validator->isValid('appwrite_')); - $this->assertEquals(false, $validator->isValid('_appwrite')); - $this->assertEquals(false, $validator->isValid('_')); + $this->assertSame(true, $validator->isValid('appwrite')); + $this->assertSame(true, $validator->isValid('appwrite_')); + $this->assertSame(false, $validator->isValid('_appwrite')); + $this->assertSame(false, $validator->isValid('_')); - $this->assertEquals(true, $validator->isValid('$id')); - $this->assertEquals(true, $validator->isValid('$createdAt')); - $this->assertEquals(true, $validator->isValid('$updatedAt')); + $this->assertSame(true, $validator->isValid('$id')); + $this->assertSame(true, $validator->isValid('$createdAt')); + $this->assertSame(true, $validator->isValid('$updatedAt')); - $this->assertEquals(false, $validator->isValid('$appwrite')); - $this->assertEquals(false, $validator->isValid('$permissions')); - $this->assertEquals(false, $validator->isValid('$')); + $this->assertSame(false, $validator->isValid('$appwrite')); + $this->assertSame(false, $validator->isValid('$permissions')); + $this->assertSame(false, $validator->isValid('$')); } } diff --git a/tests/unit/Validator/LabelTest.php b/tests/unit/Validator/LabelTest.php index a6dd50bef..2bd4ae151 100644 --- a/tests/unit/Validator/LabelTest.php +++ b/tests/unit/Validator/LabelTest.php @@ -24,42 +24,42 @@ public function tearDown(): void public function testValues(): void { // Must be strings - $this->assertEquals(false, $this->object->isValid(false)); - $this->assertEquals(false, $this->object->isValid(null)); - $this->assertEquals(false, $this->object->isValid(['value'])); - $this->assertEquals(false, $this->object->isValid(0)); - $this->assertEquals(false, $this->object->isValid(1.5)); - $this->assertEquals(true, $this->object->isValid('asdas7as9as')); - $this->assertEquals(true, $this->object->isValid('5f058a8925807')); + $this->assertSame(false, $this->object->isValid(false)); + $this->assertSame(false, $this->object->isValid(null)); + $this->assertSame(false, $this->object->isValid(['value'])); + $this->assertSame(false, $this->object->isValid(0)); + $this->assertSame(false, $this->object->isValid(1.5)); + $this->assertSame(true, $this->object->isValid('asdas7as9as')); + $this->assertSame(true, $this->object->isValid('5f058a8925807')); // No special chars - $this->assertEquals(false, $this->object->isValid('_asdasdasdas')); - $this->assertEquals(false, $this->object->isValid('.as5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('-as5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as5dadasdas_')); - $this->assertEquals(false, $this->object->isValid('as_5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as5dasdasdas.')); - $this->assertEquals(false, $this->object->isValid('as.5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as5dasdasdas-')); - $this->assertEquals(false, $this->object->isValid('as-5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('dasda asdasd')); - $this->assertEquals(false, $this->object->isValid('asd"asd6sdas')); - $this->assertEquals(false, $this->object->isValid('asd\'as0asdas')); - $this->assertEquals(false, $this->object->isValid('as!5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as@5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as#5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as$5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as%5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as^5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as&5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as*5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as(5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as)5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as+5dasdasdas')); - $this->assertEquals(false, $this->object->isValid('as=5dasdasdas')); + $this->assertSame(false, $this->object->isValid('_asdasdasdas')); + $this->assertSame(false, $this->object->isValid('.as5dasdasdas')); + $this->assertSame(false, $this->object->isValid('-as5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as5dadasdas_')); + $this->assertSame(false, $this->object->isValid('as_5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as5dasdasdas.')); + $this->assertSame(false, $this->object->isValid('as.5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as5dasdasdas-')); + $this->assertSame(false, $this->object->isValid('as-5dasdasdas')); + $this->assertSame(false, $this->object->isValid('dasda asdasd')); + $this->assertSame(false, $this->object->isValid('asd"asd6sdas')); + $this->assertSame(false, $this->object->isValid('asd\'as0asdas')); + $this->assertSame(false, $this->object->isValid('as!5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as@5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as#5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as$5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as%5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as^5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as&5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as*5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as(5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as)5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as+5dasdasdas')); + $this->assertSame(false, $this->object->isValid('as=5dasdasdas')); // At most 255 chars - $this->assertEquals(true, $this->object->isValid(str_repeat('a', 36))); - $this->assertEquals(false, $this->object->isValid(str_repeat('a', 256))); + $this->assertSame(true, $this->object->isValid(str_repeat('a', 36))); + $this->assertSame(false, $this->object->isValid(str_repeat('a', 256))); } } diff --git a/tests/unit/Validator/PermissionsTest.php b/tests/unit/Validator/PermissionsTest.php index 70f2df0f1..1a99a5713 100644 --- a/tests/unit/Validator/PermissionsTest.php +++ b/tests/unit/Validator/PermissionsTest.php @@ -194,103 +194,103 @@ public function testInvalidPermissions(): void $object = new Permissions(); $this->assertFalse($object->isValid(Permission::create(Role::any()))); - $this->assertEquals('Permissions must be an array of strings.', $object->getDescription()); + $this->assertSame('Permissions must be an array of strings.', $object->getDescription()); $this->assertFalse($object->isValid(false)); - $this->assertEquals('Permissions must be an array of strings.', $object->getDescription()); + $this->assertSame('Permissions must be an array of strings.', $object->getDescription()); $this->assertFalse($object->isValid(1.5)); - $this->assertEquals('Permissions must be an array of strings.', $object->getDescription()); + $this->assertSame('Permissions must be an array of strings.', $object->getDescription()); // Permissions must be of type string $this->assertFalse($object->isValid([0, 1.5])); - $this->assertEquals('Every permission must be of type string.', $object->getDescription()); + $this->assertSame('Every permission must be of type string.', $object->getDescription()); $this->assertFalse($object->isValid([false, []])); - $this->assertEquals('Every permission must be of type string.', $object->getDescription()); + $this->assertSame('Every permission must be of type string.', $object->getDescription()); $this->assertFalse($object->isValid([['a']])); - $this->assertEquals('Every permission must be of type string.', $object->getDescription()); + $this->assertSame('Every permission must be of type string.', $object->getDescription()); // Wildcard character unsupported $this->assertFalse($object->isValid(['*'])); - $this->assertEquals('Wildcard permission "*" has been replaced. Use "any" instead.', $object->getDescription()); + $this->assertSame('Wildcard permission "*" has been replaced. Use "any" instead.', $object->getDescription()); // Role prefix values deprecated $this->assertFalse($object->isValid(['read("role:all")'])); - $this->assertEquals('Permissions using the "role:" prefix have been replaced. Use "users", "guests", or "any" instead.', $object->getDescription()); + $this->assertSame('Permissions using the "role:" prefix have been replaced. Use "users", "guests", or "any" instead.', $object->getDescription()); $this->assertFalse($object->isValid(['create("role:guest")'])); - $this->assertEquals('Permissions using the "role:" prefix have been replaced. Use "users", "guests", or "any" instead.', $object->getDescription()); + $this->assertSame('Permissions using the "role:" prefix have been replaced. Use "users", "guests", or "any" instead.', $object->getDescription()); $this->assertFalse($object->isValid(['update("role:member")'])); - $this->assertEquals('Permissions using the "role:" prefix have been replaced. Use "users", "guests", or "any" instead.', $object->getDescription()); + $this->assertSame('Permissions using the "role:" prefix have been replaced. Use "users", "guests", or "any" instead.', $object->getDescription()); // Only contains a single ':' $this->assertFalse($object->isValid(['user1234'])); - $this->assertEquals('Permission "user1234" is not allowed. Must be one of: create, read, update, delete, write.', $object->getDescription()); + $this->assertSame('Permission "user1234" is not allowed. Must be one of: create, read, update, delete, write.', $object->getDescription()); $this->assertFalse($object->isValid(['user::1234'])); - $this->assertEquals('Permission "user::1234" is not allowed. Must be one of: create, read, update, delete, write.', $object->getDescription()); + $this->assertSame('Permission "user::1234" is not allowed. Must be one of: create, read, update, delete, write.', $object->getDescription()); $this->assertFalse($object->isValid(['user:123:4'])); - $this->assertEquals('Permission "user:123:4" is not allowed. Must be one of: create, read, update, delete, write.', $object->getDescription()); + $this->assertSame('Permission "user:123:4" is not allowed. Must be one of: create, read, update, delete, write.', $object->getDescription()); // Split role into format {$type}:{$value} // Permission must have value $this->assertFalse($object->isValid(['read("member:")'])); - $this->assertEquals('Role "member" must have an ID value.', $object->getDescription()); + $this->assertSame('Role "member" must have an ID value.', $object->getDescription()); $this->assertFalse($object->isValid(['read("user:")'])); - $this->assertEquals('Role "user" must have an ID value.', $object->getDescription()); + $this->assertSame('Role "user" must have an ID value.', $object->getDescription()); $this->assertFalse($object->isValid(['read("team:")'])); - $this->assertEquals('Role "team" must have an ID value.', $object->getDescription()); + $this->assertSame('Role "team" must have an ID value.', $object->getDescription()); // Permission role:$value must be one of: all, guest, member $this->assertFalse($object->isValid(['read("anyy")'])); - $this->assertEquals('Role "anyy" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); + $this->assertSame('Role "anyy" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); $this->assertFalse($object->isValid(['read("gguest")'])); - $this->assertEquals('Role "gguest" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); + $this->assertSame('Role "gguest" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); $this->assertFalse($object->isValid(['read("memer:123abc")'])); - $this->assertEquals('Role "memer" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); + $this->assertSame('Role "memer" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); // team:$value, member:$value and user:$value must have valid Key for $value // No leading special chars $this->assertFalse($object->isValid([Permission::read(Role::user('_1234'))])); - $this->assertEquals('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::team('-1234'))])); - $this->assertEquals('Role "team" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "team" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::member('.1234'))])); - $this->assertEquals('Role "member" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "member" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); // No unsupported special characters $this->assertFalse($object->isValid([Permission::read(Role::user('12$4'))])); - $this->assertEquals('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::user('12&4'))])); - $this->assertEquals('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::user('ab(124'))])); - $this->assertEquals('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); // Shorter than 36 chars $this->assertTrue($object->isValid([Permission::read(Role::user(ID::custom(str_repeat('a', 36))))])); $this->assertFalse($object->isValid([Permission::read(Role::user(ID::custom(str_repeat('a', 256))))])); - $this->assertEquals('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "user" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); // Permission role must begin with one of: member, role, team, user $this->assertFalse($object->isValid(['update("memmber:1234")'])); - $this->assertEquals('Role "memmber" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); + $this->assertSame('Role "memmber" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); $this->assertFalse($object->isValid(['update("tteam:1234")'])); - $this->assertEquals('Role "tteam" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); + $this->assertSame('Role "tteam" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); $this->assertFalse($object->isValid(['update("userr:1234")'])); - $this->assertEquals('Role "userr" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); + $this->assertSame('Role "userr" is not allowed. Must be one of: ' . \implode(', ', Roles::ROLES) . '.', $object->getDescription()); // Team permission $this->assertFalse($object->isValid([Permission::read(Role::team(ID::custom('_abcd')))])); - $this->assertEquals('Role "team" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "team" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::team(ID::custom('abcd/')))])); - $this->assertEquals('Dimension must not be empty', $object->getDescription()); + $this->assertSame('Dimension must not be empty', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::team(ID::custom(''), 'abcd'))])); - $this->assertEquals('Role "team" must have an ID value.', $object->getDescription()); + $this->assertSame('Role "team" must have an ID value.', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::team(ID::custom('abcd'), '/efgh'))])); - $this->assertEquals('Only one dimension can be provided', $object->getDescription()); + $this->assertSame('Only one dimension can be provided', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::team(ID::custom('abcd'), 'e/fgh'))])); - $this->assertEquals('Only one dimension can be provided', $object->getDescription()); + $this->assertSame('Only one dimension can be provided', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::team(ID::custom('ab&cd3'), 'efgh'))])); - $this->assertEquals('Role "team" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "team" identifier value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); $this->assertFalse($object->isValid([Permission::read(Role::team(ID::custom('abcd'), 'ef*gh'))])); - $this->assertEquals('Role "team" dimension value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); + $this->assertSame('Role "team" dimension value is invalid: Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char', $object->getDescription()); // Permission-list length must be valid $object = new Permissions(100); @@ -298,7 +298,7 @@ public function testInvalidPermissions(): void $this->assertTrue($object->isValid($permissions)); $permissions[] = Permission::read(Role::any()); $this->assertFalse($object->isValid($permissions)); - $this->assertEquals('You can only provide up to 100 permissions.', $object->getDescription()); + $this->assertSame('You can only provide up to 100 permissions.', $object->getDescription()); } /* @@ -333,8 +333,8 @@ public function testDuplicateMethods(): void ]); $this->assertTrue($validator->isValid($document->getPermissions())); $permissions = $document->getPermissions(); - $this->assertEquals(5, count($permissions)); - $this->assertEquals([ + $this->assertSame(5, count($permissions)); + $this->assertSame([ 'read("any")', 'read("user:' . $user . '")', 'write("user:' . $user . '")', diff --git a/tests/unit/Validator/QueriesTest.php b/tests/unit/Validator/QueriesTest.php index 265e9cbd0..a8d0cec53 100644 --- a/tests/unit/Validator/QueriesTest.php +++ b/tests/unit/Validator/QueriesTest.php @@ -28,22 +28,22 @@ public function testEmptyQueries(): void { $validator = new Queries(); - $this->assertEquals(true, $validator->isValid([])); + $this->assertSame(true, $validator->isValid([])); } public function testInvalidMethod(): void { $validator = new Queries(); - $this->assertEquals(false, $validator->isValid([Query::equal('attr', ["value"])])); + $this->assertSame(false, $validator->isValid([Query::equal('attr', ["value"])])); $validator = new Queries([new Limit()]); - $this->assertEquals(false, $validator->isValid([Query::equal('attr', ["value"])])); + $this->assertSame(false, $validator->isValid([Query::equal('attr', ["value"])])); } public function testInvalidValue(): void { $validator = new Queries([new Limit()]); - $this->assertEquals(false, $validator->isValid([Query::limit(-1)])); + $this->assertSame(false, $validator->isValid([Query::limit(-1)])); } /** @@ -70,10 +70,10 @@ public function testValid(): void ] ); - $this->assertEquals(true, $validator->isValid([Query::cursorAfter(new Document(['$id' => 'asdf']))]), $validator->getDescription()); - $this->assertEquals(true, $validator->isValid([Query::equal('name', ['value'])]), $validator->getDescription()); - $this->assertEquals(true, $validator->isValid([Query::limit(10)]), $validator->getDescription()); - $this->assertEquals(true, $validator->isValid([Query::offset(10)]), $validator->getDescription()); - $this->assertEquals(true, $validator->isValid([Query::orderAsc('name')]), $validator->getDescription()); + $this->assertSame(true, $validator->isValid([Query::cursorAfter(new Document(['$id' => 'asdf']))]), $validator->getDescription()); + $this->assertSame(true, $validator->isValid([Query::equal('name', ['value'])]), $validator->getDescription()); + $this->assertSame(true, $validator->isValid([Query::limit(10)]), $validator->getDescription()); + $this->assertSame(true, $validator->isValid([Query::offset(10)]), $validator->getDescription()); + $this->assertSame(true, $validator->isValid([Query::orderAsc('name')]), $validator->getDescription()); } } diff --git a/tests/unit/Validator/Query/CursorTest.php b/tests/unit/Validator/Query/CursorTest.php index 7f1806549..67181ccec 100644 --- a/tests/unit/Validator/Query/CursorTest.php +++ b/tests/unit/Validator/Query/CursorTest.php @@ -21,7 +21,7 @@ public function testValueFailure(): void $validator = new Cursor(); $this->assertFalse($validator->isValid(Query::limit(-1))); - $this->assertEquals('Invalid query', $validator->getDescription()); + $this->assertSame('Invalid query', $validator->getDescription()); $this->assertFalse($validator->isValid(Query::limit(101))); $this->assertFalse($validator->isValid(Query::offset(-1))); $this->assertFalse($validator->isValid(Query::offset(5001))); diff --git a/tests/unit/Validator/Query/FilterTest.php b/tests/unit/Validator/Query/FilterTest.php index a0ec65eeb..4bf4ac0e0 100644 --- a/tests/unit/Validator/Query/FilterTest.php +++ b/tests/unit/Validator/Query/FilterTest.php @@ -66,7 +66,7 @@ public function testSuccess(): void public function testFailure(): void { $this->assertFalse($this->validator->isValid(Query::select(['attr']))); - $this->assertEquals('Invalid query', $this->validator->getDescription()); + $this->assertSame('Invalid query', $this->validator->getDescription()); $this->assertFalse($this->validator->isValid(Query::limit(1))); $this->assertFalse($this->validator->isValid(Query::limit(0))); $this->assertFalse($this->validator->isValid(Query::limit(100))); @@ -91,19 +91,19 @@ public function testFailure(): void public function testTypeMismatch(): void { $this->assertFalse($this->validator->isValid(Query::equal('string', [false]))); - $this->assertEquals('Query value is invalid for attribute "string"', $this->validator->getDescription()); + $this->assertSame('Query value is invalid for attribute "string"', $this->validator->getDescription()); $this->assertFalse($this->validator->isValid(Query::equal('string', [1]))); - $this->assertEquals('Query value is invalid for attribute "string"', $this->validator->getDescription()); + $this->assertSame('Query value is invalid for attribute "string"', $this->validator->getDescription()); } public function testEmptyValues(): void { $this->assertFalse($this->validator->isValid(Query::contains('string', []))); - $this->assertEquals('Contains queries require at least one value.', $this->validator->getDescription()); + $this->assertSame('Contains queries require at least one value.', $this->validator->getDescription()); $this->assertFalse($this->validator->isValid(Query::equal('string', []))); - $this->assertEquals('Equal queries require at least one value.', $this->validator->getDescription()); + $this->assertSame('Equal queries require at least one value.', $this->validator->getDescription()); } public function testMaxValuesCount(): void @@ -115,7 +115,7 @@ public function testMaxValuesCount(): void } $this->assertFalse($this->validator->isValid(Query::equal('integer', $values))); - $this->assertEquals('Query on attribute has greater than '.$max.' values: integer', $this->validator->getDescription()); + $this->assertSame('Query on attribute has greater than '.$max.' values: integer', $this->validator->getDescription()); } public function testNotContains(): void @@ -127,7 +127,7 @@ public function testNotContains(): void // Test invalid notContains queries (empty values) $this->assertFalse($this->validator->isValid(Query::notContains('string', []))); - $this->assertEquals('NotContains queries require at least one value.', $this->validator->getDescription()); + $this->assertSame('NotContains queries require at least one value.', $this->validator->getDescription()); } public function testNotSearch(): void @@ -137,11 +137,11 @@ public function testNotSearch(): void // Test that arrays cannot use notSearch $this->assertFalse($this->validator->isValid(Query::notSearch('string_array', 'unwanted'))); - $this->assertEquals('Cannot query notSearch on attribute "string_array" because it is an array.', $this->validator->getDescription()); + $this->assertSame('Cannot query notSearch on attribute "string_array" because it is an array.', $this->validator->getDescription()); // Test multiple values not allowed $this->assertFalse($this->validator->isValid(new Query(Query::TYPE_NOT_SEARCH, 'string', ['word1', 'word2']))); - $this->assertEquals('NotSearch queries require exactly one value.', $this->validator->getDescription()); + $this->assertSame('NotSearch queries require exactly one value.', $this->validator->getDescription()); } public function testNotStartsWith(): void @@ -151,11 +151,11 @@ public function testNotStartsWith(): void // Test that arrays cannot use notStartsWith $this->assertFalse($this->validator->isValid(Query::notStartsWith('string_array', 'temp'))); - $this->assertEquals('Cannot query notStartsWith on attribute "string_array" because it is an array.', $this->validator->getDescription()); + $this->assertSame('Cannot query notStartsWith on attribute "string_array" because it is an array.', $this->validator->getDescription()); // Test multiple values not allowed $this->assertFalse($this->validator->isValid(new Query(Query::TYPE_NOT_STARTS_WITH, 'string', ['prefix1', 'prefix2']))); - $this->assertEquals('NotStartsWith queries require exactly one value.', $this->validator->getDescription()); + $this->assertSame('NotStartsWith queries require exactly one value.', $this->validator->getDescription()); } public function testNotEndsWith(): void @@ -165,11 +165,11 @@ public function testNotEndsWith(): void // Test that arrays cannot use notEndsWith $this->assertFalse($this->validator->isValid(Query::notEndsWith('string_array', '.tmp'))); - $this->assertEquals('Cannot query notEndsWith on attribute "string_array" because it is an array.', $this->validator->getDescription()); + $this->assertSame('Cannot query notEndsWith on attribute "string_array" because it is an array.', $this->validator->getDescription()); // Test multiple values not allowed $this->assertFalse($this->validator->isValid(new Query(Query::TYPE_NOT_ENDS_WITH, 'string', ['suffix1', 'suffix2']))); - $this->assertEquals('NotEndsWith queries require exactly one value.', $this->validator->getDescription()); + $this->assertSame('NotEndsWith queries require exactly one value.', $this->validator->getDescription()); } public function testNotBetween(): void @@ -179,13 +179,13 @@ public function testNotBetween(): void // Test that arrays cannot use notBetween $this->assertFalse($this->validator->isValid(Query::notBetween('integer_array', 1, 10))); - $this->assertEquals('Cannot query notBetween on attribute "integer_array" because it is an array.', $this->validator->getDescription()); + $this->assertSame('Cannot query notBetween on attribute "integer_array" because it is an array.', $this->validator->getDescription()); // Test wrong number of values $this->assertFalse($this->validator->isValid(new Query(Query::TYPE_NOT_BETWEEN, 'integer', [10]))); - $this->assertEquals('NotBetween queries require exactly two values.', $this->validator->getDescription()); + $this->assertSame('NotBetween queries require exactly two values.', $this->validator->getDescription()); $this->assertFalse($this->validator->isValid(new Query(Query::TYPE_NOT_BETWEEN, 'integer', [10, 20, 30]))); - $this->assertEquals('NotBetween queries require exactly two values.', $this->validator->getDescription()); + $this->assertSame('NotBetween queries require exactly two values.', $this->validator->getDescription()); } } diff --git a/tests/unit/Validator/Query/LimitTest.php b/tests/unit/Validator/Query/LimitTest.php index f0c598d3d..1f9b2ade1 100644 --- a/tests/unit/Validator/Query/LimitTest.php +++ b/tests/unit/Validator/Query/LimitTest.php @@ -21,7 +21,7 @@ public function testValueFailure(): void $validator = new Limit(100); $this->assertFalse($validator->isValid(Query::limit(0))); - $this->assertEquals('Invalid limit: Value must be a valid range between 1 and 100', $validator->getDescription()); + $this->assertSame('Invalid limit: Value must be a valid range between 1 and 100', $validator->getDescription()); $this->assertFalse($validator->isValid(Query::limit(0))); $this->assertFalse($validator->isValid(Query::limit(-1))); $this->assertFalse($validator->isValid(Query::limit(101))); diff --git a/tests/unit/Validator/Query/OffsetTest.php b/tests/unit/Validator/Query/OffsetTest.php index 948408346..2fb97a481 100644 --- a/tests/unit/Validator/Query/OffsetTest.php +++ b/tests/unit/Validator/Query/OffsetTest.php @@ -22,7 +22,7 @@ public function testValueFailure(): void $validator = new Offset(5000); $this->assertFalse($validator->isValid(Query::offset(-1))); - $this->assertEquals('Invalid offset: Value must be a valid range between 0 and 5,000', $validator->getDescription()); + $this->assertSame('Invalid offset: Value must be a valid range between 0 and 5,000', $validator->getDescription()); $this->assertFalse($validator->isValid(Query::offset(5001))); $this->assertFalse($validator->isValid(Query::equal('attr', ['v']))); $this->assertFalse($validator->isValid(Query::orderAsc('attr'))); diff --git a/tests/unit/Validator/Query/OrderTest.php b/tests/unit/Validator/Query/OrderTest.php index b84d896d1..ebb1803c9 100644 --- a/tests/unit/Validator/Query/OrderTest.php +++ b/tests/unit/Validator/Query/OrderTest.php @@ -48,7 +48,7 @@ public function testValueSuccess(): void public function testValueFailure(): void { $this->assertFalse($this->validator->isValid(Query::limit(-1))); - $this->assertEquals('Invalid query', $this->validator->getDescription()); + $this->assertSame('Invalid query', $this->validator->getDescription()); $this->assertFalse($this->validator->isValid(Query::limit(101))); $this->assertFalse($this->validator->isValid(Query::offset(-1))); $this->assertFalse($this->validator->isValid(Query::offset(5001))); diff --git a/tests/unit/Validator/Query/SelectTest.php b/tests/unit/Validator/Query/SelectTest.php index 2dafdb94c..1309c909b 100644 --- a/tests/unit/Validator/Query/SelectTest.php +++ b/tests/unit/Validator/Query/SelectTest.php @@ -46,7 +46,7 @@ public function testValueSuccess(): void public function testValueFailure(): void { $this->assertFalse($this->validator->isValid(Query::limit(1))); - $this->assertEquals('Invalid query', $this->validator->getDescription()); + $this->assertSame('Invalid query', $this->validator->getDescription()); $this->assertFalse($this->validator->isValid(Query::select(['name.artist']))); } } diff --git a/tests/unit/Validator/QueryTest.php b/tests/unit/Validator/QueryTest.php index dbe7a6b52..8fb5beba5 100644 --- a/tests/unit/Validator/QueryTest.php +++ b/tests/unit/Validator/QueryTest.php @@ -110,27 +110,27 @@ public function testQuery(): void { $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); - $this->assertEquals(true, $validator->isValid([Query::equal('$id', ['Iron Man', 'Ant Man'])])); - $this->assertEquals(true, $validator->isValid([Query::equal('$id', ['Iron Man'])])); - $this->assertEquals(true, $validator->isValid([Query::equal('description', ['Best movie ever'])])); - $this->assertEquals(true, $validator->isValid([Query::greaterThan('rating', 4)])); - $this->assertEquals(true, $validator->isValid([Query::notEqual('title', 'Iron Man')])); - $this->assertEquals(true, $validator->isValid([Query::lessThan('price', 6.50)])); - $this->assertEquals(true, $validator->isValid([Query::lessThanEqual('price', 6)])); - $this->assertEquals(true, $validator->isValid([Query::contains('tags', ['action1', 'action2'])])); - $this->assertEquals(true, $validator->isValid([Query::contains('tags', ['action1'])])); - $this->assertEquals(true, $validator->isValid([Query::cursorAfter(new Document(['$id' => 'docId']))])); - $this->assertEquals(true, $validator->isValid([Query::cursorBefore(new Document(['$id' => 'docId']))])); - $this->assertEquals(true, $validator->isValid([Query::orderAsc('title')])); - $this->assertEquals(true, $validator->isValid([Query::orderDesc('title')])); - $this->assertEquals(true, $validator->isValid([Query::isNull('title')])); - $this->assertEquals(true, $validator->isValid([Query::isNotNull('title')])); - $this->assertEquals(true, $validator->isValid([Query::between('price', 1.5, 10.9)])); - $this->assertEquals(true, $validator->isValid([Query::between('birthDay', '2024-01-01', '2023-01-01')])); - $this->assertEquals(true, $validator->isValid([Query::startsWith('title', 'Fro')])); - $this->assertEquals(true, $validator->isValid([Query::endsWith('title', 'Zen')])); - $this->assertEquals(true, $validator->isValid([Query::select(['title', 'description'])])); - $this->assertEquals(true, $validator->isValid([Query::notEqual('title', '')])); + $this->assertSame(true, $validator->isValid([Query::equal('$id', ['Iron Man', 'Ant Man'])])); + $this->assertSame(true, $validator->isValid([Query::equal('$id', ['Iron Man'])])); + $this->assertSame(true, $validator->isValid([Query::equal('description', ['Best movie ever'])])); + $this->assertSame(true, $validator->isValid([Query::greaterThan('rating', 4)])); + $this->assertSame(true, $validator->isValid([Query::notEqual('title', 'Iron Man')])); + $this->assertSame(true, $validator->isValid([Query::lessThan('price', 6.50)])); + $this->assertSame(true, $validator->isValid([Query::lessThanEqual('price', 6)])); + $this->assertSame(true, $validator->isValid([Query::contains('tags', ['action1', 'action2'])])); + $this->assertSame(true, $validator->isValid([Query::contains('tags', ['action1'])])); + $this->assertSame(true, $validator->isValid([Query::cursorAfter(new Document(['$id' => 'docId']))])); + $this->assertSame(true, $validator->isValid([Query::cursorBefore(new Document(['$id' => 'docId']))])); + $this->assertSame(true, $validator->isValid([Query::orderAsc('title')])); + $this->assertSame(true, $validator->isValid([Query::orderDesc('title')])); + $this->assertSame(true, $validator->isValid([Query::isNull('title')])); + $this->assertSame(true, $validator->isValid([Query::isNotNull('title')])); + $this->assertSame(true, $validator->isValid([Query::between('price', 1.5, 10.9)])); + $this->assertSame(true, $validator->isValid([Query::between('birthDay', '2024-01-01', '2023-01-01')])); + $this->assertSame(true, $validator->isValid([Query::startsWith('title', 'Fro')])); + $this->assertSame(true, $validator->isValid([Query::endsWith('title', 'Zen')])); + $this->assertSame(true, $validator->isValid([Query::select(['title', 'description'])])); + $this->assertSame(true, $validator->isValid([Query::notEqual('title', '')])); } /** @@ -141,12 +141,12 @@ public function testAttributeNotFound(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::equal('name', ['Iron Man'])]); - $this->assertEquals(false, $response); - $this->assertEquals('Invalid query: Attribute not found in schema: name', $validator->getDescription()); + $this->assertSame(false, $response); + $this->assertSame('Invalid query: Attribute not found in schema: name', $validator->getDescription()); $response = $validator->isValid([Query::orderAsc('name')]); - $this->assertEquals(false, $response); - $this->assertEquals('Invalid query: Attribute not found in schema: name', $validator->getDescription()); + $this->assertSame(false, $response); + $this->assertSame('Invalid query: Attribute not found in schema: name', $validator->getDescription()); } /** @@ -157,8 +157,8 @@ public function testAttributeWrongType(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::equal('title', [1776])]); - $this->assertEquals(false, $response); - $this->assertEquals('Invalid query: Query value is invalid for attribute "title"', $validator->getDescription()); + $this->assertSame(false, $response); + $this->assertSame('Invalid query: Query value is invalid for attribute "title"', $validator->getDescription()); } /** @@ -169,7 +169,7 @@ public function testQueryDate(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::greaterThan('birthDay', '1960-01-01 10:10:10')]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); } /** @@ -180,10 +180,10 @@ public function testQueryLimit(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::limit(25)]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::limit(-1)]); - $this->assertEquals(false, $response); + $this->assertSame(false, $response); } /** @@ -194,10 +194,10 @@ public function testQueryOffset(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::offset(25)]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::offset(-1)]); - $this->assertEquals(false, $response); + $this->assertSame(false, $response); } /** @@ -208,16 +208,16 @@ public function testQueryOrder(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::orderAsc('title')]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::orderAsc('')]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::orderAsc()]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::orderAsc('doesNotExist')]); - $this->assertEquals(false, $response); + $this->assertSame(false, $response); } /** @@ -228,7 +228,7 @@ public function testQueryCursor(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::cursorAfter(new Document(['$id' => 'asdf']))]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); } /** @@ -246,7 +246,7 @@ public function testQueryGetByType(): void $queries = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); $this->assertCount(2, $queries); foreach ($queries as $query) { - $this->assertEquals(true, in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE])); + $this->assertSame(true, in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE])); } } @@ -258,25 +258,25 @@ public function testQueryEmpty(): void $validator = new Documents($this->attributes, [], Database::VAR_INTEGER); $response = $validator->isValid([Query::equal('title', [''])]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::equal('published', [false])]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::equal('price', [0])]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::greaterThan('price', 0)]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::greaterThan('published', false)]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); $response = $validator->isValid([Query::equal('price', [])]); - $this->assertEquals(false, $response); + $this->assertSame(false, $response); $response = $validator->isValid([Query::isNull('price')]); - $this->assertEquals(true, $response); + $this->assertSame(true, $response); } /** @@ -292,7 +292,7 @@ public function testOrQuery(): void )] )); - $this->assertEquals('Invalid query: Or queries require at least two queries', $validator->getDescription()); + $this->assertSame('Invalid query: Or queries require at least two queries', $validator->getDescription()); $this->assertFalse($validator->isValid( [ @@ -304,7 +304,7 @@ public function testOrQuery(): void )] )); - $this->assertEquals('Invalid query: Attribute not found in schema: not_found', $validator->getDescription()); + $this->assertSame('Invalid query: Attribute not found in schema: not_found', $validator->getDescription()); $this->assertFalse($validator->isValid( [ @@ -317,6 +317,6 @@ public function testOrQuery(): void )] )); - $this->assertEquals('Invalid query: Or queries can only contain filter queries', $validator->getDescription()); + $this->assertSame('Invalid query: Or queries can only contain filter queries', $validator->getDescription()); } } diff --git a/tests/unit/Validator/RolesTest.php b/tests/unit/Validator/RolesTest.php index e30921f36..20ee02bb7 100644 --- a/tests/unit/Validator/RolesTest.php +++ b/tests/unit/Validator/RolesTest.php @@ -29,7 +29,7 @@ public function testNotAnArray(): void { $object = new Roles(); $this->assertFalse($object->isValid('not an array')); - $this->assertEquals('Roles must be an array of strings.', $object->getDescription()); + $this->assertSame('Roles must be an array of strings.', $object->getDescription()); } public function testExceedLength(): void @@ -40,7 +40,7 @@ public function testExceedLength(): void Role::users()->toString(), Role::users()->toString() ])); - $this->assertEquals('You can only provide up to 2 roles.', $object->getDescription()); + $this->assertSame('You can only provide up to 2 roles.', $object->getDescription()); } public function testNotAllStrings(): void @@ -50,28 +50,28 @@ public function testNotAllStrings(): void Role::users()->toString(), 123 ])); - $this->assertEquals('Every role must be of type string.', $object->getDescription()); + $this->assertSame('Every role must be of type string.', $object->getDescription()); } public function testObsoleteWildcardRole(): void { $object = new Roles(); $this->assertFalse($object->isValid(['*'])); - $this->assertEquals('Wildcard role "*" has been replaced. Use "any" instead.', $object->getDescription()); + $this->assertSame('Wildcard role "*" has been replaced. Use "any" instead.', $object->getDescription()); } public function testObsoleteRolePrefix(): void { $object = new Roles(); $this->assertFalse($object->isValid(['read("role:123")'])); - $this->assertEquals('Roles using the "role:" prefix have been removed. Use "users", "guests", or "any" instead.', $object->getDescription()); + $this->assertSame('Roles using the "role:" prefix have been removed. Use "users", "guests", or "any" instead.', $object->getDescription()); } public function testDisallowedRoles(): void { $object = new Roles(allowed: [Roles::ROLE_USERS]); $this->assertFalse($object->isValid([Role::any()->toString()])); - $this->assertEquals('Role "any" is not allowed. Must be one of: users.', $object->getDescription()); + $this->assertSame('Role "any" is not allowed. Must be one of: users.', $object->getDescription()); } public function testLabels(): void diff --git a/tests/unit/Validator/StructureTest.php b/tests/unit/Validator/StructureTest.php index e4749d342..c4bd4667d 100644 --- a/tests/unit/Validator/StructureTest.php +++ b/tests/unit/Validator/StructureTest.php @@ -137,12 +137,12 @@ public function testDocumentInstance(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid('string')); - $this->assertEquals(false, $validator->isValid(null)); - $this->assertEquals(false, $validator->isValid(false)); - $this->assertEquals(false, $validator->isValid(1)); + $this->assertSame(false, $validator->isValid('string')); + $this->assertSame(false, $validator->isValid(null)); + $this->assertSame(false, $validator->isValid(false)); + $this->assertSame(false, $validator->isValid(1)); - $this->assertEquals('Invalid document structure: Value must be an instance of Document', $validator->getDescription()); + $this->assertSame('Invalid document structure: Value must be an instance of Document', $validator->getDescription()); } public function testCollectionAttribute(): void @@ -152,9 +152,9 @@ public function testCollectionAttribute(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document())); + $this->assertSame(false, $validator->isValid(new Document())); - $this->assertEquals('Invalid document structure: Missing collection attribute $collection', $validator->getDescription()); + $this->assertSame('Invalid document structure: Missing collection attribute $collection', $validator->getDescription()); } public function testCollection(): void @@ -164,7 +164,7 @@ public function testCollection(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'Demo Title', 'description' => 'Demo description', @@ -177,7 +177,7 @@ public function testCollection(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Collection not found', $validator->getDescription()); + $this->assertSame('Invalid document structure: Collection not found', $validator->getDescription()); } public function testRequiredKeys(): void @@ -187,7 +187,7 @@ public function testRequiredKeys(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'description' => 'Demo description', 'rating' => 5, @@ -199,7 +199,7 @@ public function testRequiredKeys(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Missing required attribute "title"', $validator->getDescription()); + $this->assertSame('Invalid document structure: Missing required attribute "title"', $validator->getDescription()); } public function testNullValues(): void @@ -209,7 +209,7 @@ public function testNullValues(): void Database::VAR_INTEGER ); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'My Title', 'description' => null, @@ -223,7 +223,7 @@ public function testNullValues(): void 'id' => '1000', ]))); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'My Title', 'description' => null, @@ -244,7 +244,7 @@ public function testUnknownKeys(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'Demo Title', 'titlex' => 'Unknown Attribute', @@ -258,7 +258,7 @@ public function testUnknownKeys(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Unknown attribute: "titlex"', $validator->getDescription()); + $this->assertSame('Invalid document structure: Unknown attribute: "titlex"', $validator->getDescription()); } public function testIntegerAsString(): void @@ -268,7 +268,7 @@ public function testIntegerAsString(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'Demo Title', 'description' => 'Demo description', @@ -281,7 +281,7 @@ public function testIntegerAsString(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid integer', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid integer', $validator->getDescription()); } public function testValidDocument(): void @@ -291,7 +291,7 @@ public function testValidDocument(): void Database::VAR_INTEGER ); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'Demo Title', 'description' => 'Demo description', @@ -312,7 +312,7 @@ public function testStringValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 5, 'description' => 'Demo description', @@ -325,7 +325,7 @@ public function testStringValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "title" has invalid type. Value must be a valid string and no longer than 256 chars', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "title" has invalid type. Value must be a valid string and no longer than 256 chars', $validator->getDescription()); } public function testArrayOfStringsValidation(): void @@ -335,7 +335,7 @@ public function testArrayOfStringsValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -348,9 +348,9 @@ public function testArrayOfStringsValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "tags[\'0\']" has invalid type. Value must be a valid string and no longer than 55 chars', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "tags[\'0\']" has invalid type. Value must be a valid string and no longer than 55 chars', $validator->getDescription()); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -363,9 +363,9 @@ public function testArrayOfStringsValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "tags[\'0\']" has invalid type. Value must be a valid string and no longer than 55 chars', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "tags[\'0\']" has invalid type. Value must be a valid string and no longer than 55 chars', $validator->getDescription()); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -378,7 +378,7 @@ public function testArrayOfStringsValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -391,7 +391,7 @@ public function testArrayOfStringsValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "tags[\'0\']" has invalid type. Value must be a valid string and no longer than 55 chars', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "tags[\'0\']" has invalid type. Value must be a valid string and no longer than 55 chars', $validator->getDescription()); } /** @@ -404,7 +404,7 @@ public function testArrayAsObjectValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -425,7 +425,7 @@ public function testArrayOfObjectsValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -446,7 +446,7 @@ public function testIntegerValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -459,9 +459,9 @@ public function testIntegerValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid integer', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid integer', $validator->getDescription()); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -474,7 +474,7 @@ public function testIntegerValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid integer', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid integer', $validator->getDescription()); } public function testArrayOfIntegersValidation(): void @@ -484,7 +484,7 @@ public function testArrayOfIntegersValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -498,7 +498,7 @@ public function testArrayOfIntegersValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -512,7 +512,7 @@ public function testArrayOfIntegersValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -526,7 +526,7 @@ public function testArrayOfIntegersValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -540,7 +540,7 @@ public function testArrayOfIntegersValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "reviews[\'0\']" has invalid type. Value must be a valid integer', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "reviews[\'0\']" has invalid type. Value must be a valid integer', $validator->getDescription()); } public function testFloatValidation(): void @@ -550,7 +550,7 @@ public function testFloatValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -563,9 +563,9 @@ public function testFloatValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "price" has invalid type. Value must be a valid float', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "price" has invalid type. Value must be a valid float', $validator->getDescription()); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -578,7 +578,7 @@ public function testFloatValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "price" has invalid type. Value must be a valid float', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "price" has invalid type. Value must be a valid float', $validator->getDescription()); } public function testBooleanValidation(): void @@ -588,7 +588,7 @@ public function testBooleanValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -601,9 +601,9 @@ public function testBooleanValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "published" has invalid type. Value must be a valid boolean', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "published" has invalid type. Value must be a valid boolean', $validator->getDescription()); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -616,7 +616,7 @@ public function testBooleanValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "published" has invalid type. Value must be a valid boolean', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "published" has invalid type. Value must be a valid boolean', $validator->getDescription()); } public function testFormatValidation(): void @@ -626,7 +626,7 @@ public function testFormatValidation(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -639,7 +639,7 @@ public function testFormatValidation(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "feedback" has invalid format. Value must be a valid email address', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "feedback" has invalid format. Value must be a valid email address', $validator->getDescription()); } public function testIntegerMaxRange(): void @@ -649,7 +649,7 @@ public function testIntegerMaxRange(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -662,7 +662,7 @@ public function testIntegerMaxRange(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid range between -2,147,483,647 and 2,147,483,647', $validator->getDescription()); + $this->assertSame('Invalid document structure: Attribute "rating" has invalid type. Value must be a valid range between -2,147,483,647 and 2,147,483,647', $validator->getDescription()); } public function testDoubleUnsigned(): void @@ -672,7 +672,7 @@ public function testDoubleUnsigned(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -695,7 +695,7 @@ public function testDoubleMaxRange(): void Database::VAR_INTEGER ); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'string', 'description' => 'Demo description', @@ -719,7 +719,7 @@ public function testId(): void $sqlId = '1000'; $mongoId = '0198fffb-d664-710a-9765-f922b3e81e3d'; - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'My Title', 'description' => null, @@ -733,7 +733,7 @@ public function testId(): void 'id' => $sqlId, ]))); - $this->assertEquals(false, $validator->isValid(new Document([ + $this->assertSame(false, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'My Title', 'description' => null, @@ -752,7 +752,7 @@ public function testId(): void Database::VAR_UUID7 ); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'My Title', 'description' => null, @@ -766,7 +766,7 @@ public function testId(): void 'id' => $mongoId, ]))); - $this->assertEquals(true, $validator->isValid(new Document([ + $this->assertSame(true, $validator->isValid(new Document([ '$collection' => ID::custom('posts'), 'title' => 'My Title', 'description' => null, @@ -846,7 +846,7 @@ public function testMissingRequiredFieldWithoutOperator(): void '$updatedAt' => '2000-04-01T12:00:00.000+00:00' ]))); - $this->assertEquals('Invalid document structure: Missing required attribute "rating"', $validator->getDescription()); + $this->assertSame('Invalid document structure: Missing required attribute "rating"', $validator->getDescription()); } } diff --git a/tests/unit/Validator/VectorTest.php b/tests/unit/Validator/VectorTest.php index be98d7ecf..a4975dff0 100644 --- a/tests/unit/Validator/VectorTest.php +++ b/tests/unit/Validator/VectorTest.php @@ -49,16 +49,16 @@ public function testVectorWithDifferentDimensions(): void public function testVectorDescription(): void { $validator = new Vector(3); - $this->assertEquals('Value must be an array of 3 numeric values', $validator->getDescription()); + $this->assertSame('Value must be an array of 3 numeric values', $validator->getDescription()); $validator256 = new Vector(256); - $this->assertEquals('Value must be an array of 256 numeric values', $validator256->getDescription()); + $this->assertSame('Value must be an array of 256 numeric values', $validator256->getDescription()); } public function testVectorType(): void { $validator = new Vector(3); - $this->assertEquals('array', $validator->getType()); + $this->assertSame('array', $validator->getType()); $this->assertFalse($validator->isArray()); } }