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);
     $om = $this->client->getContainer()->get('claroline.persistence.object_manager');
     $om->persist($scale);
     $om->persist($level);
     $om->persist($parent);
     $om->flush();
     $formData = ['name' => 'Foo', 'level' => $level->getId(), 'minActivityCount' => 2];
     $form = $this->factory->create(new AbilityType(), null, ['competency' => $parent]);
     $form->submit($formData);
     $this->assertTrue($form->isSynchronized());
     $ability = $form->getData();
     $this->assertInstanceOf('HeVinci\\CompetencyBundle\\Entity\\Ability', $ability);
     $this->assertEquals('Foo', $ability->getName());
     $this->assertEquals($level, $ability->getLevel());
     $this->assertEquals(2, $ability->getMinActivityCount());
     $this->assertViewIsValid($form, $formData);
 }
 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);
 }
示例#3
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 testListFrameworksAsShortArrays()
 {
     $c1 = new Competency();
     $c1->setName('Foo');
     $c1->setDescription('Foo desc');
     $c2 = new Competency();
     $c2->setName('Bar');
     $c2->setDescription('Bar desc');
     $this->competencyRepo->expects($this->once())->method('findBy')->with(['parent' => null])->willReturn([$c1, $c2]);
     $expected = [['id' => null, 'name' => 'Foo', 'description' => 'Foo desc'], ['id' => null, 'name' => 'Bar', 'description' => 'Bar desc']];
     $this->assertEquals($expected, $this->manager->listFrameworks(true));
 }
 public function testValidationFailure()
 {
     $parent = $this->mock('HeVinci\\CompetencyBundle\\Entity\\Competency');
     $parent->expects($this->once())->method('getRoot')->willReturn(1);
     $competency = new Competency();
     $competency->setName('CHILD');
     $constraint = new UniqueCompetency();
     $constraint->parentCompetency = $parent;
     $this->repo->expects($this->once())->method('findOneBy')->with(['name' => 'CHILD', 'root' => 1])->willReturn('MATCH');
     $this->context->expects($this->once())->method('addViolationAt')->with('name', $constraint->message);
     $this->validator->validate($competency, $constraint);
 }
 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;
 }