Merge branch 'MDL-49025-m34' of https://github.com/NeillM/moodle into MOODLE_34_STABLE

This commit is contained in:
David Monllao
2018-07-16 13:35:13 +02:00
2 changed files with 75 additions and 2 deletions
+10 -2
View File
@@ -513,8 +513,16 @@ class assign_submission_file extends assign_submission_plugin {
* @return bool
*/
public function submission_is_empty(stdClass $data) {
$files = file_get_drafarea_files($data->files_filemanager);
return count($files->list) == 0;
global $USER;
$fs = get_file_storage();
// Get a count of all the draft files, excluding any directories.
$files = $fs->get_area_files(context_user::instance($USER->id)->id,
'user',
'draft',
$data->files_filemanager,
'id',
false);
return count($files) == 0;
}
/**
@@ -72,6 +72,34 @@ class assignsubmission_file_locallib_testcase extends advanced_testcase {
$this->assertTrue($result === $expected);
}
/**
* Test that an empty directory is is not detected as a valid submission by submission_is_empty.
*/
public function test_submission_is_empty_directory_only() {
$this->resetAfterTest();
$course = $this->getDataGenerator()->create_course();
$student = $this->getDataGenerator()->create_and_enrol($course, 'student');
$assign = $this->create_instance($course, [
'assignsubmission_file_enabled' => 1,
'assignsubmission_file_maxfiles' => 12,
'assignsubmission_file_maxsizebytes' => 10,
]);
$this->setUser($student->id);
$itemid = file_get_unused_draft_itemid();
$submission = (object)['files_filemanager' => $itemid];
$plugin = $assign->get_submission_plugin_by_type('file');
$fs = get_file_storage();
$fs->create_directory(
context_user::instance($student->id)->id,
'user',
'draft',
$itemid,
'/subdirectory/'
);
$this->assertTrue($plugin->submission_is_empty($submission));
}
/**
* Test new_submission_empty
*
@@ -105,6 +133,34 @@ class assignsubmission_file_locallib_testcase extends advanced_testcase {
$this->assertTrue($result === $expected);
}
/**
* Test that an empty directory is is not detected as a valid submission by new_submission_is_empty.
*/
public function test_new_submission_empty_directory_only() {
$this->resetAfterTest();
$course = $this->getDataGenerator()->create_course();
$student = $this->getDataGenerator()->create_and_enrol($course, 'student');
$assign = $this->create_instance($course, [
'assignsubmission_file_enabled' => 1,
'assignsubmission_file_maxfiles' => 12,
'assignsubmission_file_maxsizebytes' => 10,
]);
$this->setUser($student->id);
$itemid = file_get_unused_draft_itemid();
$submission = (object)['files_filemanager' => $itemid];
$plugin = $assign->get_submission_plugin_by_type('file');
$fs = get_file_storage();
$fs->create_directory(
context_user::instance($student->id)->id,
'user',
'draft',
$itemid,
'/subdirectory/'
);
$this->assertTrue($assign->new_submission_empty($submission));
}
/**
* Dataprovider for the test_submission_is_empty testcase
*
@@ -121,6 +177,15 @@ class assignsubmission_file_locallib_testcase extends advanced_testcase {
],
false
],
'With file in directory' => [
[
'component' => 'user',
'filearea' => 'draft',
'filepath' => '/subdir/',
'filename' => 'not_a_virus.exe'
],
false
],
'Without file' => [null, true]
];
}