Merge branch 'MDL-65336-master' of git://github.com/aanabit/moodle

This commit is contained in:
Jun Pataleta 2019-06-10 19:37:25 +08:00
commit 68c723efdf
3 changed files with 148 additions and 1 deletions

View File

@ -73,6 +73,7 @@ class behat_partial_named_selector extends \Behat\Mink\Selector\PartialNamedSele
'xpath_element' => 'xpath_element',
'form_row' => 'form_row',
'group_message_header' => 'group_message_header',
'group_message' => 'group_message',
);
/**
@ -96,6 +97,7 @@ class behat_partial_named_selector extends \Behat\Mink\Selector\PartialNamedSele
'group_message_tab' => 'group_message_tab',
'group_message_list_area' => 'group_message_list_area',
'group_message_message_content' => 'group_message_message_content',
'icon_container' => 'icon_container',
'icon' => 'icon',
'link' => 'link',
'link_or_button' => 'link_or_button',
@ -162,7 +164,7 @@ XPATH
.//*[@data-region='message-drawer' and contains(., %locator%)]//div[@data-region='content-message-container']
XPATH
, 'group_message_header' => <<<XPATH
.//*[@data-region='message-drawer']//div[@data-region='header-container' and contains(., %locator%)]
.//*[@data-region='message-drawer']//div[@data-region='header-content' and contains(., %locator%)]
XPATH
, 'group_message_member' => <<<XPATH
.//*[@data-region='message-drawer']//div[@data-region='group-info-content-container']
@ -178,6 +180,9 @@ XPATH
XPATH
, 'group_message_message_content' => <<<XPATH
.//*[@data-region='message-drawer']//*[@data-region='message' and @data-message-id and contains(., %locator%)]
XPATH
, 'icon_container' => <<<XPATH
.//span[contains(@data-region, concat(%locator%,'-icon-container'))]
XPATH
, 'icon' => <<<XPATH
.//*[contains(concat(' ', normalize-space(@class), ' '), ' icon ') and ( contains(normalize-space(@title), %locator%))]

View File

@ -213,6 +213,16 @@ class behat_data_generators extends behat_base {
'required' => array('user', 'group', 'message'),
'switchids' => array('user' => 'userid', 'group' => 'groupid')
),
'muted group conversations' => array(
'datagenerator' => 'mute_group_conversations',
'required' => array('user', 'group', 'course'),
'switchids' => array('user' => 'userid', 'group' => 'groupid', 'course' => 'courseid')
),
'muted private conversations' => array(
'datagenerator' => 'mute_private_conversations',
'required' => array('user', 'contact'),
'switchids' => array('user' => 'userid', 'contact' => 'contactid')
),
'language customisations' => array(
'datagenerator' => 'customlang',
'required' => array('component', 'stringid', 'value'),
@ -1032,4 +1042,42 @@ class behat_data_generators extends behat_base {
}
\core_message\api::set_favourite_conversation($conversationid, $data['userid']);
}
/**
* Mute an existing group conversation for user
*
* @param array $data
* @return void
*/
protected function process_mute_group_conversations(array $data) {
if (groups_is_member($data['groupid'], $data['userid'])) {
$context = context_course::instance($data['courseid']);
$conversation = \core_message\api::get_conversation_by_area(
'core_group',
'groups',
$data['groupid'],
$context->id
);
if ($conversation) {
\core_message\api::mute_conversation($data['userid'], $conversation->id);
}
}
}
/**
* Mute a private conversation for user
*
* @param array $data
* @return void
*/
protected function process_mute_private_conversations(array $data) {
if (!$conversationid = \core_message\api::get_conversation_between_users([$data['userid'], $data['contactid']])) {
$conversation = \core_message\api::create_conversation(
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
[$data['userid'], $data['contactid']]
);
$conversationid = $conversation->id;
}
\core_message\api::mute_conversation($data['userid'], $conversationid);
}
}

View File

@ -0,0 +1,94 @@
@core @core_message @javascript
Feature: Mute and unmute conversations
In order to manage my conversations
As a user
I need to be able to mute and unmute conversations
Background:
Given the following "courses" exist:
| fullname | shortname | category | groupmode |
| Course 1 | C1 | 0 | 1 |
And the following "users" exist:
| username | firstname | lastname | email |
| student1 | Student | 1 | student1@example.com |
| student2 | Student | 2 | student2@example.com |
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
| student2 | C1 | student |
And the following "groups" exist:
| name | course | idnumber | enablemessaging |
| Group 1 | C1 | G1 | 1 |
And the following "group members" exist:
| user | group | course |
| student1 | G1 | C1 |
| student2 | G1 | C1 |
And the following config values are set as admin:
| messaging | 1 |
And the following "private messages" exist:
| user | contact | message |
| student1 | student2 | Hi! |
Scenario: Mute a group conversation
Given I log in as "student1"
When I open messaging
And I open the "Group" conversations list
Then "Group 1" "group_message" should exist
And "muted" "icon_container" in the "Group 1" "group_message" should not be visible
And I select "Group 1" conversation in messaging
And "muted" "icon_container" in the "Group 1" "group_message_header" should not be visible
And I open contact menu
And I click on "Mute" "link" in the "[data-region='header-container']" "css_element"
And "muted" "icon_container" in the "Group 1" "group_message_header" should be visible
And I go back in "view-conversation" message drawer
And "muted" "icon_container" in the "Group 1" "group_message" should be visible
Scenario: Mute a private conversation
When I log in as "student1"
And I open messaging
Then I should see "Private"
And I open the "Private" conversations list
And I should see "Student 2"
And "muted" "icon_container" in the "Student 2" "group_message" should not be visible
And I select "Student 2" conversation in messaging
And "muted" "icon_container" in the "[data-action='view-contact']" "css_element" should not be visible
And I open contact menu
And I click on "Mute" "link" in the "[data-region='header-container']" "css_element"
And "muted" "icon_container" in the "[data-action='view-contact']" "css_element" should be visible
And I go back in "view-conversation" message drawer
And "muted" "icon_container" in the "Student 2" "group_message" should be visible
Scenario: Unmute a group conversation
Given the following "muted group conversations" exist:
| user | group | course |
| student1 | G1 | C1 |
When I log in as "student1"
And I open messaging
And I open the "Group" conversations list
Then "Group 1" "group_message" should exist
And "muted" "icon_container" in the "Group 1" "group_message" should be visible
And I select "Group 1" conversation in messaging
And "muted" "icon_container" in the "Group 1" "group_message_header" should be visible
And I open contact menu
And I click on "Unmute" "link" in the "[data-region='header-container']" "css_element"
And "muted" "icon_container" in the "Group 1" "group_message_header" should not be visible
And I go back in "view-conversation" message drawer
And "muted" "icon_container" in the "Group 1" "group_message" should not be visible
Scenario: Unmute a private conversation
Given the following "muted private conversations" exist:
| user | contact |
| student1 | student2 |
When I log in as "student1"
And I open messaging
Then I should see "Private"
And I open the "Private" conversations list
And I should see "Student 2"
And "muted" "icon_container" in the "Student 2" "group_message" should be visible
And I select "Student 2" conversation in messaging
And "muted" "icon_container" in the "[data-action='view-contact']" "css_element" should be visible
And I open contact menu
And I click on "Unmute" "link" in the "[data-region='header-container']" "css_element"
And "muted" "icon_container" in the "[data-action='view-contact']" "css_element" should not be visible
And I go back in "view-conversation" message drawer
And "muted" "icon_container" in the "Student 2" "group_message" should not be visible