MDL-52562 tool_lp: Deleting a plan removes related data

This commit is contained in:
Frederic Massart
2016-04-18 10:58:49 +08:00
parent dc7f49ce2f
commit 357d38628c
2 changed files with 36 additions and 0 deletions
+6
View File
@@ -1882,6 +1882,12 @@ class api {
// Wrap the suppression in a DB transaction.
$transaction = $DB->start_delegated_transaction();
// Delete plan competencies.
$plancomps = plan_competency::get_records(array('planid' => $plan->get_id()));
foreach ($plancomps as $plancomp) {
$plancomp->delete();
}
// Delete archive user competencies if the status of the plan is complete.
if ($plan->get_status() == plan::STATUS_COMPLETE) {
self::remove_archived_user_competencies_in_plan($plan);
+30
View File
@@ -27,10 +27,12 @@ global $CFG;
require_once($CFG->dirroot . '/webservice/tests/helpers.php');
use tool_lp\api;
use tool_lp\external;
use tool_lp\plan;
use tool_lp\related_competency;
use tool_lp\user_competency;
use tool_lp\user_competency_plan;
use tool_lp\plan_competency;
use tool_lp\template_competency;
@@ -1347,6 +1349,34 @@ class tool_lp_external_testcase extends externallib_advanced_testcase {
$this->assertTrue(external::delete_plan($plan4->id));
}
public function test_delete_plan_removes_relations() {
$this->setAdminUser();
$dg = $this->getDataGenerator();
$lpg = $dg->get_plugin_generator('tool_lp');
$user = $dg->create_user();
$plan = $lpg->create_plan(array('userid' => $user->id));
$framework = $lpg->create_framework();
$comp1 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
$comp2 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
$comp3 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
$pc1 = $lpg->create_plan_competency(array('planid' => $plan->get_id(), 'competencyid' => $comp1->get_id()));
$pc2 = $lpg->create_plan_competency(array('planid' => $plan->get_id(), 'competencyid' => $comp2->get_id()));
$pc3 = $lpg->create_plan_competency(array('planid' => $plan->get_id(), 'competencyid' => $comp3->get_id()));
// Complete the plan to generate user_competency_plan entries.
api::complete_plan($plan);
// Confirm the data we have.
$this->assertEquals(3, plan_competency::count_records(array('planid' => $plan->get_id())));
$this->assertEquals(3, user_competency_plan::count_records(array('planid' => $plan->get_id(), 'userid' => $user->id)));
// Delete the plan now.
api::delete_plan($plan->get_id());
$this->assertEquals(0, plan_competency::count_records(array('planid' => $plan->get_id())));
$this->assertEquals(0, user_competency_plan::count_records(array('planid' => $plan->get_id(), 'userid' => $user->id)));
}
public function test_list_plan_competencies() {
$this->setUser($this->creator);