/** * Test main newusermail() function. */ public function test_version1importnewuseremail() { global $CFG; // This is needed by the required files. require_once dirname(__FILE__) . '/other/rlip_importplugin_version1elis_fakeemail.php'; $importplugin = new rlip_importplugin_version1elis_fakeemail(); $testuser = new stdClass(); $testuser->username = '******'; $testuser->idnumber = 'testidnumber'; $testuser->firstname = 'testfirstname'; $testuser->lastname = 'testlastname'; $testuser->email = '*****@*****.**'; // Test false return when not enabled. set_config('newuseremailenabled', '0', 'dhimport_version1elis'); set_config('newuseremailsubject', 'Test Subject', 'dhimport_version1elis'); set_config('newuseremailtemplate', 'Test Body', 'dhimport_version1elis'); $result = $importplugin->newuseremail($testuser); $this->assertFalse($result); // Test false return when enabled but empty template. set_config('newuseremailenabled', '1', 'dhimport_version1elis'); set_config('newuseremailsubject', 'Test Subject', 'dhimport_version1elis'); set_config('newuseremailtemplate', '', 'dhimport_version1elis'); $result = $importplugin->newuseremail($testuser); $this->assertFalse($result); // Test false return when enabled and has template, but user has empty email. set_config('newuseremailenabled', '1', 'dhimport_version1elis'); set_config('newuseremailsubject', 'Test Subject', 'dhimport_version1elis'); set_config('newuseremailtemplate', 'Test Body', 'dhimport_version1elis'); $testuser->email = ''; $result = $importplugin->newuseremail($testuser); $this->assertFalse($result); $testuser->email = '*****@*****.**'; // Test success when enabled, has template text, and user has email. $testsubject = 'Test Subject'; $testbody = 'Test Body'; set_config('newuseremailenabled', '1', 'dhimport_version1elis'); set_config('newuseremailsubject', $testsubject, 'dhimport_version1elis'); set_config('newuseremailtemplate', $testbody, 'dhimport_version1elis'); $result = $importplugin->newuseremail($testuser); $this->assertNotEmpty($result); $this->assertInternalType('array', $result); $this->assertArrayHasKey('user', $result); $this->assertEquals($testuser, $result['user']); $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('newuseremailenabled', '1', 'dhimport_version1elis'); set_config('newuseremailsubject', $testsubject, 'dhimport_version1elis'); set_config('newuseremailtemplate', $testbody, 'dhimport_version1elis'); $result = $importplugin->newuseremail($testuser); $this->assertNotEmpty($result); $this->assertInternalType('array', $result); $this->assertArrayHasKey('user', $result); $this->assertEquals($testuser, $result['user']); $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 %%username%%'; $expectedtestbody = 'Test Body ' . $testuser->username; set_config('newuseremailenabled', '1', 'dhimport_version1elis'); set_config('newuseremailsubject', $testsubject, 'dhimport_version1elis'); set_config('newuseremailtemplate', $testbody, 'dhimport_version1elis'); $result = $importplugin->newuseremail($testuser); $this->assertNotEmpty($result); $this->assertInternalType('array', $result); $this->assertArrayHasKey('user', $result); $this->assertEquals($testuser, $result['user']); $this->assertArrayHasKey('subject', $result); $this->assertEquals($testsubject, $result['subject']); $this->assertArrayHasKey('body', $result); $this->assertEquals($expectedtestbody, $result['body']); }