/** * Test main newenrolmentemail() function. */ public function test_version1importnewenrolmentemail() { global $CFG, $DB; // This is needed by the required files. require_once dirname(__FILE__) . '/other/rlip_importplugin_version1_fakeemail.php'; $importplugin = new rlip_importplugin_version1_fakeemail(); $course = $this->getDataGenerator()->create_course(); $user = $this->getDataGenerator()->create_user(); // Enrol some students. $user2 = $this->getDataGenerator()->create_user(); $this->getDataGenerator()->enrol_user($user2->id, $course->id); $user3 = $this->getDataGenerator()->create_user(); $this->getDataGenerator()->enrol_user($user3->id, $course->id); // Enrol teachers. $teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher')); $teacher = $this->getDataGenerator()->create_user(); $this->getDataGenerator()->enrol_user($teacher->id, $course->id, $teacherrole->id); $teacher2 = $this->getDataGenerator()->create_user(); $this->getDataGenerator()->enrol_user($teacher2->id, $course->id, $teacherrole->id); // Test false return when empty user id or course id. $result = $importplugin->newenrolmentemail(null, $course->id); $this->assertFalse($result); $result = $importplugin->newenrolmentemail($user->id, null); $this->assertFalse($result); // Test false return when not enabled. set_config('newenrolmentemailenabled', '0', 'dhimport_version1'); set_config('newenrolmentemailsubject', 'Test Subject', 'dhimport_version1'); set_config('newenrolmentemailtemplate', 'Test Body', 'dhimport_version1'); set_config('newenrolmentemailfrom', 'teacher', 'dhimport_version1'); $result = $importplugin->newenrolmentemail($user->id, $course->id); $this->assertFalse($result); // Test false return when enabled but empty template. set_config('newenrolmentemailenabled', '1', 'dhimport_version1'); set_config('newenrolmentemailsubject', 'Test Subject', 'dhimport_version1'); set_config('newenrolmentemailtemplate', '', 'dhimport_version1'); set_config('newenrolmentemailfrom', 'teacher', 'dhimport_version1'); $result = $importplugin->newenrolmentemail($user->id, $course->id); $this->assertFalse($result); // Test success when enabled, has template text, and user has email. $testsubject = 'Test Subject'; $testbody = 'Test Body'; set_config('newenrolmentemailenabled', '1', 'dhimport_version1'); set_config('newenrolmentemailsubject', $testsubject, 'dhimport_version1'); set_config('newenrolmentemailtemplate', $testbody, 'dhimport_version1'); set_config('newenrolmentemailfrom', 'admin', 'dhimport_version1'); $result = $importplugin->newenrolmentemail($user->id, $course->id); $this->assertNotEmpty($result); $this->assertInternalType('array', $result); $this->assertArrayHasKey('user', $result); $this->assertEquals($user, $result['user']); $this->assertArrayHasKey('from', $result); $this->assertEquals(get_admin(), $result['from']); $this->assertArrayHasKey('subject', $result); $this->assertEquals($testsubject, $result['subject']); $this->assertArrayHasKey('body', $result); $this->assertEquals($testbody, $result['body']); // Test success and from is set to teacher when selected. $testsubject = 'Test Subject'; $testbody = 'Test Body'; set_config('newenrolmentemailenabled', '1', 'dhimport_version1'); set_config('newenrolmentemailsubject', $testsubject, 'dhimport_version1'); set_config('newenrolmentemailtemplate', $testbody, 'dhimport_version1'); set_config('newenrolmentemailfrom', 'teacher', 'dhimport_version1'); $result = $importplugin->newenrolmentemail($user->id, $course->id); $this->assertNotEmpty($result); $this->assertInternalType('array', $result); $this->assertArrayHasKey('user', $result); $this->assertEquals($user, $result['user']); $this->assertArrayHasKey('from', $result); $this->assertEquals($teacher, $result['from']); $this->assertArrayHasKey('subject', $result); $this->assertEquals($testsubject, $result['subject']); $this->assertArrayHasKey('body', $result); $this->assertEquals($testbody, $result['body']); // Test that subject is replaced by empty string when not present. $testsubject = null; $testbody = 'Test Body'; set_config('newenrolmentemailenabled', '1', 'dhimport_version1'); set_config('newenrolmentemailsubject', $testsubject, 'dhimport_version1'); set_config('newenrolmentemailtemplate', $testbody, 'dhimport_version1'); set_config('newenrolmentemailfrom', 'admin', 'dhimport_version1'); $result = $importplugin->newenrolmentemail($user->id, $course->id); $this->assertNotEmpty($result); $this->assertInternalType('array', $result); $this->assertArrayHasKey('user', $result); $this->assertEquals($user, $result['user']); $this->assertArrayHasKey('from', $result); $this->assertEquals(get_admin(), $result['from']); $this->assertArrayHasKey('subject', $result); $this->assertEquals('', $result['subject']); $this->assertArrayHasKey('body', $result); $this->assertEquals($testbody, $result['body']); // Full testing of replacement is done below, but just test that it's being done at all from the main function. $testsubject = 'Test Subject'; $testbody = 'Test Body %%user_username%%'; $expectedtestbody = 'Test Body ' . $user->username; set_config('newenrolmentemailenabled', '1', 'dhimport_version1'); set_config('newenrolmentemailsubject', $testsubject, 'dhimport_version1'); set_config('newenrolmentemailtemplate', $testbody, 'dhimport_version1'); set_config('newenrolmentemailfrom', 'admin', 'dhimport_version1'); $result = $importplugin->newenrolmentemail($user->id, $course->id); $this->assertNotEmpty($result); $this->assertInternalType('array', $result); $this->assertArrayHasKey('user', $result); $this->assertEquals($user, $result['user']); $this->assertArrayHasKey('from', $result); $this->assertEquals(get_admin(), $result['from']); $this->assertArrayHasKey('subject', $result); $this->assertEquals($testsubject, $result['subject']); $this->assertArrayHasKey('body', $result); $this->assertEquals($expectedtestbody, $result['body']); }