/** * Test delete categories */ public function test_delete_categories() { global $DB; $this->resetAfterTest(true); // Set the required capabilities by the external function $contextid = context_system::instance()->id; $roleid = $this->assignUserCapability('moodle/category:manage', $contextid); $category1 = self::getDataGenerator()->create_category(); $category2 = self::getDataGenerator()->create_category( array('parent' => $category1->id)); $category3 = self::getDataGenerator()->create_category(); $category4 = self::getDataGenerator()->create_category( array('parent' => $category3->id)); $category5 = self::getDataGenerator()->create_category( array('parent' => $category4->id)); //delete category 1 and 2 + delete category 4, category 5 moved under category 3 core_course_external::delete_categories(array( array('id' => $category1->id, 'recursive' => 1), array('id' => $category4->id) )); //check $category 1 and 2 are deleted $notdeletedcount = $DB->count_records_select('course_categories', 'id IN ( ' . $category1->id . ',' . $category2->id . ',' . $category4->id . ')'); $this->assertEquals(0, $notdeletedcount); //check that $category5 as $category3 for parent $dbcategory5 = $DB->get_record('course_categories', array('id' => $category5->id)); $this->assertEquals($dbcategory5->path, $category3->path . '/' . $category5->id); // Call without required capability $this->unassignUserCapability('moodle/category:manage', $contextid, $roleid); $this->setExpectedException('required_capability_exception'); $createdsubcats = core_course_external::delete_categories( array(array('id' => $category3->id))); }