From a8915a3a7f46dd2d259dc037252855a3ff7335d3 Mon Sep 17 00:00:00 2001 From: Amaia Anabitarte Date: Wed, 3 Apr 2019 18:05:55 +0200 Subject: [PATCH 1/3] MDL-64666 core_message: Favourite private conversations data generator --- lib/tests/behat/behat_data_generators.php | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lib/tests/behat/behat_data_generators.php b/lib/tests/behat/behat_data_generators.php index 78c72e19b5b..bfea05dfc5e 100644 --- a/lib/tests/behat/behat_data_generators.php +++ b/lib/tests/behat/behat_data_generators.php @@ -198,6 +198,16 @@ class behat_data_generators extends behat_base { 'required' => array('user', 'contact'), 'switchids' => array('user' => 'userid', 'contact' => 'contactid') ), + 'private messages' => array( + 'datagenerator' => 'private_messages', + 'required' => array('user', 'contact', 'message'), + 'switchids' => array('user' => 'userid', 'contact' => 'contactid') + ), + 'favourite conversations' => array( + 'datagenerator' => 'favourite_conversations', + 'required' => array('user', 'contact'), + 'switchids' => array('user' => 'userid', 'contact' => 'contactid') + ), ); /** @@ -876,4 +886,38 @@ class behat_data_generators extends behat_base { } return $id; } + + /** + * Send a new message from user to contact in a private conversation + * + * @param array $data + * @return void + */ + protected function process_private_messages($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::send_message_to_conversation($data['userid'], $conversationid, $data['message'], FORMAT_PLAIN); + } + + /** + * Mark a private conversation as favourite for user + * + * @param array $data + * @return void + */ + protected function process_favourite_conversations($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::set_favourite_conversation($conversationid, $data['userid']); + } } From 536c19ddd294da3af5bfa382e4956582130626bf Mon Sep 17 00:00:00 2001 From: Amaia Anabitarte Date: Tue, 19 Mar 2019 10:23:51 +0100 Subject: [PATCH 2/3] MDL-64673 core_message: Starring conversations behat test --- .../behat/favourite_conversations.feature | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 message/tests/behat/favourite_conversations.feature diff --git a/message/tests/behat/favourite_conversations.feature b/message/tests/behat/favourite_conversations.feature new file mode 100644 index 00000000000..3babfe4b673 --- /dev/null +++ b/message/tests/behat/favourite_conversations.feature @@ -0,0 +1,95 @@ +@core @core_message @javascript +Feature: Star and unstar conversations + In order to manage a course group in a course + As a user + I need to be able to star and unstar 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 | + | student1 | G1 | + | student2 | G1 | + And the following config values are set as admin: + | messaging | 1 | + + Scenario: Star a group conversation + Given I log in as "student1" + Then I open messaging + And "Group 1" "group_message" should exist + And I select "Group 1" conversation in messaging + And I open contact menu + And I click on "Star" "link" in the "//div[@data-region='header-container']" "xpath_element" + And I go back in "view-conversation" message drawer + And I open the "Starred" conversations list + And I should see "Group 1" in the "//div[@data-region='view-overview-favourites']" "xpath_element" + And I open the "Group" conversations list + And I should not see "Group 1" in the "//div[@data-region='view-overview-group-messages']" "xpath_element" + + Scenario: Unstar a group conversation + Given I log in as "student1" + Then I open messaging + And "Group 1" "group_message" should exist + And I select "Group 1" conversation in messaging + And I open contact menu + And I click on "Star" "link" in the "//div[@data-region='header-container']" "xpath_element" + And I go back in "view-conversation" message drawer + And I open the "Starred" conversations list + And I should see "Group 1" in the "//div[@data-region='view-overview-favourites']" "xpath_element" + And I select "Group 1" conversation in messaging + And I open contact menu + And I click on "Unstar" "link" in the "//div[@data-region='header-container']" "xpath_element" + And I go back in "view-conversation" message drawer + And I open the "Starred" conversations list + And I should not see "Group 1" in the "//div[@data-region='view-overview-favourites']" "xpath_element" + And I open the "Group" conversations list + And I should see "Group 1" in the "//div[@data-region='view-overview-group-messages']" "xpath_element" + + Scenario: Star a private conversation + Given the following "private messages" exist: + | user | contact | message | + | student1 | student2 | Hi! | + Then I log in as "student1" + And I open messaging + And I open the "Private" conversations list + And "Student 2" "group_message" should exist + And I select "Student 2" conversation in messaging + And I open contact menu + And I click on "Star" "link" in the "//div[@data-region='header-container']" "xpath_element" + And I go back in "view-conversation" message drawer + And I open the "Starred" conversations list + And I should see "Student 2" in the "//div[@data-region='view-overview-favourites']" "xpath_element" + And I open the "Private" conversations list + And I should not see "Student 2" in the "//div[@data-region='view-overview-messages']" "xpath_element" + + Scenario: Unstar a private conversation + Given the following "private messages" exist: + | user | contact | message | + | student1 | student2 | Hi! | + Given the following "favourite conversations" exist: + | user | contact | + | student1 | student2 | + Then I log in as "student1" + And I open messaging + And I should see "Student 2" in the "//div[@data-region='view-overview-favourites']" "xpath_element" + And I select "Student 2" conversation in messaging + And I open contact menu + And I click on "Unstar" "link" in the "//div[@data-region='header-container']" "xpath_element" + And I go back in "view-conversation" message drawer + And I open the "Starred" conversations list + And I should not see "Group 1" in the "//div[@data-region='view-overview-favourites']" "xpath_element" + And I open the "Private" conversations list + And I should see "Student 2" in the "//div[@data-region='view-overview-messages']" "xpath_element" \ No newline at end of file From a58fbd48645863f48f49c4e98da57a1d998a2644 Mon Sep 17 00:00:00 2001 From: Amaia Anabitarte Date: Thu, 25 Apr 2019 10:07:53 +0200 Subject: [PATCH 3/3] MDL-64673 core_message: Modifying group_messate_tab xpath --- lib/behat/classes/partial_named_selector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/behat/classes/partial_named_selector.php b/lib/behat/classes/partial_named_selector.php index 26fa673fe89..6d73f4a9077 100644 --- a/lib/behat/classes/partial_named_selector.php +++ b/lib/behat/classes/partial_named_selector.php @@ -168,7 +168,7 @@ XPATH //div[@data-region='empty-message-container' and not(contains(@class, 'hidden')) and contains(., %locator%)] XPATH , 'group_message_tab' => << <<