public function oneToOneRelationsAreMappedCorrectly()
{
$classMetadata = new ClassMetadata(Fixtures\OneToOneEntity::class);
$driver = $this->objectManager->get(FlowAnnotationDriver::class);
$driver->loadMetadataForClass(Fixtures\OneToOneEntity::class, $classMetadata);
$selfReferencingMapping = $classMetadata->getAssociationMapping('selfReferencing');
$this->assertNotEmpty($selfReferencingMapping['joinColumns']);
$this->assertTrue($selfReferencingMapping['isOwningSide']);
$bidirectionalMapping = $classMetadata->getAssociationMapping('bidirectionalRelation');
$this->assertNotEmpty($bidirectionalMapping['joinColumns']);
$this->assertEquals('bidirectionalRelation', $bidirectionalMapping['inversedBy']);
$this->assertTrue($bidirectionalMapping['isOwningSide']);
$classMetadata2 = new ClassMetadata(Fixtures\OneToOneEntity2::class);
$driver->loadMetadataForClass(Fixtures\OneToOneEntity2::class, $classMetadata2);
$bidirectionalMapping2 = $classMetadata2->getAssociationMapping('bidirectionalRelation');
$this->assertFalse(isset($bidirectionalMapping2['joinColumns']));
$this->assertEquals('bidirectionalRelation', $bidirectionalMapping2['mappedBy']);
$this->assertFalse($bidirectionalMapping2['isOwningSide']);
$unidirectionalMapping = $classMetadata->getAssociationMapping('unidirectionalRelation');
$this->assertNotEmpty($unidirectionalMapping['joinColumns']);
$this->assertTrue($unidirectionalMapping['isOwningSide']);
/* @var $entityManager \Doctrine\Common\Persistence\ObjectManager */
$entityManager = $this->objectManager->get(\Doctrine\Common\Persistence\ObjectManager::class);
$schemaTool = new SchemaTool($entityManager);
$schema = $schemaTool->getSchemaFromMetadata([$entityManager->getClassMetadata(Fixtures\OneToOneEntity2::class)]);
/* @var $foreignKey \Doctrine\DBAL\Schema\ForeignKeyConstraint */
foreach ($schema->getTable('persistence_onetooneentity2')->getForeignKeys() as $foreignKey) {
if ($foreignKey->getForeignTableName() === 'persistence_onetooneentity') {
$this->assertTrue(false);
}
}
}