@@ -1650,6 +1650,77 @@ public function testArrayAttribute(): void
16501650 Query::contains ('pref ' , ['Joe ' ])
16511651 ]);
16521652 $ this ->assertCount (1 , $ documents );
1653+
1654+ // containsAny tests — should behave identically to contains
1655+
1656+ $ documents = $ database ->find ($ collection , [
1657+ Query::containsAny ('tv_show ' , ['love ' ])
1658+ ]);
1659+ $ this ->assertCount (1 , $ documents );
1660+
1661+ $ documents = $ database ->find ($ collection , [
1662+ Query::containsAny ('names ' , ['Jake ' , 'Joe ' ])
1663+ ]);
1664+ $ this ->assertCount (1 , $ documents );
1665+
1666+ $ documents = $ database ->find ($ collection , [
1667+ Query::containsAny ('numbers ' , [-1 , 0 , 999 ])
1668+ ]);
1669+ $ this ->assertCount (1 , $ documents );
1670+
1671+ $ documents = $ database ->find ($ collection , [
1672+ Query::containsAny ('booleans ' , [false , true ])
1673+ ]);
1674+ $ this ->assertCount (1 , $ documents );
1675+
1676+ $ documents = $ database ->find ($ collection , [
1677+ Query::containsAny ('pref ' , ['Joe ' ])
1678+ ]);
1679+ $ this ->assertCount (1 , $ documents );
1680+
1681+ // containsAny with no matching values
1682+ $ documents = $ database ->find ($ collection , [
1683+ Query::containsAny ('names ' , ['Jake ' , 'Unknown ' ])
1684+ ]);
1685+ $ this ->assertCount (0 , $ documents );
1686+
1687+ // containsAll tests on array attributes
1688+
1689+ // All values present in names array
1690+ $ documents = $ database ->find ($ collection , [
1691+ Query::containsAll ('names ' , ['Joe ' , 'Antony ' ])
1692+ ]);
1693+ $ this ->assertCount (1 , $ documents );
1694+
1695+ // One value missing from names array
1696+ $ documents = $ database ->find ($ collection , [
1697+ Query::containsAll ('names ' , ['Joe ' , 'Jake ' ])
1698+ ]);
1699+ $ this ->assertCount (0 , $ documents );
1700+
1701+ // All values present in numbers array
1702+ $ documents = $ database ->find ($ collection , [
1703+ Query::containsAll ('numbers ' , [0 , 100 , -1 ])
1704+ ]);
1705+ $ this ->assertCount (1 , $ documents );
1706+
1707+ // One value missing from numbers array
1708+ $ documents = $ database ->find ($ collection , [
1709+ Query::containsAll ('numbers ' , [0 , 999 ])
1710+ ]);
1711+ $ this ->assertCount (0 , $ documents );
1712+
1713+ // Single value containsAll — should match
1714+ $ documents = $ database ->find ($ collection , [
1715+ Query::containsAll ('booleans ' , [false ])
1716+ ]);
1717+ $ this ->assertCount (1 , $ documents );
1718+
1719+ // Boolean value not present
1720+ $ documents = $ database ->find ($ collection , [
1721+ Query::containsAll ('booleans ' , [true ])
1722+ ]);
1723+ $ this ->assertCount (0 , $ documents );
16531724 }
16541725 }
16551726
0 commit comments