MDL-56337 message_popup: add behat tests for notification popover

This commit is contained in:
Ryan Wyllie 2016-10-11 02:32:18 +00:00
parent 6a69cda97d
commit 658dbdf7dd
3 changed files with 143 additions and 0 deletions

View File

@ -0,0 +1,53 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Behat message popup related steps definitions.
*
* @package message_popup
* @category test
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
* @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 <ryan@moodle.com>
* @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);
}
}

View File

@ -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"

View File

@ -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