/**
* @dataProvider entityManagerDataProvider
* @param EntityManager $em
*/
public function testRelatedIndexDeletion(EntityManager $em)
{
$home = new Address();
$home->setId(44)->setStreet('Oxford St');
$work = new Address();
$work->setId(45)->setStreet('George St');
$user = new User();
$user->setId(23)->setName('Barry')->setAddress($home);
$em->persist($user)->persist($home)->persist($work)->flush();
/** @var User|OrmProxyInterface $user_home */
$user_home = $em->retrieveByIndex(User::class, 'slug', $user->getId() . '.' . $home->getId());
$this->assertEquals(23, $user_home->getId());
$this->assertEquals('Oxford St', $user_home->getAddress()->getStreet());
$slug = $user_home->getIndexOriginalValue('slug');
$this->assertEquals('23.44', $slug);
$user_home->setName('Other Barry');
$user_home->setAddress($work);
$em->persist($user_home)->flush();
/** @var User $user_work */
$user_work = $em->retrieveByIndex(User::class, 'slug', $user->getId() . '.' . $work->getId());
$this->assertEquals(23, $user_work->getId());
$this->assertEquals('George St', $user_work->getAddress()->getStreet());
$this->setExpectedException(NotFoundException::class);
$em->retrieveByIndex(User::class, 'slug', $user->getId() . '.' . $home->getId());
}