示例#1
0
 public function testNamedRef()
 {
     $referrerTestObj = new ReferrerTestObj();
     $referrerNamedPropTestObj = new ReferrerNamedPropTestObj();
     $allReferrerRefNamedPropTestObj = new AllReferrerRefNamedPropTestObj();
     $referrerTestObj->id = "/functional/referrerTestObj";
     $referrerTestObj->name = "referrerTestObj";
     $referrerNamedPropTestObj->id = "/functional/referrerNamedPropTestObj";
     $referrerNamedPropTestObj->name = "referrerNamedPropTestObj";
     $allReferrerRefNamedPropTestObj->id = "/functional/allReferrerRefNamedPropTestObj";
     $referrerTestObj->reference = $allReferrerRefNamedPropTestObj;
     $referrerNamedPropTestObj->namedReference = $allReferrerRefNamedPropTestObj;
     $this->dm->persist($referrerTestObj);
     $this->dm->persist($referrerNamedPropTestObj);
     $this->dm->flush();
     $this->dm->clear();
     $referenced = $this->dm->find(null, "/functional/allReferrerRefNamedPropTestObj");
     $this->assertCount(1, $referenced->referrers);
     $this->assertEquals("referrerNamedPropTestObj", $referenced->referrers[0]->name);
     $otherRef = new OtherReferrerTestObj();
     $otherRef->id = '/functional/otherObj';
     $otherRef->name = 'other ref';
     $otherRef->namedReference = $referenced;
     $this->dm->persist($otherRef);
     $this->dm->flush();
     $this->dm->clear();
     $referenced = $this->dm->find(null, "/functional/allReferrerRefNamedPropTestObj");
     // the other ref is a different class and should get filtered out
     $this->assertCount(1, $referenced->referrers);
     $this->assertEquals("referrerNamedPropTestObj", $referenced->referrers[0]->name);
     $allReferrers = $this->dm->getReferrers($referenced, null, 'named-reference');
     $this->assertCount(2, $allReferrers);
 }