Пример #1
0
 /**
  * Find the plans for the user and this competency.
  *
  * Note that this:
  * - does not perform any capability check.
  * - may return completed plans.
  * - may return an empty array.
  *
  * @return plans[]
  */
 public function get_plans()
 {
     return plan::get_by_user_and_competency($this->get_userid(), $this->get_competencyid());
 }
Пример #2
0
 public function test_get_by_user_and_competency()
 {
     $this->resetAfterTest();
     $this->setAdminUser();
     $dg = $this->getDataGenerator();
     $lpg = $dg->get_plugin_generator('core_competency');
     $u1 = $dg->create_user();
     $u2 = $dg->create_user();
     $u3 = $dg->create_user();
     $u4 = $dg->create_user();
     $f1 = $lpg->create_framework();
     $c1 = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id()));
     $c2 = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id()));
     $tpl1 = $lpg->create_template();
     $lpg->create_template_competency(array('competencyid' => $c1->get_id(), 'templateid' => $tpl1->get_id()));
     $p1 = $lpg->create_plan(array('userid' => $u1->id));
     $lpg->create_plan_competency(array('planid' => $p1->get_id(), 'competencyid' => $c1->get_id()));
     $p2 = $lpg->create_plan(array('userid' => $u2->id));
     $lpg->create_plan_competency(array('planid' => $p2->get_id(), 'competencyid' => $c1->get_id()));
     $p3 = $lpg->create_plan(array('userid' => $u3->id, 'templateid' => $tpl1->get_id()));
     $p4 = $lpg->create_plan(array('userid' => $u4->id, 'templateid' => $tpl1->get_id()));
     api::complete_plan($p2);
     api::complete_plan($p4);
     // Finding a plan, not completed.
     $plans = plan::get_by_user_and_competency($u1->id, $c1->get_id());
     $this->assertCount(1, $plans);
     $plan = array_shift($plans);
     $this->assertEquals($p1->get_id(), $plan->get_id());
     $this->assertNotEquals(plan::STATUS_COMPLETE, $plan->get_status());
     // Finding a completed plan.
     $plans = plan::get_by_user_and_competency($u2->id, $c1->get_id());
     $this->assertCount(1, $plans);
     $plan = array_shift($plans);
     $this->assertEquals($p2->get_id(), $plan->get_id());
     $this->assertEquals(plan::STATUS_COMPLETE, $plan->get_status());
     // Finding a plan based on a template, not completed.
     $plans = plan::get_by_user_and_competency($u3->id, $c1->get_id());
     $this->assertCount(1, $plans);
     $plan = array_shift($plans);
     $this->assertEquals($p3->get_id(), $plan->get_id());
     $this->assertTrue($plan->is_based_on_template());
     $this->assertNotEquals(plan::STATUS_COMPLETE, $plan->get_status());
     // Finding a plan based on a template.
     $plans = plan::get_by_user_and_competency($u4->id, $c1->get_id());
     $this->assertCount(1, $plans);
     $plan = array_shift($plans);
     $this->assertEquals($p4->get_id(), $plan->get_id());
     $this->assertTrue($plan->is_based_on_template());
     $this->assertEquals(plan::STATUS_COMPLETE, $plan->get_status());
     // Finding more than one plan, no template.
     $p5 = $lpg->create_plan(array('userid' => $u1->id));
     $lpg->create_plan_competency(array('planid' => $p5->get_id(), 'competencyid' => $c1->get_id()));
     $plans = plan::get_by_user_and_competency($u1->id, $c1->get_id());
     $this->assertCount(2, $plans);
     $plan = array_shift($plans);
     $this->assertEquals($p1->get_id(), $plan->get_id());
     $plan = array_shift($plans);
     $this->assertEquals($p5->get_id(), $plan->get_id());
     // Finding more than one plan, with template.
     $p6 = $lpg->create_plan(array('userid' => $u1->id, 'templateid' => $tpl1->get_id()));
     $plans = plan::get_by_user_and_competency($u1->id, $c1->get_id());
     $this->assertCount(3, $plans);
     $plan = array_shift($plans);
     $this->assertEquals($p1->get_id(), $plan->get_id());
     $plan = array_shift($plans);
     $this->assertEquals($p5->get_id(), $plan->get_id());
     $plan = array_shift($plans);
     $this->assertEquals($p6->get_id(), $plan->get_id());
     // Finding no plans.
     $plans = plan::get_by_user_and_competency($u1->id, $c2->get_id());
     $this->assertCount(0, $plans);
 }