dbName = ThrowawayDb::create(); } protected function tearDown(): void { ThrowawayDb::destroy($this->dbName); parent::tearDown(); } public function testCreateSucceeds(): void { $list = DocumentList::create(Query::selectFromTable(ThrowawayDb::TABLE), [], new DocumentMapper(TestDocument::class)); $this->assertNotNull($list, 'There should have been a document list created'); $list = null; } public function testItems(): void { $list = DocumentList::create(Query::selectFromTable(ThrowawayDb::TABLE), [], new DocumentMapper(TestDocument::class)); $this->assertNotNull($list, 'There should have been a document list created'); $count = 0; foreach ($list->items() as $item) { $this->assertContains($item->id, ['one', 'two', 'three', 'four', 'five'], 'An unexpected document ID was returned'); $count++; } $this->assertEquals(5, $count, 'There should have been 5 documents returned'); } public function testHasItemsSucceedsWithEmptyResults(): void { $list = DocumentList::create(Query::selectFromTable(ThrowawayDb::TABLE) . " WHERE data->>'num_value' < 0", [], new DocumentMapper(TestDocument::class)); $this->assertNotNull($list, 'There should have been a document list created'); $this->assertFalse($list->hasItems(), 'There should be no items in the list'); } public function testHasItemsSucceedsWithNonEmptyResults(): void { $list = DocumentList::create(Query::selectFromTable(ThrowawayDb::TABLE), [], new DocumentMapper(TestDocument::class)); $this->assertNotNull($list, 'There should have been a document list created'); $this->assertTrue($list->hasItems(), 'There should be items in the list'); foreach ($list->items() as $ignored) { $this->assertTrue($list->hasItems(), 'There should be items remaining in the list'); } $this->assertFalse($list->hasItems(), 'There should be no remaining items in the list'); } }