class gradeimport_csv_load_data_testcase extends grade_base_testcase {
/** @var string $oktext Text to be imported. This data should have no issues being imported. */
- protected $oktext = '"First name",Surname,"ID number",Institution,Department,"Email address","Assignment: Assignment for grape group", "Feedback: Assignment for grape group","Course total"
-Anne,Able,,"Moodle HQ","Rock on!",student7@mail.com,56.00,"We welcome feedback",56.00
-Bobby,Bunce,,"Moodle HQ","Rock on!",student5@mail.com,75.00,,75.00';
+ protected $oktext = '"First name",Surname,"ID number",Institution,Department,"Email address","Assignment: Assignment for grape group", "Feedback: Assignment for grape group","Course total","Last downloaded from this course"
+Anne,Able,1,"Moodle HQ","Rock on!",student7@mail.com,56.00,"We welcome feedback",56.00,1412327067
+Bobby,Bunce,2,"Moodle HQ","Rock on!",student5@mail.com,75.00,,75.00,1412327067';
/** @var string $badtext Text to be imported. This data has an extra column and should not succeed in being imported. */
protected $badtext = '"First name",Surname,"ID number",Institution,Department,"Email address","Assignment: Assignment for grape group","Course total"
$expecteddata = array(array(
'Anne',
'Able',
- '',
+ '1',
'Moodle HQ',
'Rock on!',
'student7@mail.com',
56.00,
'We welcome feedback',
- 56.00
+ 56.00,
+ 1412327067
),
array(
'Bobby',
'Bunce',
- '',
+ '2',
'Moodle HQ',
'Rock on!',
'student5@mail.com',
75.00,
'',
- 75.00
+ 75.00,
+ 1412327067
)
);
'Email address',
'Assignment: Assignment for grape group',
'Feedback: Assignment for grape group',
- 'Course total'
+ 'Course total',
+ 'Last downloaded from this course'
);
+
// Check that general data is returned as expected.
$this->assertEquals($csvpreview->get_previewdata(), $expecteddata);
// Check that headers are returned as expected.
*/
public function test_prepare_import_grade_data() {
global $DB;
-
+ $course1 = $this->getDataGenerator()->create_course();
// Need to add one of the users into the system.
$user = new stdClass();
$user->firstname = 'Anne';
$user->lastname = 'Able';
$user->email = 'student7@mail.com';
+ $user->id_number = 1;
// Insert user 1.
- $this->getDataGenerator()->create_user($user);
+ $user1 = $this->getDataGenerator()->create_user($user);
+ $this->getDataGenerator()->enrol_user($user1->id, $course1->id);
+
$user = new stdClass();
$user->firstname = 'Bobby';
$user->lastname = 'Bunce';
$user->email = 'student5@mail.com';
+ $user->id_number = 2;
// Insert user 2.
- $this->getDataGenerator()->create_user($user);
+ $user2 = $this->getDataGenerator()->create_user($user);
+ $this->getDataGenerator()->enrol_user($user2->id, $course1->id);
- $this->csv_load($this->oktext);
+ $assign1 = $this->getDataGenerator()->create_module('assign', array('course' => $course1->id, 'itemid' => 1));
+
+ $csvdata =$this->csv_load($this->oktext);
$importcode = 007;
$verbosescales = 0;
$formdata->mapping_6 = 'new';
$formdata->mapping_7 = 'feedback_2';
$formdata->mapping_8 = 0;
+ $formdata->mapping_9 = 0;
$formdata->map = 1;
$formdata->id = 2;
$formdata->iid = $this->iid;
$formdata->importcode = $importcode;
+ $formdata->forceimport = 1;
// Blam go time.
$testobject = new phpunit_gradeimport_csv_load_data();
$verbosescales);
// If everything inserted properly then this should be true.
$this->assertTrue($dataloaded);
+ grade_import_commit($this->courseid, $importcode, false, false);
+
+ // Test using force import disabled.
+ $formdata->mapping_6 = $assign1->id;
+ $formdata->forceimport = 0;
+ $csvdata[0][6] = '76.00';
+ $testobject = new phpunit_gradeimport_csv_load_data();
+ $dataloaded = $testobject->prepare_import_grade_data($this->columns, $formdata, $this->csvimport, $this->courseid, '', '',
+ $verbosescales);
+ $this->assertTrue($dataloaded);
+ grade_import_commit($this->courseid, $importcode, false, false);
+
+ // Test last exported date.
+ $formdata->mapping_6 = $assign1->id;
+ $formdata->forceimport = 0;
+ $csvdata[0][6] = '77.00';
+ $testobject = new phpunit_gradeimport_csv_load_data();
+ $dataloaded = $testobject->prepare_import_grade_data($this->columns, $formdata, $this->csvimport, $this->courseid, '', '',
+ $verbosescales);
+ // Should return false now, since the grade were updated since last export.
+ $this->assertFalse($dataloaded);
+
+ // Make sure we get a error message.
+ $errors = $testobject->get_gradebookerrors();
+ $this->assertEquals($errors[0], get_string('gradealreadyupdated', 'grades', fullname($user1)));
}
}