public function testOneToManyRaceFlush(EntityManager $em)
{
$time = new \DateTime();
$article1 = new Article();
$article1->setId(201)->setTitle('Article 201')->setTimeCreated($time)->setLastModified($time);
$category1 = new Category();
$category1->setId(201)->setName('Category 201');
$category1->addArticle($article1);
$em->persist($category1)->flush()->persist($article1)->flush();
/** @var Article|OrmProxyInterface $r_article */
$r_article = $em->retrieve('Bravo3\\Orm\\Tests\\Entities\\OneToMany\\Article', 201);
$this->assertEquals('Article 201', $r_article->getTitle());
// Should make DB query here
$r_category = $r_article->getCanonicalCategory();
$this->assertTrue($r_category instanceof Category);
// Check inverse side too -
/** @var Category|OrmProxyInterface $ir_category */
$ir_category = $em->retrieve('Bravo3\\Orm\\Tests\\Entities\\OneToMany\\Category', 201);
$this->assertEquals('Category 201', $ir_category->getName());
// Should make DB query here
$ir_articles = $ir_category->getArticles();
$this->assertCount(1, $ir_articles);
$ir_article = $ir_articles[0];
$this->assertTrue($ir_article instanceof Article);
}