public function testSubmitValidData() { $scale = new Scale(); $scale->setName('Scale 1'); $level = new Level(); $level->setName('Level 1'); $level->setValue(0); $level->setScale($scale); $parent = new Competency(); $parent->setName('Competency 1'); $parent->setScale($scale); $ability = new Ability(); $ability->setName('Foo'); $this->om->persist($scale); $this->om->persist($level); $this->om->persist($parent); $this->om->persist($ability); $this->om->flush(); $formData = ['ability' => 'Foo', 'level' => $level->getId()]; $form = $this->factory->create(new AbilityImportType($this->om), null, ['competency' => $parent]); $form->submit($formData); $this->assertTrue($form->isSynchronized()); $this->assertEquals($ability, $form->getData()); $this->assertEquals($level, $ability->getLevel()); $this->assertViewIsValid($form, $formData); }
public function testCreateLinkReturnsFalseIfLinkExists() { $activity = new Activity(); $ability = new Ability(); $ability->linkActivity($activity); $this->assertFalse($this->manager->createLink($activity, $ability)); }
/** * Returns the association between a competency and an ability. * * @param Competency $parent * @param Ability $ability * * @return null|object * * @throws \Exception if the ability is not linked to the competency */ public function findOneByTerms(Competency $parent, Ability $ability) { $link = $this->findOneBy(['competency' => $parent, 'ability' => $ability]); if (!$link) { throw new \RuntimeException("Competency {$parent->getId()} is not linked to ability {$ability->getId()}"); } return $link; }
protected function persistAbility($name, $minActivityCount = 1) { $ability = new Ability(); $ability->setName($name); $ability->setMinActivityCount($minActivityCount); $this->om->persist($ability); return $ability; }
/** * @param Ability $ability */ public function setAbility(Ability $ability) { $this->ability = $ability; $this->abilityName = $ability->getName(); }
private function loadAbility(Ability $ability) { return ['id' => $ability->getId(), 'name' => $ability->getName(), 'type' => 'ability_', 'paths' => array_map(function ($link) { return ['level' => $link->getLevel()->getName(), 'steps' => array_map(function ($step) { return $step->getName(); }, $this->competencyRepo->getPath($link->getCompetency()))]; }, $ability->getCompetencyAbilities()->toArray())]; }
public function testValidAddAbilityAction() { $request = new Request(); $parent = new Competency(); $ability = new Ability(); $level = new Level(); $ability->setLevel($level); $this->formHandler->expects($this->once())->method('isValid')->with('hevinci_form_ability_import', $request, null, ['competency' => $parent])->willReturn(true); $this->formHandler->expects($this->exactly(2))->method('getData')->willReturn($ability); $this->manager->expects($this->once())->method('linkAbilityToCompetency')->with($parent, $ability, $level)->willReturn($ability); $this->assertEquals(json_encode($ability), $this->controller->addAbilityAction($request, $parent)->getContent()); }
/** * Creates a link between a competency and an existing ability. * * @param Competency $parent * @param Ability $ability * @param Level $level * @return Ability * @throws \LogicException if a link already exists */ public function linkAbilityToCompetency(Competency $parent, Ability $ability, Level $level) { $link = $this->competencyAbilityRepo->findOneBy(['competency' => $parent, 'ability' => $ability]); if ($link) { throw new \LogicException("Ability {$ability->getId()} is already linked to competency {$parent->getId()}"); } $link = new CompetencyAbility(); $link->setCompetency($parent); $link->setAbility($ability); $link->setLevel($level); $this->om->persist($link); $this->om->flush(); return $ability; }
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; }