/** * 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()); }
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); }