diff --git a/message/output/popup/tests/behat/behat_message_popup.php b/message/output/popup/tests/behat/behat_message_popup.php new file mode 100644 index 00000000000..9127b4af615 --- /dev/null +++ b/message/output/popup/tests/behat/behat_message_popup.php @@ -0,0 +1,53 @@ +. + +/** + * Behat message popup related steps definitions. + * + * @package message_popup + * @category test + * @copyright 2016 Ryan Wyllie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +// NOTE: no MOODLE_INTERNAL test here, this file may be required by behat before including /config.php. + +require_once(__DIR__ . '/../../../../../lib/behat/behat_base.php'); + +/** + * Message popup steps definitions. + * + * @package message_popup + * @category test + * @copyright 2016 Ryan Wyllie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class behat_message_popup extends behat_base { + + /** + * Open the notification popover in the nav bar. + * + * @Given /^I open the notification popover$/ + */ + public function i_open_the_notification_popover() { + $this->execute('behat_general::i_click_on', + array("#nav-notification-popover-container [data-region='popover-region-toggle']", 'css_element')); + + $node = $this->get_selected_node('css_element', + '#nav-notification-popover-container [data-region="popover-region-content"]'); + $this->ensure_node_is_visible($node); + } +} diff --git a/message/output/popup/tests/behat/notification_popover_preferences.feature b/message/output/popup/tests/behat/notification_popover_preferences.feature new file mode 100644 index 00000000000..d4743dad5dc --- /dev/null +++ b/message/output/popup/tests/behat/notification_popover_preferences.feature @@ -0,0 +1,17 @@ +@message @message_popup +Feature: Notification popover preferences + In order to modify my notification preferences + As a user + I can navigate to the preferences page from the popover + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | user1 | User | 1 | user1@example.com | + + @javascript + Scenario: User navigates to preferences page + Given I log in as "user1" + And I open the notification popover + When I follow "Notification preferences" + Then I should see "Notification preferences" diff --git a/message/output/popup/tests/behat/notification_popover_unread.feature b/message/output/popup/tests/behat/notification_popover_unread.feature new file mode 100644 index 00000000000..a3df3a1e67f --- /dev/null +++ b/message/output/popup/tests/behat/notification_popover_unread.feature @@ -0,0 +1,73 @@ +@message @message_popup @javascript +Feature: Notification popover unread notifications + In order to be kept informed + As a user + I am notified about relevant events in Moodle + + Background: + # This will make sure popup notifications are enabled and create + # two assignment notifications. One for the student submitting their + # assignment and another for the teacher grading it. + Given the following "courses" exist: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + # Make sure the popup notifications are enabled for assignments. + And the following config values are set as admin: + | popup_provider_mod_assign_assign_notification_permitted | permitted | message | + | message_provider_mod_assign_assign_notification_loggedin | popup | message | + | message_provider_mod_assign_assign_notification_loggedoff | popup | message | + And the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@example.com | + | student1 | Student | 1 | student1@example.com | + 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 + And I add a "Assignment" to section "1" and I fill the form with: + | Assignment name | Test assignment name | + | Description | Submit your online text | + | assignsubmission_onlinetext_enabled | 1 | + | assignsubmission_file_enabled | 0 | + And I log out + And I log in as "student1" + And I follow "Course 1" + And I follow "Test assignment name" + And I press "Add submission" + # This should generate a notification. + And I set the following fields to these values: + | Online text | I'm the student first submission | + And I press "Save changes" + And I log out + + Scenario: Notification popover shows correct unread count + When I log in as "student1" + # Confirm the popover is saying 1 unread notifications. + Then I should see "1" in the "#nav-notification-popover-container [data-region='count-container']" "css_element" + # Open the popover. + And I open the notification popover + # Confirm the submission notification is visible. + And I should see "You have submitted your assignment submission for Test assignment name" in the "#nav-notification-popover-container" "css_element" + + Scenario: Clicking a notification marks it as read + When I log in as "student1" + # Open the popover. + And I open the notification popover + # Click on the submission notification. + And I click on "[aria-label='Unread notification: You have submitted your assignment submission for Test assignment name']" "css_element" in the "#nav-notification-popover-container" "css_element" + # Confirm the count element is hidden (i.e. there are no unread notifications). + Then "[data-region='count-container']" "css_element" in the "#nav-notification-popover-container" "css_element" should not be visible + + Scenario: Mark all notifications as read + When I log in as "student1" + # Open the popover. + And I open the notification popover + # Click the mark all as read button. + And I click on "[data-action='mark-all-read']" "css_element" in the "#nav-notification-popover-container" "css_element" + # Refresh the page to make sure we send a new request for the unread count. + And I reload the page + # Confirm the count element is hidden (i.e. there are no unread notifications). + Then "[data-region='count-container']" "css_element" in the "#nav-notification-popover-container" "css_element" should not be visible