/** * Test create and update groupings. * @return void */ public function test_create_update_groupings() { global $DB; $this->resetAfterTest(true); $this->setAdminUser(); $course = self::getDataGenerator()->create_course(); $grouping1data = array(); $grouping1data['courseid'] = $course->id; $grouping1data['name'] = 'Grouping 1 Test'; $grouping1data['description'] = 'Grouping 1 Test description'; $grouping1data['descriptionformat'] = FORMAT_MOODLE; $grouping1data['idnumber'] = 'TEST'; $grouping1 = self::getDataGenerator()->create_grouping($grouping1data); $grouping1data['name'] = 'Another group'; try { $groupings = core_group_external::create_groupings(array($grouping1data)); $this->fail('Exception expected due to already existing idnumber.'); } catch (moodle_exception $e) { $this->assertInstanceOf('invalid_parameter_exception', $e); $this->assertEquals('Invalid parameter value detected (Grouping with the same idnumber already exists)', $e->getMessage()); } // No exception should be triggered. $grouping1data['id'] = $grouping1->id; $grouping1data['idnumber'] = 'CHANGED'; unset($grouping1data['courseid']); core_group_external::update_groupings(array($grouping1data)); $grouping2data = array(); $grouping2data['courseid'] = $course->id; $grouping2data['name'] = 'Grouping 2 Test'; $grouping2data['description'] = 'Grouping 2 Test description'; $grouping2data['descriptionformat'] = FORMAT_MOODLE; $grouping2data['idnumber'] = 'TEST'; $grouping2 = self::getDataGenerator()->create_grouping($grouping2data); $grouping2data['id'] = $grouping2->id; $grouping2data['idnumber'] = 'CHANGED'; unset($grouping2data['courseid']); try { $groupings = core_group_external::update_groupings(array($grouping2data)); $this->fail('Exception expected due to already existing idnumber.'); } catch (moodle_exception $e) { $this->assertInstanceOf('invalid_parameter_exception', $e); $this->assertEquals('Invalid parameter value detected (A different grouping with the same idnumber already exists)', $e->getMessage()); } }