From 42f4ba9b65fdeb2254ad94e8043665a1c783869f Mon Sep 17 00:00:00 2001 From: Frederic Massart <fred@moodle.com> Date: Mon, 5 Aug 2013 15:32:43 +0800 Subject: [PATCH] MDL-40737 tool_uploadcourse: Prove that category equals to 0 is handled --- admin/tool/uploadcourse/tests/course_test.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/admin/tool/uploadcourse/tests/course_test.php b/admin/tool/uploadcourse/tests/course_test.php index 8f047c20709..ee979b42ea8 100644 --- a/admin/tool/uploadcourse/tests/course_test.php +++ b/admin/tool/uploadcourse/tests/course_test.php @@ -768,6 +768,7 @@ class tool_uploadcourse_course_testcase extends advanced_testcase { } public function test_create_bad_category() { + global $DB; $this->resetAfterTest(true); // Ensure fails when category cannot be resolved upon creation. @@ -778,6 +779,14 @@ class tool_uploadcourse_course_testcase extends advanced_testcase { $this->assertFalse($co->prepare()); $this->assertArrayHasKey('couldnotresolvecatgorybyid', $co->get_errors()); + // Ensure fails when category is 0 on create. + $mode = tool_uploadcourse_processor::MODE_CREATE_NEW; + $updatemode = tool_uploadcourse_processor::UPDATE_ALL_WITH_DATA_ONLY; + $data = array('shortname' => 'c1', 'summary' => 'summary', 'fullname' => 'FN', 'category' => '0'); + $co = new tool_uploadcourse_course($mode, $updatemode, $data); + $this->assertFalse($co->prepare()); + $this->assertArrayHasKey('missingmandatoryfields', $co->get_errors()); + // Ensure fails when category cannot be resolved upon update. $c1 = $this->getDataGenerator()->create_course(); $mode = tool_uploadcourse_processor::MODE_UPDATE_ONLY; @@ -786,6 +795,31 @@ class tool_uploadcourse_course_testcase extends advanced_testcase { $co = new tool_uploadcourse_course($mode, $updatemode, $data); $this->assertFalse($co->prepare()); $this->assertArrayHasKey('couldnotresolvecatgorybyid', $co->get_errors()); + + // Ensure does not update the category when it is 0. + $c1 = $this->getDataGenerator()->create_course(); + $mode = tool_uploadcourse_processor::MODE_UPDATE_ONLY; + $updatemode = tool_uploadcourse_processor::UPDATE_ALL_WITH_DATA_ONLY; + $data = array('shortname' => $c1->shortname, 'category' => '0'); + $co = new tool_uploadcourse_course($mode, $updatemode, $data); + $this->assertTrue($co->prepare()); + $this->assertEmpty($co->get_errors()); + $this->assertEmpty($co->get_statuses()); + $co->proceed(); + $this->assertEquals($c1->category, $DB->get_field('course', 'category', array('id' => $c1->id))); + + // Ensure does not update the category when it is set to 0 in the defaults. + $c1 = $this->getDataGenerator()->create_course(); + $mode = tool_uploadcourse_processor::MODE_UPDATE_ONLY; + $updatemode = tool_uploadcourse_processor::UPDATE_ALL_WITH_DATA_OR_DEFAUTLS; + $data = array('shortname' => $c1->shortname); + $defaults = array('category' => '0'); + $co = new tool_uploadcourse_course($mode, $updatemode, $data, $defaults); + $this->assertTrue($co->prepare()); + $this->assertEmpty($co->get_errors()); + $this->assertEmpty($co->get_statuses()); + $co->proceed(); + $this->assertEquals($c1->category, $DB->get_field('course', 'category', array('id' => $c1->id))); } public function test_enrolment_data() {