public function testQuery(EntityManager $em)
{
$a = new SluggedArticle();
$a->setId(1)->setName("Article A")->setSlug("article-alpha");
$b = new SluggedArticle();
$b->setId(2)->setName("Article B")->setSlug("article-bravo");
$c = new SluggedArticle();
$c->setId(3)->setName("Document C")->setSlug("article-charlie");
$d = new SluggedArticle();
$d->setId(4)->setName("Document D")->setSlug("article-almost-alpha");
$em->persist($a)->persist($b)->persist($c)->persist($d)->flush();
$result = $em->indexedQuery(new IndexedQuery(SluggedArticle::class, ['slug' => 'article-al*']));
$this->assertCount(2, $result);
$names = ['Article A', 'Document D'];
$count = 0;
foreach ($result as $entity) {
$this->assertContains($entity->getName(), $names);
$count++;
$names = array_diff($names, [$entity->getName()]);
}
$this->assertEquals(2, $count);
$result = $em->indexedQuery(new IndexedQuery(SluggedArticle::class, ['slug' => 'article-al*', 'name' => 'Docu*']));
$this->assertCount(1, $result);
$ids = $result->getIdList();
$this->assertCount(1, $ids);
$this->assertEquals('4', $ids[0]);
$entity = $result->getEntityById('4');
$this->assertEquals('Document D', $entity->getName());
}