dbName = ThrowawayDb::create(); } protected function tearDown(): void { ThrowawayDb::destroy($this->dbName); parent::tearDown(); } #[TestDox('By ID succeeds when a document exists')] public function testByIdSucceedsWhenADocumentExists(): void { $this->assertTrue(Exists::byId(ThrowawayDb::TABLE, 'three'), 'There should have been an existing document'); } #[TestDox('By ID succeeds when a document does not exist')] public function testByIdSucceedsWhenADocumentDoesNotExist(): void { $this->assertFalse(Exists::byId(ThrowawayDb::TABLE, 'seven'), 'There should not have been an existing document'); } public function testByFieldsSucceedsWhenDocumentsExist(): void { $this->assertTrue(Exists::byFields(ThrowawayDb::TABLE, [Field::EQ('num_value', 10)]), 'There should have been existing documents'); } public function testByFieldsSucceedsWhenNoMatchingDocumentsExist(): void { $this->assertFalse(Exists::byFields(ThrowawayDb::TABLE, [Field::LT('nothing', 'none')]), 'There should not have been any existing documents'); } public function testByContainsSucceedsWhenDocumentsExist(): void { $this->assertTrue(Exists::byContains(ThrowawayDb::TABLE, ['value' => 'purple']), 'There should have been existing documents'); } public function testByContainsSucceedsWhenNoMatchingDocumentsExist(): void { $this->assertFalse(Exists::byContains(ThrowawayDb::TABLE, ['value' => 'violet']), 'There should not have been existing documents'); } #[TestDox('By JSON Path succeeds when documents exist')] public function testByJsonPathSucceedsWhenDocumentsExist(): void { $this->assertTrue(Exists::byJsonPath(ThrowawayDb::TABLE, '$.num_value ? (@ == 10)'), 'There should have been existing documents'); } #[TestDox('By JSON Path succeeds when no matching documents exist')] public function testByJsonPathSucceedsWhenNoMatchingDocumentsExist(): void { $this->assertFalse(Exists::byJsonPath(ThrowawayDb::TABLE, '$.num_value ? (@ == 10.1)'), 'There should have been existing documents'); } }