diff --git a/mod/lesson/locallib.php b/mod/lesson/locallib.php index a1685e309e7..8cf28884f3e 100644 --- a/mod/lesson/locallib.php +++ b/mod/lesson/locallib.php @@ -1481,15 +1481,15 @@ class lesson extends lesson_base { return LESSON_EOL; } else { $clusterendid = $pageid; - while ($clusterendid != 0) { // this condition should not be satisfied... should be a cluster page - if ($lessonpages[$clusterendid]->qtype == LESSON_PAGE_CLUSTER) { + while ($clusterendid != 0) { // This condition should not be satisfied... should be an end of cluster page. + if ($lessonpages[$clusterendid]->qtype == LESSON_PAGE_ENDOFCLUSTER) { break; } - $clusterendid = $lessonpages[$clusterendid]->prevpageid; + $clusterendid = $lessonpages[$clusterendid]->nextpageid; } $exitjump = $DB->get_field("lesson_answers", "jumpto", array("pageid" => $clusterendid, "lessonid" => $this->properties->id)); if ($exitjump == LESSON_NEXTPAGE) { - $exitjump = $lessonpages[$pageid]->nextpageid; + $exitjump = $lessonpages[$clusterendid]->nextpageid; } if ($exitjump == 0) { return LESSON_EOL; diff --git a/mod/lesson/tests/behat/lesson_with_clusters.feature b/mod/lesson/tests/behat/lesson_with_clusters.feature new file mode 100644 index 00000000000..f3d86384555 --- /dev/null +++ b/mod/lesson/tests/behat/lesson_with_clusters.feature @@ -0,0 +1,161 @@ +@mod @mod_lesson +Feature: In a lesson activity, students can see questions in random order + In order to create a lesson with clusters + As a teacher + I need to add content pages and questions with clusters and end of clusters pages + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + | student1 | Student | 1 | student1@asd.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 I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + + @javascript + Scenario: Lesson with two clusters + Given I add a "Lesson" to section "1" and I fill the form with: + | Name | Lesson with clusters | + | Description | Test lesson description | + And I follow "Lesson with clusters" + And I follow "Add a content page" + And I set the following fields to these values: + | Page title | First page name | + | Page contents | First page contents | + | id_answer_editor_0 | Next page | + | id_jumpto_0 | Next page | + And I press "Save page" + And I set the field "qtype" to "Add a content page" + And I set the following fields to these values: + | Page title | Second page name | + | Page contents | Second page contents | + | id_answer_editor_0 | Previous page | + | id_jumpto_0 | Previous page | + | id_answer_editor_1 | Next page | + | id_jumpto_1 | Next page | + And I press "Save page" + And I follow "Expanded" + And I click on "Add a cluster" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][3]" "xpath_element" + And I click on "Add a question page here" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][4]" "xpath_element" + And I set the field "Select a question type" to "Multichoice" + And I press "Add a question page" + And I set the following fields to these values: + | Page title | question 1 | + | Page contents | Question from cluster 1 | + | id_answer_editor_0 | Correct answer | + | id_response_editor_0 | Good | + | id_jumpto_0 | Cluster | + | id_score_0 | 1 | + | id_answer_editor_1 | Incorrect answer | + | id_response_editor_1 | Bad | + | id_jumpto_1 | This page | + | id_score_1 | 0 | + And I press "Save page" + And I click on "Add a question page here" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][5]" "xpath_element" + And I set the field "Select a question type" to "Multichoice" + And I press "Add a question page" + And I set the following fields to these values: + | Page title | question 2 | + | Page contents | Question from cluster 1 | + | id_answer_editor_0 | Correct answer | + | id_response_editor_0 | Good | + | id_jumpto_0 | Cluster | + | id_score_0 | 1 | + | id_answer_editor_1 | Incorrect answer | + | id_response_editor_1 | Bad | + | id_jumpto_1 | This page | + | id_score_1 | 0 | + And I press "Save page" + And I click on "Add an end of cluster" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][6]" "xpath_element" + And I click on "Add a content page" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][7]" "xpath_element" + And I set the following fields to these values: + | Page title | Third page name | + | Page contents | Content page after cluster 1 | + | id_answer_editor_0 | Next page | + | id_jumpto_0 | Next page | + And I press "Save page" + And I click on "Add a cluster" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][8]" "xpath_element" + And I click on "Add a question page here" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][9]" "xpath_element" + And I set the field "Select a question type" to "Multichoice" + And I press "Add a question page" + And I set the following fields to these values: + | Page title | question 3 | + | Page contents | Question from cluster 2 | + | id_answer_editor_0 | Correct answer | + | id_response_editor_0 | Good | + | id_jumpto_0 | Unseen question within a cluster | + | id_score_0 | 1 | + | id_answer_editor_1 | Incorrect answer | + | id_response_editor_1 | Bad | + | id_jumpto_1 | This page | + | id_score_1 | 0 | + And I press "Save page" + And I click on "Add a question page here" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][10]" "xpath_element" + And I set the field "Select a question type" to "Multichoice" + And I press "Add a question page" + And I set the following fields to these values: + | Page title | question 4 | + | Page contents | Question from cluster 2 | + | id_answer_editor_0 | Correct answer | + | id_response_editor_0 | Good | + | id_jumpto_0 | Unseen question within a cluster | + | id_score_0 | 1 | + | id_answer_editor_1 | Incorrect answer | + | id_response_editor_1 | Bad | + | id_jumpto_1 | This page | + | id_score_1 | 0 | + And I press "Save page" + And I click on "Add an end of cluster" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][11]" "xpath_element" + And I click on "Add a content page" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][12]" "xpath_element" + And I set the following fields to these values: + | Page title | Fourth page name | + | Page contents | Content page after cluster 2 | + | id_answer_editor_0 | Next page | + | id_jumpto_0 | Next page | + And I press "Save page" + And I log out + And I log in as "student1" + And I follow "Course 1" + When I follow "Lesson with clusters" + Then I should see "First page contents" + And I press "Next page" + And I should see "Second page contents" + And I press "Next page" + And I should see "Question from cluster 1" + And I set the following fields to these values: + | Correct answer | 1 | + And I press "Submit" + And I should see "Good" + And I press "Continue" + And I should see "Question from cluster 1" + And I set the following fields to these values: + | Correct answer | 1 | + And I press "Submit" + And I should see "Good" + And I press "Continue" + And I should see "Content page after cluster 1" + And I press "Next page" + And I should see "Question from cluster 2" + And I set the following fields to these values: + | Correct answer | 1 | + And I press "Submit" + And I should see "Good" + And I press "Continue" + And I should see "Question from cluster 2" + And I set the following fields to these values: + | Correct answer | 1 | + And I press "Submit" + And I should see "Good" + And I press "Continue" + And I should see "Content page after cluster 2" + And I press "Next page" + And I should see "Congratulations - end of lesson reached" + And I should see "Your score is 4 (out of 4)."