/** * @return mixed */ private function isRecordValid() { return $this->record->getRecordManager()->getRecordValidationContainer()->validate($this->record); }
/** * @param Record $owningRecord * @param Relation $relation * @param string $refObjectId */ private function assertReferencedRelatedReferences(Record $owningRecord, Relation $relation, $refObjectId) { $oldIdentifier = Record::NEW_RECORD_ID_MARK . $owningRecord->getOid(); $newIdentifier = $owningRecord->getInternalId(); $rm = $owningRecord->getRecordManager(); /** @var ReferenceMap $referenceMap */ $referenceMap = self::readAttribute($relation, 'map'); $referenceMapping = $referenceMap->getMapping(); $refTable = $relation->getJoinTable($rm, $relation->getReferencedAlias()); $refTableRepository = $refTable->getRepository(); $referencedRecord = $refTableRepository->getByOid($refObjectId); $refId = $referencedRecord->getInternalId(); // assert that owning record id is mapped for referenced record $this->assertArrayHasKey($refId, $referenceMapping); if ($relation->isOneToMany()) { $this->assertNotContains($oldIdentifier, $referenceMapping[$refId]); $this->assertContains($newIdentifier, $referenceMapping[$refId]); } else { $this->assertEquals($newIdentifier, $referenceMapping[$refId]); } // assert record collection if ($relation->isOneToMany()) { $recordCollection = $referenceMap->getRelatedCollection($referencedRecord->getOid()); $this->assertNotNull($recordCollection); $this->assertTrue($recordCollection->has($owningRecord), "Expected '{$owningRecord}' is referenced in relation '" . $relation->getReferencedAlias() . "'"); } }