From b576bdc75d487499b63ecf96d5be92c5b4e274c5 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Wed, 8 May 2013 14:42:42 +0800 Subject: [PATCH] MDL-39051 behat: New tests To cover all course controls functionalities with and without Javascript and with and without paged course mode. --- course/tests/behat/course_controls.feature | 165 ++++++++++++++++++++++++ course/tests/behat/move_activities.feature | 73 +++++++++++ course/tests/behat/move_sections.feature | 55 ++++++++ course/tests/behat/section_highlighting.feature | 11 +- 4 files changed, 301 insertions(+), 3 deletions(-) create mode 100644 course/tests/behat/course_controls.feature create mode 100644 course/tests/behat/move_activities.feature create mode 100644 course/tests/behat/move_sections.feature diff --git a/course/tests/behat/course_controls.feature b/course/tests/behat/course_controls.feature new file mode 100644 index 00000000000..a243ace4fd5 --- /dev/null +++ b/course/tests/behat/course_controls.feature @@ -0,0 +1,165 @@ +@core @core_course +Feature: Course activity controls works as expected + In order to manage my course's activities + As a teacher + I need to edit, hide, show and indent activities inside course sections + + # This two scenario outlines contains exactly the same steps, the + # only difference is whether JS is enabled or not; we can not use + # Background sections when using Scenario Outlines because of Behat + # framework restrictions. + + # We are testing: + # * Javascript on and off + # * Topics and weeks course formats + # * Course controls without paged mode + # * Course controls with paged mode in the course home page + # * Course controls with paged mode in a section's page + + @javascript @_cross_browser + Scenario Outline: General activities course controls using topics and weeks formats, and paged mode and not paged mode works as expected + Given the following "users" exists: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + And the following "courses" exists: + | fullname | shortname | format | coursedisplay | numsections | + | Course 1 | C1 | | | 5 | + And the following "course enrolments" exists: + | user | course | role | + | teacher1 | C1 | editingteacher | + And I log in as "teacher1" + And I follow "Course 1" + When I follow + And I press "Turn editing on" + Then I should see "Turn editing off" + And I press "Turn editing off" + And "Turn editing on" "button" should exists + And I follow "Turn editing on" + And "Turn editing off" "button" should exists + And I follow "Turn editing off" + And I should see "Turn editing on" + And "Turn editing on" "button" should exists + And I turn editing mode on + And I click on "Delete Recent activity block" "link" + And I press "Yes" + And "#section-2" "css_element" exists + And I add a "Forum" to section "1" and I fill the form with: + | Forum name | Test forum name 1 | + | Description | Test forum description 1 | + And I add a "Forum" to section "1" and I fill the form with: + | Forum name | Test forum name 2 | + | Description | Test forum description 2 | + And "#section-2" "css_element" exists + And I indent right "Test forum name 1" activity + And "#section-2" "css_element" exists + And I indent left "Test forum name 1" activity + And "#section-2" "css_element" exists + And I click on "Update" "link" in the "Test forum name 1" activity + And I should see "Updating Forum" + And I should see "Display description on course page" + And I press "Save and return to course" + And "#section-2" "css_element" exists + And I click on "Hide" "link" in the "Test forum name 1" activity + And "#section-2" "css_element" exists + And I delete "Test forum name 1" activity + And "#section-2" "css_element" exists + And I should not see "Test forum name 1" in the ".region-content" "css_element" + And I duplicate "Test forum name 2" activity editing the new copy with: + | Forum name | Edited test forum name 2 | + And "#section-2" "css_element" exists + And I should see "Test forum name 2" + And I should see "Edited test forum name 2" + And I hide section "1" + And "#section-2" "css_element" exists + And section "1" should be hidden + And I show section "1" + And "#section-2" "css_element" exists + And section "1" should be visible + And I add the "Section links" block + And "#section-2" "css_element" exists + And I should see "1 2 3 4 5" in the ".block_section_links" "css_element" + And I click on "2" "link" in the ".block_section_links" "css_element" + And I see "Test forum name 2" + + Examples: + | courseformat | coursedisplay | targetpage | should_see_other_sections | should_see_other_sections_following_block_sections_links | + | topics | 0 | "Course 1" | should | should | + | topics | 1 | "Topic 1" | should not | should not | + | topics | 1 | "Course 1" | should | should not | + | weeks | 0 | "Course 1" | should | should | + | weeks | 1 | "1 January - 7 January" | should not | should not | + | weeks | 1 | "Course 1" | should | should not | + + + Scenario Outline: General activities course controls using topics and weeks formats, and paged mode and not paged mode works as expected + Given the following "users" exists: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + And the following "courses" exists: + | fullname | shortname | format | coursedisplay | numsections | + | Course 1 | C1 | | | 5 | + And the following "course enrolments" exists: + | user | course | role | + | teacher1 | C1 | editingteacher | + And I log in as "teacher1" + And I follow "Course 1" + When I follow + And I press "Turn editing on" + Then I should see "Turn editing off" + And I press "Turn editing off" + And "Turn editing on" "button" should exists + And I follow "Turn editing on" + And "Turn editing off" "button" should exists + And I follow "Turn editing off" + And I should see "Turn editing on" + And "Turn editing on" "button" should exists + And I turn editing mode on + And I click on "Delete Recent activity block" "link" + And I press "Yes" + And "#section-2" "css_element" exists + And I add a "Forum" to section "1" and I fill the form with: + | Forum name | Test forum name 1 | + | Description | Test forum description 1 | + And I add a "Forum" to section "1" and I fill the form with: + | Forum name | Test forum name 2 | + | Description | Test forum description 2 | + And "#section-2" "css_element" exists + And I indent right "Test forum name 1" activity + And "#section-2" "css_element" exists + And I indent left "Test forum name 1" activity + And "#section-2" "css_element" exists + And I click on "Update" "link" in the "Test forum name 1" activity + And I should see "Updating Forum" + And I should see "Display description on course page" + And I press "Save and return to course" + And "#section-2" "css_element" exists + And I click on "Hide" "link" in the "Test forum name 1" activity + And "#section-2" "css_element" exists + And I delete "Test forum name 1" activity + And "#section-2" "css_element" exists + And I should not see "Test forum name 1" in the ".region-content" "css_element" + And I duplicate "Test forum name 2" activity editing the new copy with: + | Forum name | Edited test forum name 2 | + And "#section-2" "css_element" exists + And I should see "Test forum name 2" + And I should see "Edited test forum name 2" + And I hide section "1" + And "#section-2" "css_element" exists + And section "1" should be hidden + And I show section "1" + And "#section-2" "css_element" exists + And section "1" should be visible + And I add the "Section links" block + And "#section-2" "css_element" exists + And I should see "1 2 3 4 5" in the ".block_section_links" "css_element" + And I click on "2" "link" in the ".block_section_links" "css_element" + And I see "Test forum name 2" + + Examples: + | courseformat | coursedisplay | targetpage | should_see_other_sections | should_see_other_sections_following_block_sections_links | + | topics | 0 | "Course 1" | should | should | + | topics | 1 | "Topic 1" | should not | should not | + | topics | 1 | "Course 1" | should | should not | + | weeks | 0 | "Course 1" | should | should | + | weeks | 1 | "1 January - 7 January" | should not | should not | + | weeks | 1 | "Course 1" | should | should not | diff --git a/course/tests/behat/move_activities.feature b/course/tests/behat/move_activities.feature new file mode 100644 index 00000000000..591e619b282 --- /dev/null +++ b/course/tests/behat/move_activities.feature @@ -0,0 +1,73 @@ +@core @core_course +Feature: Activities can be moved between sections + In order to rearrange my course contents + As a teacher + I need to move activities between sections + + Background: + Given the following "users" exists: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + And the following "courses" exists: + | fullname | shortname | format | coursedisplay | numsections | + | Course 1 | C1 | topics | 0 | 5 | + And the following "course enrolments" exists: + | user | course | role | + | teacher1 | C1 | editingteacher | + And I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + And I follow "Delete Recent activity block" + And I press "Yes" + And I follow "Configure Navigation block" + And I fill the moodle form with: + | Visible | Yes | + And I press "Save changes" + And I add a "Forum" to section "1" and I fill the form with: + | Forum name | Test forum name | + | Description | Test forum description | + + @javascript @_cross_browser + Scenario: Move activities in a single page course with Javascript enabled + When I move "Test forum name" activity to section "2" + And I reload the page + Then I should see "Test forum name" in the "#section-2" "css_element" + And I should not see "Test forum name" in the "#section-1" "css_element" + + @javascript @_cross_browser + Scenario: Move activities in the course home with Javascript enabled using paged mode + Given I follow "Edit settings" + And I fill the moodle form with: + | Course layout | Show one section per page | + And I press "Save changes" + When I move "Test forum name" activity to section "2" + # This reload step is added because of drap&drop & yui dd problem + And I reload the page + Then I should see "Test forum name" in the "#section-2" "css_element" + And I should not see "Test forum name" in the "#section-1" "css_element" + + Scenario: Move activities in a single page course with Javascript disabled + When I move "Test forum name" activity to section "2" + Then I should see "Test forum name" in the "#section-2" "css_element" + And I should not see "Test forum name" in the "#section-1" "css_element" + + Scenario: Move activities in the course home with Javascript disabled using paged mode + Given I follow "Edit settings" + And I fill the moodle form with: + | Course layout | Show one section per page | + And I press "Save changes" + When I move "Test forum name" activity to section "2" + Then I should see "Test forum name" in the "#section-2" "css_element" + And I should not see "Test forum name" in the "#section-1" "css_element" + + Scenario: Move activities in a course section with Javascript disabled using paged mode + Given I follow "Edit settings" + And I fill the moodle form with: + | Course layout | Show one section per page | + And I press "Save changes" + And I add a "Forum" to section "1" and I fill the form with: + | Forum name | Second forum name | + | Description | Second forum description | + And I follow "Topic 1" + When I move "Second forum name" activity to section "1" + Then "Second forum name" "link" should appear before "Test forum name" "link" diff --git a/course/tests/behat/move_sections.feature b/course/tests/behat/move_sections.feature new file mode 100644 index 00000000000..9ac3ecff036 --- /dev/null +++ b/course/tests/behat/move_sections.feature @@ -0,0 +1,55 @@ +@core @core_course +Feature: Sections can be moved + In order to rearrange my course contents + As a teacher + I need to move sections up and down + + Background: + Given the following "users" exists: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + And the following "courses" exists: + | fullname | shortname | format | coursedisplay | numsections | + | Course 1 | C1 | topics | 0 | 5 | + And the following "course enrolments" exists: + | user | course | role | + | teacher1 | C1 | editingteacher | + And I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + + Scenario: Move up and down a section with Javascript disabled in a single page course + Given I add a "Forum" to section "1" and I fill the form with: + | Forum name | Test forum name | + | Description | Test forum description | + When I move down section "1" + Then I should see "Test forum name" in the "#section-2" "css_element" + And I move up section "2" + And I should see "Test forum name" in the "#section-1" "css_element" + + Scenario: Move up and down a section with Javascript disabled in the course home of a course using paged mode + Given I follow "Edit settings" + And I fill the moodle form with: + | Course layout | Show one section per page | + And I press "Save changes" + And I add a "Forum" to section "1" and I fill the form with: + | Forum name | Test forum name | + | Description | Test forum description | + When I move down section "1" + Then I should see "Test forum name" in the "#section-2" "css_element" + And I move up section "2" + And I should see "Test forum name" in the "#section-1" "css_element" + + Scenario: Sections can not be moved with Javascript disabled in a section page of a course using paged mode + Given I follow "Edit settings" + And I fill the moodle form with: + | Course layout | Show one section per page | + And I press "Save changes" + And I add a "Forum" to section "2" and I fill the form with: + | Forum name | Test forum name | + | Description | Test forum description | + When I follow "Topic 2" + Then "#section-1" "css_element" should not exists + And "#section-3" "css_element" should not exists + And "Move down" "link" should not exists + And "Move up" "link" should not exists diff --git a/course/tests/behat/section_highlighting.feature b/course/tests/behat/section_highlighting.feature index 567292bcba8..4db4538d1ad 100644 --- a/course/tests/behat/section_highlighting.feature +++ b/course/tests/behat/section_highlighting.feature @@ -5,14 +5,14 @@ Feature: Topic's course sections highlighting I need to highlight one specific section @javascript - Scenario: Highlight a topic's course section + Scenario Outline: Highlight a topic's course section with course paged mode and without it Given the following "users" exists: | username | firstname | lastname | email | | teacher1 | Teacher | 1 | teacher1@asd.com | | student1 | Student | 1 | student1@asd.com | And the following "courses" exists: - | fullname | shortname | format | - | Course 1 | C1 | topics | + | fullname | shortname | format | coursedisplay | + | Course 1 | C1 | topics | | And the following "course enrolments" exists: | user | course | role | | teacher1 | C1 | editingteacher | @@ -41,3 +41,8 @@ Feature: Topic's course sections highlighting And I follow "Course 1" And section "1" should not be highlighted And section "2" should not be highlighted + + Examples: + | coursedisplay | + | 0 | + | 1 | -- 2.11.4.GIT