/**
  * Test resolving sortorder when moving a competency.
  */
 public function test_fix_sortorder_when_moving_competency()
 {
     $this->resetAfterTest(true);
     $this->setUser($this->creator);
     $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency');
     $framework = $lpg->create_framework();
     $c1 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $c1a = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id(), 'parentid' => $c1->get_id()));
     $c1b = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id(), 'parentid' => $c1->get_id()));
     $c2 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $c2a = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id(), 'parentid' => $c2->get_id()));
     $c2b = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id(), 'parentid' => $c2->get_id()));
     $this->assertEquals(0, $c1->get_sortorder());
     $this->assertEquals(0, $c1a->get_sortorder());
     $this->assertEquals(1, $c1b->get_sortorder());
     $this->assertEquals(1, $c2->get_sortorder());
     $this->assertEquals(0, $c2a->get_sortorder());
     $this->assertEquals(1, $c2b->get_sortorder());
     $result = external::set_parent_competency($c2a->get_id(), $c1->get_id());
     $result = external_api::clean_returnvalue(external::set_parent_competency_returns(), $result);
     $c1->read();
     $c1a->read();
     $c1b->read();
     $c2->read();
     $c2a->read();
     $c2b->read();
     $this->assertEquals(0, $c1->get_sortorder());
     $this->assertEquals(0, $c1a->get_sortorder());
     $this->assertEquals(1, $c1b->get_sortorder());
     $this->assertEquals(2, $c2a->get_sortorder());
     $this->assertEquals(1, $c2->get_sortorder());
     $this->assertEquals(0, $c2b->get_sortorder());
     // Move a root node.
     $result = external::set_parent_competency($c2->get_id(), $c1b->get_id());
     $result = external_api::clean_returnvalue(external::set_parent_competency_returns(), $result);
     $c1->read();
     $c1a->read();
     $c1b->read();
     $c2->read();
     $c2a->read();
     $c2b->read();
     $this->assertEquals(0, $c1->get_sortorder());
     $this->assertEquals(0, $c1a->get_sortorder());
     $this->assertEquals(1, $c1b->get_sortorder());
     $this->assertEquals(0, $c2->get_sortorder());
     $this->assertEquals(0, $c2b->get_sortorder());
     $this->assertEquals(2, $c2a->get_sortorder());
 }