示例#1
0
 private function walkJsonNodes(\stdClass $parentData, Competency $parentCompetency, Scale $scale)
 {
     if (isset($parentData->competencies)) {
         foreach ($parentData->competencies as $competency) {
             $newCompetency = new Competency();
             $newCompetency->setName($competency->name);
             $newCompetency->setParent($parentCompetency, true);
             $this->walkJsonNodes($competency, $newCompetency, $scale);
         }
     } else {
         foreach ($parentData->abilities as $ability) {
             $newAbility = new Ability();
             $newAbility->setName($ability->name);
             $level = null;
             foreach ($scale->getLevels() as $scaleLevel) {
                 if ($scaleLevel->getName() === $ability->level) {
                     $level = $scaleLevel;
                     break;
                 }
             }
             $link = new CompetencyAbility();
             $link->setCompetency($parentCompetency);
             $link->setAbility($newAbility);
             $link->setLevel($level);
         }
     }
     return $parentCompetency;
 }
 public function testValidateWithExistingChildCompetency()
 {
     $parent = $this->mock('HeVinci\\CompetencyBundle\\Entity\\Competency');
     $parent->expects($this->once())->method('getRoot')->willReturn(1);
     $competency = new Competency();
     $competency->setName('CHILD');
     $competency->setParent($parent);
     $this->repo->expects($this->once())->method('findOneBy')->with(['name' => 'CHILD', 'root' => 1])->willReturn(null);
     $this->context->expects($this->never())->method('addViolationAt');
     $this->validator->validate($competency, new UniqueCompetency());
 }
 protected function persistCompetency($name, Competency $parent = null, Scale $scale = null)
 {
     $competency = new Competency();
     $competency->setName($name);
     if ($parent) {
         $competency->setParent($parent);
     }
     if ($scale) {
         $competency->setScale($scale);
     }
     $this->om->persist($competency);
     return $competency;
 }
 /**
  * Creates a sub-competency.
  *
  * @param Competency $parent
  * @param Competency $child
  * @return Competency
  * @throws \LogicException if the competency already has abilities
  */
 public function createSubCompetency(Competency $parent, Competency $child)
 {
     if ($this->competencyAbilityRepo->countByCompetency($parent) > 0) {
         throw new \LogicException("Cannot create sub-competency: competency {$parent->getId()}" . ' is already associated with abilities');
     }
     $child->setParent($parent);
     $this->om->persist($child);
     $this->om->flush();
     return $child;
 }