public function test_remove_competency_from_template() { $syscontext = context_system::instance(); $this->setUser($this->creator); $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency'); // Create a template. $template = $this->create_template(1, true); // Create a competency. $framework = $lpg->create_framework(); $competency = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id())); // Add the competency. external::add_competency_to_template($template->id, $competency->get_id()); // Check that it was added. $this->assertEquals(1, external::count_competencies_in_template($template->id)); // Check that we can remove the competency. external::remove_competency_from_template($template->id, $competency->get_id()); // Check that it was removed. $this->assertEquals(0, external::count_competencies_in_template($template->id)); // Unassign capability. unassign_capability('moodle/competency:templatemanage', $this->creatorrole, $syscontext->id); accesslib_clear_all_caches_for_unit_testing(); // Check we can not remove the competency now. try { external::add_competency_to_template($template->id, $competency->get_id()); $this->fail('Exception expected due to not permissions to manage template competencies'); } catch (moodle_exception $e) { $this->assertEquals('nopermissions', $e->errorcode); } }