/** * @inheritdoc */ public function process(UnitOfWork $uow) { $co = CommitOrderCalculator::getCommitOrderFromMetadata($this->metadataFactory); $set = self::prepareCommitOrderArray($co); $this->executeInserts($uow, $set); $this->executeUpdateDeletes($uow, $set); }
/** * @test */ public function verify_commit_ordering() { $class1 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass1'); $class2 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass2'); $class3 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass3'); $class4 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass4'); $class5 = new ClassMetadata(__NAMESPACE__ . '\\NodeClass5'); $calc = new CommitOrderCalculator(); $calc->addClass($class1); $calc->addClass($class2); $calc->addClass($class3); $calc->addClass($class4); $calc->addClass($class5); $calc->addDependency($class1, $class2); $calc->addDependency($class2, $class3); $calc->addDependency($class3, $class4); $calc->addDependency($class5, $class1); $sorted = $calc->getCommitOrder(); // There is only 1 valid ordering for this constellation $expected = array_map(function (ClassMetadata $md) { return $md->name; }, [$class5, $class1, $class2, $class3, $class4]); $this->assertSame($expected, $sorted); }