MDL-55043 core_competency: Sort by id to ensure we get expected result.
authorRajesh Taneja <rajesh@moodle.com>
Wed, 6 Jul 2016 07:11:15 +0000 (15:11 +0800)
committerRajesh Taneja <rajesh@moodle.com>
Sun, 10 Jul 2016 03:25:06 +0000 (11:25 +0800)
competency/classes/api.php
competency/classes/evidence.php
competency/tests/api_test.php

index a440bc2..043111e 100644 (file)
@@ -4152,7 +4152,7 @@ class api {
      * @param int $limit Number of records to return.
      * @return \core_competency\evidence[]
      */
-    public static function list_evidence_in_course($userid = 0, $courseid = 0, $competencyid = 0, $sort = 'timecreated, id',
+    public static function list_evidence_in_course($userid = 0, $courseid = 0, $competencyid = 0, $sort = 'timecreated',
                                                    $order = 'DESC', $skip = 0, $limit = 0) {
         static::require_enabled();
 
index a6a9e92..40e1448 100644 (file)
@@ -311,11 +311,9 @@ class evidence extends persistent {
         );
 
         if (!empty($sort)) {
-            $sortcolumns = explode(',', $sort);
-            array_walk($sortcolumns, function(&$sortcolumn, $key, $order) {
-                $sortcolumn = trim($sortcolumn) . ' ' . $order;
-            }, $order);
-            $sort = ' ORDER BY e.' . implode(', e.', $sortcolumns);
+            $sort = ' ORDER BY e.' . $sort . ' ' . $order . ', e.id ASC';
+        } else {
+            $sort = ' ORDER BY e.id ASC';
         }
 
         $sql = 'SELECT e.*
index 44aaf76..cc96253 100644 (file)
@@ -2615,9 +2615,9 @@ class core_competency_api_testcase extends advanced_testcase {
         $evidence2 = api::add_evidence($u1->id, $c->get_id(), $cmcontext->id, \core_competency\evidence::ACTION_LOG,
             'invaliddata', 'error');
 
-        $result = api::list_evidence_in_course($u1->id, $course->id, $c->get_id());
-        $this->assertEquals($result[0]->get_id(), $evidence2->get_id());
-        $this->assertEquals($result[1]->get_id(), $evidence1->get_id());
+        $result = api::list_evidence_in_course($u1->id, $course->id, $c->get_id(), 'timecreated', 'ASC');
+        $this->assertEquals($evidence1->get_id(), $result[0]->get_id());
+        $this->assertEquals($evidence2->get_id(), $result[1]->get_id());
     }
 
     public function test_list_course_modules_using_competency() {