dbName = ThrowawayDb::create(); } protected function tearDown(): void { ThrowawayDb::destroy($this->dbName); parent::tearDown(); } public function testAllSucceeds(): void { $count = Count::all(ThrowawayDb::TABLE); $this->assertEquals(5, $count, 'There should have been 5 matching documents'); } public function testByFieldsSucceedsForANumericRange(): void { $count = Count::byFields(ThrowawayDb::TABLE, [Field::BT('num_value', 10, 20)]); $this->assertEquals(3, $count, 'There should have been 3 matching documents'); } public function testByFieldsSucceedsForANonNumericRange(): void { $count = Count::byFields(ThrowawayDb::TABLE, [Field::BT('value', 'aardvark', 'apple')]); $this->assertEquals(1, $count, 'There should have been 1 matching document'); } public function testByContainsSucceedsWhenDocumentsMatch(): void { $this->assertEquals(2, Count::byContains(ThrowawayDb::TABLE, ['value' => 'purple']), 'There should have been 2 matching documents'); } public function testByContainsSucceedsWhenNoDocumentsMatch(): void { $this->assertEquals(0, Count::byContains(ThrowawayDb::TABLE, ['value' => 'magenta']), 'There should have been no matching documents'); } #[TestDox('By JSON Path succeeds when documents match')] public function testByJsonPathSucceedsWhenDocumentsMatch(): void { $this->assertEquals(2, Count::byJsonPath(ThrowawayDb::TABLE, '$.num_value ? (@ < 5)'), 'There should have been 2 matching documents'); } #[TestDox('By JSON Path succeeds when no documents match')] public function testByJsonPathSucceedsWhenNoDocumentsMatch(): void { $this->assertEquals(0, Count::byJsonPath(ThrowawayDb::TABLE, '$.num_value ? (@ > 100)'), 'There should have been no matching documents'); } }