MDL-50714 mod_forum: Add tests for all groupmodes

This commit is contained in:
Andrew Nicols
2015-08-21 08:22:31 +08:00
parent 7603f1589c
commit 9fe894c779
4 changed files with 458 additions and 12 deletions
@@ -0,0 +1,60 @@
@mod @mod_forum
Feature: Forums in 'No groups' mode allow posting to All participants for all users
In order to post to a forum in 'No groups' mode, which is in course which has groups
As any user
I need to post
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@example.com |
| student1 | Student | 1 | student1@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And the following "groups" exist:
| name | course | idnumber |
| Group A | C1 | G1 |
| Group B | C1 | G2 |
And the following "group members" exist:
| user | group |
| teacher1 | G1 |
| teacher1 | G2 |
| student1 | G1 |
And the following "activities" exist:
| activity | name | intro | course | idnumber | groupmode |
| forum | Standard forum name | Standard forum description | C1 | nogroups | 0 |
Scenario: Teacher can post
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum name"
And I should not see "Group A"
And I should not see "Group B"
When I click on "Add a new discussion topic" "button"
And I should not see "Group" in the "form" "css_element"
And I set the following fields to these values:
| Subject | Teacher 1 -> Forum |
| Message | Teacher 1 -> Forum |
And I press "Post to forum"
And I wait to be redirected
Then I should see "Teacher 1 -> Forum"
Scenario: Student can post
Given I log in as "student1"
And I follow "Course 1"
And I follow "Standard forum name"
And I should not see "Group A"
And I should not see "Group B"
When I click on "Add a new discussion topic" "button"
And I should not see "Group" in the "form" "css_element"
And I set the following fields to these values:
| Subject | Student 1 -> Forum |
| Message | Student 1 -> Forum |
And I press "Post to forum"
And I wait to be redirected
Then I should see "Student 1 -> Forum"
@@ -0,0 +1,82 @@
@mod @mod_forum
Feature: Posting to forums in a course with no groups behaves correctly
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@example.com |
| student1 | Student | 1 | student1@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And the following "activities" exist:
| activity | name | intro | course | idnumber | groupmode |
| forum | Standard forum | Standard forum description | C1 | nogroups | 0 |
| forum | Visible forum | Visible forum description | C1 | visgroups | 2 |
| forum | Separate forum | Separate forum description | C1 | sepgroups | 1 |
Scenario: Teachers can post in standard forum
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum"
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Teacher -> All participants |
| Message | Teacher -> All participants |
And I press "Post to forum"
And I wait to be redirected
Then I should see "Teacher -> All participants"
Scenario: Teachers can post in forum with separate groups
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Separate forum"
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Teacher -> All participants |
| Message | Teacher -> All participants |
And I press "Post to forum"
And I wait to be redirected
Then I should see "Teacher -> All participants"
Scenario: Teachers can post in forum with visible groups
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Visible forum"
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Teacher -> All participants |
| Message | Teacher -> All participants |
And I press "Post to forum"
And I wait to be redirected
Then I should see "Teacher -> All participants"
Scenario: Students can post in standard forum
Given I log in as "student1"
And I follow "Course 1"
And I follow "Standard forum"
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Student -> All participants |
| Message | Student -> All participants |
And I press "Post to forum"
And I wait to be redirected
Then I should see "Student -> All participants"
Scenario: Students cannot post in forum with separate groups
Given I log in as "student1"
And I follow "Course 1"
When I follow "Separate forum"
Then I should see "You do not have permission to add a new discussion topic for all participants."
And I should not see "Add a new discussion topic"
Scenario: Teachers can post in forum with visible groups
Given I log in as "student1"
And I follow "Course 1"
When I follow "Visible forum"
Then I should see "You do not have permission to add a new discussion topic for all participants."
And I should not see "Add a new discussion topic"
@@ -2,7 +2,7 @@
Feature: Posting to all groups in a separate group discussion is restricted to users with access to all groups
In order to post to all groups in a forum with separate groups
As a teacher
I need to have the accessallgroups capability or be a member of all of the groups
I need to have the accessallgroups capability
Background:
Given the following "users" exist:
@@ -11,6 +11,7 @@ Feature: Posting to all groups in a separate group discussion is restricted to u
| noneditor1 | Non-editing teacher | 1 | noneditor1@example.com |
| noneditor2 | Non-editing teacher | 2 | noneditor2@example.com |
| student1 | Student | 1 | student1@example.com |
| student2 | Student | 2 | student2@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
@@ -20,6 +21,7 @@ Feature: Posting to all groups in a separate group discussion is restricted to u
| noneditor1 | C1 | teacher |
| noneditor2 | C1 | teacher |
| student1 | C1 | student |
| student2 | C1 | student |
And the following "groups" exist:
| name | course | idnumber |
| Group A | C1 | G1 |
@@ -35,18 +37,22 @@ Feature: Posting to all groups in a separate group discussion is restricted to u
| noneditor2 | G1 |
| noneditor2 | G2 |
| student1 | G1 |
| student1 | G2 |
And I log in as "teacher1"
And I follow "Course 1"
And I turn editing mode on
And I add a "Forum" to section "1" and I fill the form with:
| Forum name | Standard forum name |
| Forum type | Standard forum for general use |
| Description | Standard forum description |
| Group mode | Separate groups |
And I log out
| student2 | G1 |
| student2 | G2 |
And the following "activities" exist:
| activity | name | intro | course | idnumber | groupmode |
| forum | Standard forum name | Standard forum description | C1 | sepgroups | 1 |
Scenario: Teacher with accessallgroups can post in all groups
Scenario: Teacher with accessallgroups can view all groups
Given I log in as "teacher1"
And I follow "Course 1"
When I follow "Standard forum name"
Then the "Separate groups" select box should contain "All participants"
Then the "Separate groups" select box should contain "Group A"
Then the "Separate groups" select box should contain "Group B"
Then the "Separate groups" select box should contain "Group C"
Scenario: Teacher with accessallgroups can select any group when posting
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum name"
@@ -54,6 +60,124 @@ Feature: Posting to all groups in a separate group discussion is restricted to u
Then the "Group" select box should contain "All participants"
And the "Group" select box should contain "Group A"
And the "Group" select box should contain "Group B"
And the "Group" select box should contain "Group C"
Scenario: Teacher with accessallgroups can post in groups they are a member of
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum name"
And I select "Group A" from the "Separate groups" singleselect
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Teacher 1 -> Group B |
| Message | Teacher 1 -> Group B |
# Change the group in the post form.
| Group | Group B |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
Then the field "Separate groups" matches value "Group B"
And I should see "Group B" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group C" in the "Teacher 1 -> Group B" "table_row"
# It should also be displayed under All participants
And I select "All participants" from the "Separate groups" singleselect
And I should see "Group B" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group C" in the "Teacher 1 -> Group B" "table_row"
# It should not be displayed in Groups A, or C.
And I select "Group A" from the "Separate groups" singleselect
And I should not see "Teacher 1 -> Group B"
And I select "Group C" from the "Separate groups" singleselect
And I should not see "Teacher 1 -> Group B"
Scenario: Teacher with accessallgroups can post in groups they are not a member of
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum name"
And I select "Group A" from the "Separate groups" singleselect
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Teacher 1 -> Group C |
| Message | Teacher 1 -> Group C |
| Group | Group C |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
Then the field "Separate groups" matches value "Group C"
# We redirect to the group posted in automatically.
And I should see "Group C" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group B" in the "Teacher 1 -> Group C" "table_row"
# It should also be displayed under All participants
And I select "All participants" from the "Separate groups" singleselect
And I should see "Group C" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group B" in the "Teacher 1 -> Group C" "table_row"
# It should not be displayed in Groups A, or B.
And I select "Group A" from the "Separate groups" singleselect
And I should not see "Teacher 1 -> Group C"
And I select "Group B" from the "Separate groups" singleselect
And I should not see "Teacher 1 -> Group C"
Scenario: Students in one group can only post in their group
Given I log in as "student1"
And I follow "Course 1"
When I follow "Standard forum name"
Then I should see "Group A"
And I click on "Add a new discussion topic" "button"
And I should see "Group A"
And I should not see "Group B"
And I should not see "Group C"
And I set the following fields to these values:
| Subject | Student -> B |
| Message | Student -> B |
And I press "Post to forum"
And I wait to be redirected
And I should see "Group A" in the "Student -> B" "table_row"
And I should not see "Group B" in the "Student -> B" "table_row"
Scenario: Students in multiple group can post in all of their group individually
Given I log in as "student2"
And I follow "Course 1"
When I follow "Standard forum name"
And I select "Group A" from the "Separate groups" singleselect
And I click on "Add a new discussion topic" "button"
And the "Group" select box should not contain "All participants"
And the "Group" select box should contain "Group A"
And the "Group" select box should contain "Group B"
And the "Group" select box should not contain "Group C"
And I set the following fields to these values:
| Subject | Student -> B |
| Message | Student -> B |
| Group | Group B |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
And the field "Separate groups" matches value "Group B"
And I should see "Group B" in the "Student -> B" "table_row"
And I should not see "Group A" in the "Student -> B" "table_row"
And I select "Group A" from the "Separate groups" singleselect
And I should not see "Student -> B"
# Now try posting in Group A (starting at Group B)
And I select "Group B" from the "Separate groups" singleselect
And I click on "Add a new discussion topic" "button"
And the "Group" select box should not contain "All participants"
And the "Group" select box should contain "Group A"
And the "Group" select box should contain "Group B"
And the "Group" select box should not contain "Group C"
And I set the following fields to these values:
| Subject | Student -> A |
| Message | Student -> A |
| Group | Group A |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
And the field "Separate groups" matches value "Group A"
And I should see "Group A" in the "Student -> A" "table_row"
And I should not see "Group B" in the "Student -> A" "table_row"
And I select "Group B" from the "Separate groups" singleselect
And I should not see "Student -> A"
Scenario: Teacher in all groups but without accessallgroups can only post in their groups
And I log in as "admin"
@@ -0,0 +1,180 @@
@mod @mod_forum
Feature: Posting to all groups in a visible group discussion is restricted to users with access to all groups
In order to post to all groups in a forum with visible groups
As a teacher
I need to have the accessallgroups capability
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@example.com |
| student1 | Student | 1 | student1@example.com |
| student2 | Student | 2 | student2@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
| student2 | C1 | student |
And the following "groups" exist:
| name | course | idnumber |
| Group A | C1 | G1 |
| Group B | C1 | G2 |
| Group C | C1 | G3 |
And the following "group members" exist:
| user | group |
| teacher1 | G1 |
| teacher1 | G2 |
| student1 | G1 |
| student2 | G1 |
| student2 | G2 |
And the following "activities" exist:
| activity | name | intro | course | idnumber | groupmode |
| forum | Standard forum name | Standard forum description | C1 | groups | 2 |
Scenario: Teacher with accessallgroups can view all groups
Given I log in as "teacher1"
And I follow "Course 1"
When I follow "Standard forum name"
Then the "Visible groups" select box should contain "All participants"
Then the "Visible groups" select box should contain "Group A"
Then the "Visible groups" select box should contain "Group B"
Then the "Visible groups" select box should contain "Group C"
Scenario: Teacher with accessallgroups can select any group when posting
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum name"
When I click on "Add a new discussion topic" "button"
Then the "Group" select box should contain "All participants"
And the "Group" select box should contain "Group A"
And the "Group" select box should contain "Group B"
And the "Group" select box should contain "Group C"
Scenario: Teacher with accessallgroups can post in groups they are a member of
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum name"
And I select "Group A" from the "Visible groups" singleselect
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Teacher 1 -> Group B |
| Message | Teacher 1 -> Group B |
# Change the group in the post form.
| Group | Group B |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
Then the field "Visible groups" matches value "Group B"
And I should see "Group B" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group C" in the "Teacher 1 -> Group B" "table_row"
# It should also be displayed under All participants
And I select "All participants" from the "Visible groups" singleselect
And I should see "Group B" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group B" "table_row"
And I should not see "Group C" in the "Teacher 1 -> Group B" "table_row"
# It should not be displayed in Groups A, or C.
And I select "Group A" from the "Visible groups" singleselect
And I should not see "Teacher 1 -> Group B"
And I select "Group C" from the "Visible groups" singleselect
And I should not see "Teacher 1 -> Group B"
Scenario: Teacher with accessallgroups can post in groups they are not a member of
Given I log in as "teacher1"
And I follow "Course 1"
And I follow "Standard forum name"
And I select "Group A" from the "Visible groups" singleselect
When I click on "Add a new discussion topic" "button"
And I set the following fields to these values:
| Subject | Teacher 1 -> Group C |
| Message | Teacher 1 -> Group C |
| Group | Group C |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
Then the field "Visible groups" matches value "Group C"
# We redirect to the group posted in automatically.
And I should see "Group C" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group B" in the "Teacher 1 -> Group C" "table_row"
# It should also be displayed under All participants
And I select "All participants" from the "Visible groups" singleselect
And I should see "Group C" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group A" in the "Teacher 1 -> Group C" "table_row"
And I should not see "Group B" in the "Teacher 1 -> Group C" "table_row"
# It should not be displayed in Groups A, or B.
And I select "Group A" from the "Visible groups" singleselect
And I should not see "Teacher 1 -> Group C"
And I select "Group B" from the "Visible groups" singleselect
And I should not see "Teacher 1 -> Group C"
Scenario: Students can view all groups
Given I log in as "student1"
And I follow "Course 1"
When I follow "Standard forum name"
Then the "Visible groups" select box should contain "All participants"
Then the "Visible groups" select box should contain "Group A"
Then the "Visible groups" select box should contain "Group B"
Then the "Visible groups" select box should contain "Group C"
Scenario: Students in one group can only post in their group
Given I log in as "student1"
And I follow "Course 1"
When I follow "Standard forum name"
Then I should see "Group A"
And I click on "Add a new discussion topic" "button"
And I should see "Group A"
And I should not see "Group B"
And I should not see "Group C"
And I set the following fields to these values:
| Subject | Student -> B |
| Message | Student -> B |
And I press "Post to forum"
And I wait to be redirected
And I should see "Group A" in the "Student -> B" "table_row"
And I should not see "Group B" in the "Student -> B" "table_row"
Scenario: Students in multiple group can post in all of their group individually
Given I log in as "student2"
And I follow "Course 1"
When I follow "Standard forum name"
And I select "Group A" from the "Visible groups" singleselect
And I click on "Add a new discussion topic" "button"
And the "Group" select box should not contain "All participants"
And the "Group" select box should contain "Group A"
And the "Group" select box should contain "Group B"
And the "Group" select box should not contain "Group C"
And I set the following fields to these values:
| Subject | Student -> B |
| Message | Student -> B |
| Group | Group B |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
And the field "Visible groups" matches value "Group B"
And I should see "Group B" in the "Student -> B" "table_row"
And I should not see "Group A" in the "Student -> B" "table_row"
And I select "Group A" from the "Visible groups" singleselect
And I should not see "Student -> B"
# Now try posting in Group A (starting at Group B)
And I select "Group B" from the "Visible groups" singleselect
And I click on "Add a new discussion topic" "button"
And the "Group" select box should not contain "All participants"
And the "Group" select box should contain "Group A"
And the "Group" select box should contain "Group B"
And the "Group" select box should not contain "Group C"
And I set the following fields to these values:
| Subject | Student -> A |
| Message | Student -> A |
| Group | Group A |
And I press "Post to forum"
And I wait to be redirected
# We should be redirected to the group that we selected when posting.
And the field "Visible groups" matches value "Group A"
And I should see "Group A" in the "Student -> A" "table_row"
And I should not see "Group B" in the "Student -> A" "table_row"
And I select "Group B" from the "Visible groups" singleselect
And I should not see "Student -> A"