public function test_list_plan_competencies() { $this->setUser($this->creator); $dg = $this->getDataGenerator(); $lpg = $dg->get_plugin_generator('core_competency'); $f1 = $lpg->create_framework(); $f2 = $lpg->create_framework(); $c1a = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id())); $c1b = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id())); $c1c = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id())); $c2a = $lpg->create_competency(array('competencyframeworkid' => $f2->get_id())); $c2b = $lpg->create_competency(array('competencyframeworkid' => $f2->get_id())); $tpl = $lpg->create_template(); $lpg->create_template_competency(array('templateid' => $tpl->get_id(), 'competencyid' => $c1a->get_id())); $lpg->create_template_competency(array('templateid' => $tpl->get_id(), 'competencyid' => $c1c->get_id())); $lpg->create_template_competency(array('templateid' => $tpl->get_id(), 'competencyid' => $c2b->get_id())); $plan = $lpg->create_plan(array('userid' => $this->user->id, 'templateid' => $tpl->get_id())); $uc1a = $lpg->create_user_competency(array('userid' => $this->user->id, 'competencyid' => $c1a->get_id(), 'status' => user_competency::STATUS_IN_REVIEW, 'reviewerid' => $this->creator->id)); $uc1b = $lpg->create_user_competency(array('userid' => $this->user->id, 'competencyid' => $c1b->get_id())); $uc2b = $lpg->create_user_competency(array('userid' => $this->user->id, 'competencyid' => $c2b->get_id(), 'grade' => 2, 'proficiency' => 1)); $ux1a = $lpg->create_user_competency(array('userid' => $this->creator->id, 'competencyid' => $c1a->get_id())); $result = external::list_plan_competencies($plan->get_id()); $result = external::clean_returnvalue(external::list_plan_competencies_returns(), $result); $this->assertCount(3, $result); $this->assertEquals($c1a->get_id(), $result[0]['competency']['id']); $this->assertEquals($this->user->id, $result[0]['usercompetency']['userid']); $this->assertArrayNotHasKey('usercompetencyplan', $result[0]); $this->assertEquals($c1c->get_id(), $result[1]['competency']['id']); $this->assertEquals($this->user->id, $result[1]['usercompetency']['userid']); $this->assertArrayNotHasKey('usercompetencyplan', $result[1]); $this->assertEquals($c2b->get_id(), $result[2]['competency']['id']); $this->assertEquals($this->user->id, $result[2]['usercompetency']['userid']); $this->assertArrayNotHasKey('usercompetencyplan', $result[2]); $this->assertEquals(user_competency::STATUS_IN_REVIEW, $result[0]['usercompetency']['status']); $this->assertEquals(null, $result[1]['usercompetency']['grade']); $this->assertEquals(2, $result[2]['usercompetency']['grade']); $this->assertEquals(1, $result[2]['usercompetency']['proficiency']); // Check the return values when the plan status is complete. $completedplan = $lpg->create_plan(array('userid' => $this->user->id, 'templateid' => $tpl->get_id(), 'status' => plan::STATUS_COMPLETE)); $uc1a = $lpg->create_user_competency_plan(array('userid' => $this->user->id, 'competencyid' => $c1a->get_id(), 'planid' => $completedplan->get_id())); $uc1b = $lpg->create_user_competency_plan(array('userid' => $this->user->id, 'competencyid' => $c1c->get_id(), 'planid' => $completedplan->get_id())); $uc2b = $lpg->create_user_competency_plan(array('userid' => $this->user->id, 'competencyid' => $c2b->get_id(), 'planid' => $completedplan->get_id(), 'grade' => 2, 'proficiency' => 1)); $ux1a = $lpg->create_user_competency_plan(array('userid' => $this->creator->id, 'competencyid' => $c1a->get_id(), 'planid' => $completedplan->get_id())); $result = external::list_plan_competencies($completedplan->get_id()); $result = external::clean_returnvalue(external::list_plan_competencies_returns(), $result); $this->assertCount(3, $result); $this->assertEquals($c1a->get_id(), $result[0]['competency']['id']); $this->assertEquals($this->user->id, $result[0]['usercompetencyplan']['userid']); $this->assertArrayNotHasKey('usercompetency', $result[0]); $this->assertEquals($c1c->get_id(), $result[1]['competency']['id']); $this->assertEquals($this->user->id, $result[1]['usercompetencyplan']['userid']); $this->assertArrayNotHasKey('usercompetency', $result[1]); $this->assertEquals($c2b->get_id(), $result[2]['competency']['id']); $this->assertEquals($this->user->id, $result[2]['usercompetencyplan']['userid']); $this->assertArrayNotHasKey('usercompetency', $result[2]); $this->assertEquals(null, $result[1]['usercompetencyplan']['grade']); $this->assertEquals(2, $result[2]['usercompetencyplan']['grade']); $this->assertEquals(1, $result[2]['usercompetencyplan']['proficiency']); }