MDL-68931 core: No feedback link on footer if the feature is disabled
authorShamim Rezaie <shamim@moodle.com>
Fri, 5 Jun 2020 09:48:07 +0000 (19:48 +1000)
committerShamim Rezaie <shamim@moodle.com>
Wed, 10 Jun 2020 06:10:53 +0000 (16:10 +1000)
lib/classes/userfeedback.php
lib/outputrenderers.php
lib/tests/behat/userfeedback.feature [new file with mode: 0644]

index d74f621..8128336 100644 (file)
@@ -96,7 +96,7 @@ class core_userfeedback {
     public static function should_display_reminder(): bool {
         global $CFG;
 
-        if ($CFG->enableuserfeedback && isloggedin() && !isguestuser()) {
+        if (static::can_give_feedback()) {
             $give = get_user_preferences('core_userfeedback_give');
             $remind = get_user_preferences('core_userfeedback_remind');
 
@@ -145,6 +145,17 @@ class core_userfeedback {
         return $url;
     }
 
+    /**
+     * Whether the current can give feedback.
+     *
+     * @return bool
+     */
+    public static function can_give_feedback(): bool {
+        global $CFG;
+
+        return $CFG->enableuserfeedback && isloggedin() && !isguestuser();
+    }
+
     /**
      * Returns the last major upgrade time
      *
index 240d449..8802a9e 100644 (file)
@@ -835,7 +835,7 @@ class core_renderer extends renderer_base {
             }
         }
 
-        if (isloggedin() && !isguestuser()) {
+        if (core_userfeedback::can_give_feedback()) {
             $output .= html_writer::div(
                 $this->render_from_template('core/userfeedback_footer_link', ['url' => core_userfeedback::make_link()->out(false)])
             );
diff --git a/lib/tests/behat/userfeedback.feature b/lib/tests/behat/userfeedback.feature
new file mode 100644 (file)
index 0000000..b090f80
--- /dev/null
@@ -0,0 +1,36 @@
+@core
+Feature: Gathering user feedback
+  In order to facilitate data collection from as broad a sample of Moodle users as possible
+  As Moodle HQ
+  We should add a link within Moodle to a permanent URL on which surveys will be placed
+
+  Scenario: Users should see a feedback link on footer when the feature is enabled
+    Given the following config values are set as admin:
+      | enableuserfeedback  | 1  |
+    When I log in as "admin"
+    Then I should see "Give feedback" in the "page-footer" "region"
+
+  Scenario: Users should not see a feedback link on footer when the feature is disabled
+    Given the following config values are set as admin:
+      | enableuserfeedback  | 0  |
+    When I log in as "admin"
+    Then I should not see "Give feedback" in the "page-footer" "region"
+
+  Scenario: Visitors should not see a feedback link on footer when they are not logged in
+    Given the following config values are set as admin:
+      | enableuserfeedback  | 1  |
+    When I am on site homepage
+    Then I should not see "Give feedback" in the "page-footer" "region"
+
+  @javascript
+  Scenario: Users should not see the notification after they click on the remind me later link
+    Given the following config values are set as admin:
+      | enableuserfeedback        | 1   |
+      | userfeedback_nextreminder | 2   |
+      | userfeedback_remindafter  | 90  |
+    When I log in as "admin"
+    And I follow "Dashboard" in the user menu
+    And I click on "Remind me later" "link"
+    And I reload the page
+    Then I should not see "Give feedback" in the "region-main" "region"
+    And I should not see "Remind me later" in the "region-main" "region"