MDL-40863 mod_resource: do not cache user-specific info
authorMarina Glancy <marina@moodle.com>
Fri, 23 Oct 2015 09:50:16 +0000 (17:50 +0800)
committerDan Poltawski <dan@moodle.com>
Fri, 23 Oct 2015 10:25:51 +0000 (11:25 +0100)
mod/resource/lib.php
mod/resource/tests/behat/display_resource.feature [new file with mode: 0644]
mod/resource/tests/fixtures/samplefile.txt [new file with mode: 0644]

index 71e8f49..e786687 100644 (file)
@@ -238,7 +238,7 @@ function resource_get_coursemodule_info($coursemodule) {
     }
 
     // If any optional extra details are turned on, store in custom data
-    $info->customdata = resource_get_optional_details($resource, $coursemodule);
+    $info->customdata = $resource->displayoptions;
 
     return $info;
 }
@@ -250,7 +250,11 @@ function resource_get_coursemodule_info($coursemodule) {
  * @param cm_info $cm Course module information
  */
 function resource_cm_info_view(cm_info $cm) {
-    $details = $cm->customdata;
+    global $CFG;
+    require_once($CFG->dirroot . '/mod/resource/locallib.php');
+
+    $resource = (object)array('displayoptions' => $cm->customdata);
+    $details = resource_get_optional_details($resource, $cm);
     if ($details) {
         $cm->set_after_link(' ' . html_writer::tag('span', $details,
                 array('class' => 'resourcelinkdetails')));
diff --git a/mod/resource/tests/behat/display_resource.feature b/mod/resource/tests/behat/display_resource.feature
new file mode 100644 (file)
index 0000000..1126241
--- /dev/null
@@ -0,0 +1,66 @@
+@mod @mod_resource
+Feature: Teacher can specify different display options for the resource
+  In order to provide more information about a file
+  As a teacher
+  I need to be able to show size, type and modified date
+
+  Background:
+    Given the following "users" exist:
+      | username | firstname | lastname | email |
+      | student1 | Student | 1 | student1@example.com |
+      | teacher1 | Teacher | 1 | teacher1@example.com |
+    And the following "courses" exist:
+      | fullname | shortname | category |
+      | Course 1 | C1 | 0 |
+    And the following "course enrolments" exist:
+      | user | course | role |
+      | teacher1 | C1 | editingteacher |
+      | student1 | C1 | student |
+    And I log in as "teacher1"
+    And I follow "Course 1"
+    And I turn editing mode on
+
+  @javascript
+  Scenario: Specifying no additional display options for a file resource
+    When I add a "File" to section "1"
+    And I set the following fields to these values:
+      | Name                      | Myfile     |
+      | Show size                 | 0          |
+      | Show type                 | 0          |
+      | Show upload/modified date | 0          |
+    And I upload "mod/resource/tests/fixtures/samplefile.txt" file to "Select files" filemanager
+    And I press "Save and display"
+    Then ".resourcedetails" "css_element" should not exist
+    And I follow "Course 1"
+    And ".activity.resource .resourcelinkdetails" "css_element" should not exist
+    And I log out
+
+  @javascript
+  Scenario Outline: Specifying different display options for a file resource
+    When I add a "File" to section "1"
+    And I set the following fields to these values:
+      | Name                      | Myfile     |
+      | Display                   | Open       |
+      | Show size                 | <showsize> |
+      | Show type                 | <showtype> |
+      | Show upload/modified date | <showdate> |
+    And I upload "mod/resource/tests/fixtures/samplefile.txt" file to "Select files" filemanager
+    And I press "Save and display"
+    Then I <seesize> see "6 bytes" in the ".resourcedetails" "css_element"
+    And I <seetype> see "Text file" in the ".resourcedetails" "css_element"
+    And I <seedate> see "2015" in the ".resourcedetails" "css_element"
+    And I follow "Course 1"
+    And I <seesize> see "6 bytes" in the ".activity.resource .resourcelinkdetails" "css_element"
+    And I <seetype> see "Text file" in the ".activity.resource .resourcelinkdetails" "css_element"
+    And I <seedate> see "2015" in the ".activity.resource .resourcelinkdetails" "css_element"
+    And I log out
+
+  Examples:
+    | showsize | showtype | showdate | seesize    | seetype    | seedate    |
+    | 1        | 0        | 0        | should     | should not | should not |
+    | 0        | 1        | 0        | should not | should     | should not |
+    | 0        | 0        | 1        | should not | should not | should     |
+    | 1        | 1        | 0        | should     | should     | should not |
+    | 1        | 0        | 1        | should     | should not | should     |
+    | 0        | 1        | 1        | should not | should     | should     |
+    | 1        | 1        | 1        | should     | should     | should     |
diff --git a/mod/resource/tests/fixtures/samplefile.txt b/mod/resource/tests/fixtures/samplefile.txt
new file mode 100644 (file)
index 0000000..05a682b
--- /dev/null
@@ -0,0 +1 @@
+Hello!
\ No newline at end of file