/**
* @dataProvider entityManagerDataProvider
* @param EntityManager $em
*/
public function testRefs(EntityManager $em)
{
$members = $em->getDriver()->getMultiValueIndex($em->getKeyScheme()->getEntityRefKey('leaf', 'leaf1'));
$this->assertCount(0, $members);
$leaf = (new Leaf())->setId('leaf1');
$owner = (new Owner())->setId('owner1')->setLeaf([$leaf]);
$em->persist($leaf)->persist($owner)->flush();
$members = $em->getDriver()->getMultiValueIndex($em->getKeyScheme()->getEntityRefKey('leaf', 'leaf1'));
$this->assertCount(1, $members);
$ref = new Ref(Owner::class, 'owner1', 'leaf');
$this->assertEquals((string) $ref, $members[0]);
$leaves = $em->sortedQuery(new SortedQuery($owner, 'leaf', 'id'));
$this->assertCount(1, $leaves);
$em->refresh($owner);
$em->refresh($leaf);
$leaf->setPublished(false);
$em->persist($leaf)->flush();
$leaves = $em->sortedQuery(new SortedQuery($owner, 'leaf', 'id'));
$this->assertCount(0, $leaves);
$leaf->setPublished(true);
$em->persist($leaf)->flush();
$leaves = $em->sortedQuery(new SortedQuery($owner, 'leaf', 'id'));
$this->assertCount(1, $leaves);
$em->delete($leaf)->flush();
$leaves = $em->sortedQuery(new SortedQuery($owner, 'leaf', 'id'));
$this->assertCount(0, $leaves);
}