MDL-16474 scale: Allow scales with 1 item
authorFrederic Massart <fred@moodle.com>
Mon, 30 Jun 2014 02:15:12 +0000 (10:15 +0800)
committerFrederic Massart <fred@moodle.com>
Mon, 30 Jun 2014 06:24:24 +0000 (14:24 +0800)
grade/edit/scale/edit_form.php
lib/grade/tests/grade_scale_test.php

index 848cc4b..1f57544 100644 (file)
@@ -135,7 +135,7 @@ class edit_scale_form extends moodleform {
             $scalearray = array_map('trim', $scalearray);
             $scaleoptioncount = count($scalearray);
 
-            if (count($scalearray) < 2) {
+            if (count($scalearray) < 1) {
                 $errors['scale'] = get_string('badlyformattedscale', 'grades');
             } else {
                 $thescale = implode(',',$scalearray);
index 67b6da4..722f768 100644 (file)
@@ -36,6 +36,7 @@ class core_grade_scale_testcase extends grade_base_testcase {
         $this->sub_test_grade_scale_fetch();
         $this->sub_test_scale_load_items();
         $this->sub_test_scale_compact_items();
+        $this->sub_test_scale_one_item();
     }
 
     protected function sub_test_scale_construct() {
@@ -127,4 +128,44 @@ class core_grade_scale_testcase extends grade_base_testcase {
         // The original string and the new string may have differences in whitespace around the delimiter, and that's OK.
         $this->assertEquals(preg_replace('/\s*,\s*/', ',', $this->scale[0]->scale), $scale->scale);
     }
+
+    protected function sub_test_scale_one_item() {
+        $params = new stdClass();
+        $params->name         = 'unittestscale1i';
+        $params->courseid     = $this->course->id;
+        $params->userid       = $this->userid;
+        $params->scale        = 'Like';
+        $params->description  = 'This scale is used to like something.';
+        $params->timemodified = time();
+
+        $scale = new grade_scale($params, false);
+        $scale->load_items();
+
+        $this->assertCount(1, $scale->scale_items);
+        $this->assertSame(array('Like'), $scale->scale_items);
+        $this->assertSame('Like', $scale->compact_items());
+
+        $scale->insert();
+
+        // Manual grade item with 1 item scale.
+        $grade_item = new stdClass();
+        $grade_item->courseid = $this->course->id;
+        $grade_item->categoryid = $this->grade_categories[0]->id;
+        $grade_item->itemname = 'manual grade_item scale_1';
+        $grade_item->itemtype = 'manual';
+        $grade_item->itemnumber = 0;
+        $grade_item->needsupdate = false;
+        $grade_item->gradetype = GRADE_TYPE_SCALE;
+        $grade_item->scaleid = $scale->id;
+        $grade_item->iteminfo = 'Manual grade item used for unit testing';
+        $grade_item->timecreated = time();
+        $grade_item->timemodified = time();
+
+        $grade_item = new grade_item($grade_item);
+        $grade_item->insert();
+
+        $this->assertNotEmpty($grade_item->id);
+        $this->assertEquals(1, $grade_item->grademin);
+        $this->assertEquals(1, $grade_item->grademax);
+    }
 }