From f6cb8d92494c6bbf8d82af6158671fefeb16680b Mon Sep 17 00:00:00 2001
From: Kathrin Osswald <kathrin.osswald@uni-ulm.de>
Date: Mon, 19 Aug 2019 11:13:54 +0200
Subject: [PATCH] Added Behat tests

---
 .travis.yml                                   |   2 +-
 CHANGES.md                                    |   2 +
 ..._campus_additional_layout_settings.feature |  82 +++++
 ...eme_boost_campus_advanced_settings.feature |  63 ++++
 ...oost_campus_course_layout_settings.feature | 231 ++++++++++++++
 ...theme_boost_campus_design_settings.feature | 129 ++++++++
 ...oost_campus_footer_layout_settings.feature | 296 ++++++++++++++++++
 ...heme_boost_campus_general_settings.feature |  50 +++
 tests/fixtures/favicon.ico                    | Bin 0 -> 7061 bytes
 tests/fixtures/login_bg.jpg                   | Bin 0 -> 39402 bytes
 tests/fixtures/moodle_logo.jpg                | Bin 0 -> 5402 bytes
 11 files changed, 854 insertions(+), 1 deletion(-)
 create mode 100644 tests/behat/theme_boost_campus_additional_layout_settings.feature
 create mode 100644 tests/behat/theme_boost_campus_advanced_settings.feature
 create mode 100644 tests/behat/theme_boost_campus_course_layout_settings.feature
 create mode 100644 tests/behat/theme_boost_campus_design_settings.feature
 create mode 100644 tests/behat/theme_boost_campus_footer_layout_settings.feature
 create mode 100644 tests/behat/theme_boost_campus_general_settings.feature
 create mode 100644 tests/fixtures/favicon.ico
 create mode 100644 tests/fixtures/login_bg.jpg
 create mode 100644 tests/fixtures/moodle_logo.jpg

diff --git a/.travis.yml b/.travis.yml
index 7166a13..3707df3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -51,4 +51,4 @@ script:
   - moodle-plugin-ci grunt
   - moodle-plugin-ci phpdoc
   - moodle-plugin-ci phpunit
-  - moodle-plugin-ci behat --dump
+  - moodle-plugin-ci behat --dump --suite=boost_campus
diff --git a/CHANGES.md b/CHANGES.md
index f28f204..069f2d2 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -6,6 +6,8 @@ Changes
 
 ### Unreleased
 
+* 2019-12-20 - Added Behat tests.
+               PLEASE NOTE: For all scenarios to pass, the Moodle version 3.7.3+ (Build: 20191212) is needed.
 * 2019-12-17 - Fixed bug for the selection of block regions when 2 block columns in footer are enabled.
 * 2019-11-29 - Moved the variable output.standard_end_of_body_html from footer.mustache to solve Javascript issues with behat tests.
 
diff --git a/tests/behat/theme_boost_campus_additional_layout_settings.feature b/tests/behat/theme_boost_campus_additional_layout_settings.feature
new file mode 100644
index 0000000..e4e75fc
--- /dev/null
+++ b/tests/behat/theme_boost_campus_additional_layout_settings.feature
@@ -0,0 +1,82 @@
+@theme @theme_boost_campus @theme_boost_campus_additional_layout_settings
+Feature: Configuring the theme_boost_campus plugin for the "Additional Layout Settings" tab
+  In order to use the features
+  As admin
+  I need to be able to configure the theme Boost Campus plugin
+
+  Background:
+    Given the following "users" exist:
+      | username |
+      | teacher1 |
+    And the following "courses" exist:
+      | fullname | shortname |
+      | Course 1 | C1        |
+    And the following "course enrolments" exist:
+      | user     | course | role           |
+      | teacher1 | C1     | editingteacher |
+    # There is a nasty bug with Behat-testing this theme that the footer is not displayed until the settings
+    # of the theme are stored manually. It seems not to be sufficient to just rely on the default settings being
+    # stored during the installation of the theme. Until we find the root of this bug, we circumvent it by setting the
+    # brand color manually and within this process making sure that all settings are really stored to the database.
+    And I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "General settings" "link"
+    And I set the field "id_s_theme_boost_campus_brandcolor" to "#7a99ac"
+    And I press "Save changes"
+    And I log out
+
+  @javascript @_file_upload
+  Scenario: Add "Image area items"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Additional Layout Settings" "link"
+    And I upload "theme/boost_campus/tests/fixtures/moodle_logo.jpg" file to "Image area items" filemanager
+    And I press "Save changes"
+    Then ".imagearea img" "css_element" should exist
+
+  # Dependent on setting "Image area items"
+  @javascript @_file_upload
+  Scenario: Add "Image area item links"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Additional Layout Settings" "link"
+    And I upload "theme/boost_campus/tests/fixtures/moodle_logo.jpg" file to "Image area items" filemanager
+    And I set the field "id_s_theme_boost_campus_imageareaitemslink" to "moodle_logo.jpg|http://moodle.org"
+    And I press "Save changes"
+    Then ".imagearea img" "css_element" should exist
+    And "//div[contains(concat(' ',normalize-space(@class),' '),' imagearea ')]//a[contains(@href, 'http://moodle.org')]" "xpath_element" should exist
+
+  # Dependent on setting "Image area items"
+  # This is not testable with behat.
+  # Scenario: Set "Image area items maximal height"
+
+  Scenario: Use Footnote setting
+    Given the following config values are set as admin:
+      | config   | value                                           | plugin             |
+      | footnote | <a href="/login/logout.php">Logout Footnote</a> | theme_boost_campus |
+    When I log in as "teacher1"
+    Then ".footnote" "css_element" should exist
+    Then I should see "Logout Footnote" in the ".footnote" "css_element"
+    And I click on "Logout Footnote" "link"
+    Then I should see "Do you really want to log out?"
+
+  Scenario: Enable "Dashboard menu item on top"
+    Given the following config values are set as admin:
+      | config               | value | plugin             |
+      | defaulthomepageontop | yes   | theme_boost_campus |
+    When I log in as "teacher1"
+    Then "//div[@id='nav-drawer']//span[contains(text(),'Dashboard')]" "xpath_element" should appear before "//div[@id='nav-drawer']//span[contains(text(),'Site home')]" "xpath_element"
+    When I am on "Course 1" course homepage
+    Then "//div[@id='nav-drawer']//span[contains(text(),'Dashboard')]" "xpath_element" should appear before "//div[@id='nav-drawer']//span[contains(text(),'C1')]" "xpath_element"
+
+  Scenario: Counter check: Disable "Dashboard menu item on top"
+    Given the following config values are set as admin:
+      | config               | value | plugin             |
+      | defaulthomepageontop | no    | theme_boost_campus |
+    When I log in as "teacher1"
+    Then "//div[@id='nav-drawer']//span[contains(text(),'Dashboard')]" "xpath_element" should appear before "//div[@id='nav-drawer']//span[contains(text(),'Site home')]" "xpath_element"
+    When I am on "Course 1" course homepage
+    Then "//div[@id='nav-drawer']//span[contains(text(),'Dashboard')]" "xpath_element" should appear before "//div[@id='nav-drawer']//span[contains(text(),'Site home')]" "xpath_element"
+
+   # This is not testable with Behat
+   # Scenario: Enable "Nav drawer full width on small screens"
diff --git a/tests/behat/theme_boost_campus_advanced_settings.feature b/tests/behat/theme_boost_campus_advanced_settings.feature
new file mode 100644
index 0000000..6df8b0d
--- /dev/null
+++ b/tests/behat/theme_boost_campus_advanced_settings.feature
@@ -0,0 +1,63 @@
+@theme @theme_boost_campus @theme_boost_campus_advanced_settings
+Feature: Configuring the theme_boost_campus plugin for the "Advanced settings" tab
+  In order to use the features
+  As admin
+  I need to be able to configure the theme Boost Campus plugin
+
+  Background:
+    Given the following "users" exist:
+      | username |
+      | student1 |
+      | teacher1 |
+    And the following "courses" exist:
+      | fullname | shortname |
+      | Course 1 | C1        |
+    And the following "course enrolments" exist:
+      | user     | course | role           |
+      | teacher1 | C1     | editingteacher |
+      | student1 | C1     | student        |
+    # There is a nasty bug with Behat-testing this theme that the footer is not displayed until the settings
+    # of the theme are stored manually. It seems not to be sufficient to just rely on the default settings being
+    # stored during the installation of the theme. Until we find the root of this bug, we circumvent it by setting the
+    # brand color manually and within this process making sure that all settings are really stored to the database.
+    And I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "General settings" "link"
+    And I set the field "id_s_theme_boost_campus_brandcolor" to "#7a99ac"
+    And I press "Save changes"
+    And I log out
+
+  # This is derivated from theme Boost and should be covered there with tests
+  # Scenario: Add "Raw initial SCSS"
+
+  # This is derivated from theme Boost and should be covered there with tests
+  # Scenario: Add "Raw SCSS"
+
+  # This is not testable with Behat
+  # Scenario: "Catch keyboard commands"
+
+  Scenario: Set "Position of "Add a block" widget" to "At the bottom of the default block region"
+    Given the following config values are set as admin:
+      | config            | value                 | plugin             |
+      | addablockposition | positionblockregion   | theme_boost_campus |
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage with editing mode on
+    Then I should see "Add a block" in the "#block-region-side-pre" "css_element"
+    And I should not see "Add a block" in the "#nav-drawer" "css_element"
+
+  Scenario: Set "Position of "Add a block" widget" to "At the bottom of the nav drawer"
+    Given the following config values are set as admin:
+      | config            | value                 | plugin             |
+      | addablockposition | positionnavdrawer   | theme_boost_campus |
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage with editing mode on
+    Then I should see "Add a block" in the "#nav-drawer" "css_element"
+    And "#block-region-side-pre" "css_element" should not exist
diff --git a/tests/behat/theme_boost_campus_course_layout_settings.feature b/tests/behat/theme_boost_campus_course_layout_settings.feature
new file mode 100644
index 0000000..d293b4a
--- /dev/null
+++ b/tests/behat/theme_boost_campus_course_layout_settings.feature
@@ -0,0 +1,231 @@
+@theme @theme_boost_campus @theme_boost_campus_course_layout_settings
+Feature: Configuring the theme_boost_campus plugin for the "Course Layout settings" tab
+  In order to use the features
+  As admin
+  I need to be able to configure the theme Boost Campus plugin
+
+  Background:
+    Given the following "users" exist:
+      | username |
+      | student1 |
+      | teacher1 |
+    And the following "courses" exist:
+      | fullname | shortname |
+      | Course 1 | C1        |
+    And the following "course enrolments" exist:
+      | user     | course | role           |
+      | teacher1 | C1     | editingteacher |
+      | student1 | C1     | student        |
+    # There is a nasty bug with Behat-testing this theme that the footer is not displayed until the settings
+    # of the theme are stored manually. It seems not to be sufficient to just rely on the default settings being
+    # stored during the installation of the theme. Until we find the root of this bug, we circumvent it by setting the
+    # brand color manually and within this process making sure that all settings are really stored to the database.
+    And I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "General settings" "link"
+    And I set the field "id_s_theme_boost_campus_brandcolor" to "#7a99ac"
+    And I press "Save changes"
+    And I log out
+
+  Scenario: Enable "Section 0: Title"
+    Given the following config values are set as admin:
+      | config        | value   | plugin             |
+      | section0title | yes     | theme_boost_campus |
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage with editing mode on
+    Then I should see "General" in the "li#section-0" "css_element"
+    When I edit the section "0" and I fill the form with:
+      | Custom                     | 1                           |
+      | New value for Section name | This is the general section |
+    Then I should see "This is the general section" in the "li#section-0" "css_element"
+
+  @javascript
+  Scenario: Counter check: Disable "Section 0: Title"
+    Given the following config values are set as admin:
+      | config        | value  | plugin             |
+      | section0title | no     | theme_boost_campus |
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage with editing mode on
+    Then I should not see "General" in the "li#section-0" "css_element"
+    When I edit the section "0" and I fill the form with:
+      | Custom                     | 1                           |
+      | New value for Section name | This is the general section |
+    Then I should see "This is the general section" in the "li#section-0" "css_element"
+
+  Scenario: Enable "Course edit button"
+    Given the following config values are set as admin:
+      | config           | value | plugin             |
+      | courseeditbutton | 1     | theme_boost_campus |
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    Then I should see "Turn editing on" in the "#page-header .singlebutton" "css_element"
+    When I click on "Turn editing on" "button"
+    Then I should see "Turn editing off" in the "#page-header .singlebutton" "css_element"
+    And I should see "Add an activity or resource"
+
+  Scenario: Enable "Position of switch role information"
+    Given the following config values are set as admin:
+      | config                   | value | plugin             |
+      | showswitchedroleincourse | yes   | theme_boost_campus |
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I follow "Switch role to..." in the user menu
+    And I click on "Student" "button"
+    Then I should see "You are viewing this course currently with the role:" in the ".switched-role-infobox" "css_element"
+    When I click on "Return to my normal role" "link" in the ".switched-role-infobox" "css_element"
+    Then I should not see "You are viewing this course currently with the role:"
+    And ".switched-role-infobox" "css_element" should not exist
+
+  Scenario: Enable "Show hint in hidden courses"
+    Given the following config values are set as admin:
+      | config               | value | plugin             |
+      | showhintcoursehidden | yes   | theme_boost_campus |
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    When I navigate to "Edit settings" in current page administration
+    And I set the following fields to these values:
+      | Course visibility | Hide |
+    And I click on "Save and display" "button"
+    Then I should see "This course is currently hidden. Only enrolled teachers can access this course when hidden." in the ".course-hidden-infobox" "css_element"
+    When I am on "Course 1" course homepage
+    When I navigate to "Edit settings" in current page administration
+    And I set the following fields to these values:
+      | Course visibility | Show |
+    And I click on "Save and display" "button"
+    Then I should not see "This course is currently hidden. Only enrolled teachers can access this course when hidden."
+    And ".course-hidden-infobox" "css_element" should not exist
+
+  Scenario: Enable "Show hint for guest access"
+    Given the following config values are set as admin:
+      | config                    | value | plugin             |
+      | showhintcourseguestaccess | yes   | theme_boost_campus |
+    And the following "users" exist:
+      | username |
+      | student2 |
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to "Users > Enrolment methods" in current page administration
+    And I click on "Edit" "link" in the "Guest access" "table_row"
+    And I set the following fields to these values:
+      | Allow guest access | Yes |
+    And I press "Save changes"
+    And I log out
+    When I log in as "student2"
+    And I am on "Course 1" course homepage
+    Then I should see "You are currently viewing this course as Guest." in the ".course-guestaccess-infobox" "css_element"
+    And I log out
+    And I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to "Users > Enrolment methods" in current page administration
+    And I click on "Enable" "link" in the "Self enrolment (Student)" "table_row"
+    And I log out
+    When I log in as "student2"
+    And I am on "Course 1" course homepage
+    Then I should see "To have full access to the course, you can self enrol into this course." in the ".course-guestaccess-infobox" "css_element"
+    And I click on "self enrol into this course" "link" in the ".course-guestaccess-infobox" "css_element"
+    And I click on "Enrol me" "button"
+    Then I should not see "You are currently viewing this course as Guest."
+    And ".course-guestaccess-infobox" "css_element" should not exist
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to "Users > Enrolment methods" in current page administration
+    And I click on "Edit" "link" in the "Guest access" "table_row"
+    And I set the following fields to these values:
+      | Allow guest access | No |
+    And I press "Save changes"
+    And I log out
+    When I log in as "student2"
+    And I am on "Course 1" course homepage
+    Then I should not see "You are currently viewing this course as Guest."
+    And ".course-guestaccess-infobox" "css_element" should not exist
+
+  @javascript
+  Scenario: Enable "In course settings menu"
+    Given the following config values are set as admin:
+      | config               | value | plugin             |
+      | showsettingsincourse | yes   | theme_boost_campus |
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    Then "#boost-campus-course-settings" "css_element" should not be visible
+    When I click on ".context-header-settings-menu [role=button]" "css_element"
+    Then "#boost-campus-course-settings" "css_element" should be visible
+    And I should see "Course administration" in the "#boost-campus-course-settings" "css_element"
+    And I should see "Backup" in the "#course-settings-courseadmin" "css_element"
+    And I should see "Users" in the "#boost-campus-course-settings" "css_element"
+    When I click on "Users" "link"
+    Then "#course-settings-users" "css_element" should be visible
+    And I should see "Enrolment methods" in the "#course-settings-users" "css_element"
+    And I should see "Reports" in the "#boost-campus-course-settings" "css_element"
+    When I click on "Reports" "link"
+    Then "#course-settings-coursereports" "css_element" should be visible
+    And I should see "Activity report" in the "#course-settings-coursereports" "css_element"
+    And I should see "Badges" in the "#boost-campus-course-settings" "css_element"
+    When I click on "Badges" "link"
+    Then "#course-settings-coursebadges" "css_element" should be visible
+    And I should see "Manage badges" in the "#course-settings-coursebadges" "css_element"
+    And I should see "Question bank" in the "#boost-campus-course-settings" "css_element"
+    When I click on "Question bank" "link"
+    Then "#course-settings-questionbank" "css_element" should be visible
+    And I should see "Questions" in the "#course-settings-questionbank" "css_element"
+
+  # Dependent on setting showsettingsincourse
+  @javascript
+  Scenario: Set "Switch role to..." location(s) to "Just in the user menu"
+    Given the following config values are set as admin:
+      | config                               | value | plugin             |
+      | showsettingsincourse                 | yes   | theme_boost_campus |
+      | incoursesettingsswitchtoroleposition | no    | theme_boost_campus |
+    # Purging caches is needed because the theme's SCSS must be rewritten based on the new settings
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I click on ".context-header-settings-menu [role=button]" "css_element"
+    Then I should not see "Switch role to" in the "#boost-campus-course-settings" "css_element"
+    When I click on ".usermenu" "css_element"
+    Then I should see "Switch role to..." in the ".usermenu" "css_element"
+
+  # Dependent on setting showsettingsincourse
+  @javascript
+  Scenario: Set "Switch role to..." location(s) to "Just in the course settings"
+    Given the following config values are set as admin:
+      | config                               | value | plugin             |
+      | showsettingsincourse                 | yes   | theme_boost_campus |
+      | incoursesettingsswitchtoroleposition | yes   | theme_boost_campus |
+    # Purging caches is needed because the theme's SCSS must be rewritten based on the new settings
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I click on ".context-header-settings-menu [role=button]" "css_element"
+    Then I should see "Switch role to" in the "#boost-campus-course-settings" "css_element"
+    When I click on "Switch role to" "link" in the "#boost-campus-course-settings" "css_element"
+    Then I should see "Student" in the "#course-settings-switchroletotab" "css_element"
+    When I click on ".usermenu" "css_element"
+    Then I should not see "Switch role to..." in the ".usermenu" "css_element"
+
+  # Dependent on setting showsettingsincourse
+  @javascript
+  Scenario: Set "Switch role to..." location(s) to "In both places: in the user menu and in the course settings"
+    Given the following config values are set as admin:
+      | config                               | value | plugin             |
+      | showsettingsincourse                 | yes   | theme_boost_campus |
+      | incoursesettingsswitchtoroleposition | both  | theme_boost_campus |
+    # Purging caches is needed because the theme's SCSS must be rewritten based on the new settings
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I click on ".context-header-settings-menu [role=button]" "css_element"
+    Then I should see "Switch role to" in the "#boost-campus-course-settings" "css_element"
+    When I click on "Switch role to" "link" in the "#boost-campus-course-settings" "css_element"
+    Then I should see "Student" in the "#course-settings-switchroletotab" "css_element"
+    When I click on ".usermenu" "css_element"
+    Then I should see "Switch role to..." in the ".usermenu" "css_element"
diff --git a/tests/behat/theme_boost_campus_design_settings.feature b/tests/behat/theme_boost_campus_design_settings.feature
new file mode 100644
index 0000000..c55cb8d
--- /dev/null
+++ b/tests/behat/theme_boost_campus_design_settings.feature
@@ -0,0 +1,129 @@
+@theme @theme_boost_campus @theme_boost_campus_design_settings
+Feature: Configuring the theme_boost_campus plugin for the "Design Settings" tab
+  In order to use the features
+  As admin
+  I need to be able to configure the theme Boost Campus plugin
+
+  Background:
+    Given the following "users" exist:
+      | username |
+      | teacher1 |
+    And the following "courses" exist:
+      | fullname | shortname |
+      | Course 1 | C1        |
+    And the following "course enrolments" exist:
+      | user     | course | role           |
+      | teacher1 | C1     | editingteacher |
+    # There is a nasty bug with Behat-testing this theme that the footer is not displayed until the settings
+    # of the theme are stored manually. It seems not to be sufficient to just rely on the default settings being
+    # stored during the installation of the theme. Until we find the root of this bug, we circumvent it by setting the
+    # brand color manually and within this process making sure that all settings are really stored to the database.
+    And I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "General settings" "link"
+    And I set the field "id_s_theme_boost_campus_brandcolor" to "#7a99ac"
+    And I press "Save changes"
+    And I log out
+
+  @javascript @_file_upload
+  # The setting is designed to display multiple login background images in a random order.
+  # The randomness is the reason why we cannot test it here with more than one image.
+  Scenario: Use Login page background images
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Design Settings" "link"
+    And I upload "theme/boost_campus/tests/fixtures/login_bg.jpg" file to "Login page background images" filemanager
+    And I press "Save changes"
+    And I log out
+    And I click on "Log in" "link"
+    Then the "class" attribute of "body" "css_element" should contain "loginbackgroundimage1"
+
+  # Dependent on setting "Use Login page background images"
+  @javascript @_file_upload
+  Scenario: Display text for login background images
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Design Settings" "link"
+    And I upload "theme/boost_campus/tests/fixtures/login_bg.jpg" file to "Login page background images" filemanager
+    And I set the field "id_s_theme_boost_campus_loginbackgroundimagetext" to "login_bg.jpg|Copyright by SplitShire on pexels.com"
+    And I press "Save changes"
+    And I log out
+    And I click on "Log in" "link"
+    Then I should see "Copyright by SplitShire on pexels.com" in the "#loginbackgroundimagetext" "css_element"
+
+  # This is not testable with Behat
+  # Scenario: Enable "Login form"
+
+  # This is not testable with Behat
+  # Scenario: Add "Font files"
+
+  # This is not testable with Behat
+  # Scenario: Enable "Block icon"
+
+  # This is not testable with Behat
+  # Scenario: Change "Block column width on Dashboard"
+
+  # This is not testable with Behat
+  # Scenario: Change "Block column width on all other pages"
+
+  Scenario: Enable "Dark navbar"
+    Given the following config values are set as admin:
+      | config     | value | plugin             |
+      | darknavbar | yes   | theme_boost_campus |
+    When I log in as "teacher1"
+    Then the "class" attribute of "nav" "css_element" should contain "bg-dark"
+
+  Scenario: Counter check: Disable "Dark navbar"
+    Given the following config values are set as admin:
+      | config     | value | plugin             |
+      | darknavbar | no    | theme_boost_campus |
+    When I log in as "teacher1"
+    Then the "class" attribute of "nav" "css_element" should not contain "bg-dark"
+
+  @javascript
+  Scenario: Enable "Show help texts in a modal dialogue"
+    # This scenario does not work with the settings short notation
+    #  Given the following config values are set as admin:
+    #    | config        | value | plugin             |
+    #    | helptextmodal | 1     | theme_boost_campus |
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Design Settings" "link"
+    And I set the field "s_theme_boost_campus_helptextmodal" to "1"
+    And I press "Save changes"
+    And I log out
+    And I log in as "teacher1"
+    And I am on "Course 1" course homepage with editing mode on
+    And I add a "Assignment" to section "1" and I fill the form with:
+      | Assignment name | Test assign |
+      | Description     | Test        |
+    And I open "Test assign" actions menu
+    And I click on "Edit settings" "link" in the "Test assign" activity
+    And I click on "Help with Additional files" "icon"
+    Then ".modal-dialog" "css_element" should exist
+    And I should see "Help with Additional files" in the "#assign-introattachments-modal-dialogue .modal-title" "css_element"
+    And I should see "Additional files for use in the assignment" in the "#assign-introattachments-modal-dialogue .modal-body" "css_element"
+    And I should see "Close" in the "#assign-introattachments-modal-dialogue .modal-footer" "css_element"
+    And I click on "//div[@id='assign-introattachments-modal-dialogue']//div[@class='modal-footer']//button" "xpath_element"
+    Then ".modal-dialog" "css_element" should not be visible
+
+  # This is not testable with Behat #
+  # Scenario: Change breakpoint
+
+  @javascript @_file_upload
+  Scenario: Add additional resources
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Design Settings" "link"
+    And I upload "theme/boost_campus/tests/fixtures/login_bg.jpg" file to "Add additional resources" filemanager
+    # Moodle core step "And I add the "HTML" block relies on the fact that the widget is in the nav drawer
+    And I click on "Advanced settings" "link"
+    And I set the field "id_s_theme_boost_campus_addablockposition" to "positionnavdrawer"
+    And I press "Save changes"
+    And I follow "Dashboard" in the user menu
+    When I press "Customise this page"
+    And I add the "HTML" block
+    And I configure the "(new HTML block)" block
+    And I set the field "Content" to "<p><img src='/pluginfile.php/1/theme_boost_campus/additionalresources/0/moodle_logo.jpg'><br></p>"
+    And I press "Save changes"
+    Then "//section[contains(concat(' ',normalize-space(@class),' '),' block_html ')]//img[contains(@src, 'moodle_logo.jpg')]" "xpath_element" should exist
diff --git a/tests/behat/theme_boost_campus_footer_layout_settings.feature b/tests/behat/theme_boost_campus_footer_layout_settings.feature
new file mode 100644
index 0000000..cecaa9a
--- /dev/null
+++ b/tests/behat/theme_boost_campus_footer_layout_settings.feature
@@ -0,0 +1,296 @@
+@theme @theme_boost_campus @theme_boost_campus_footer_layout_settings
+Feature: Configuring the theme_boost_campus plugin for the "Footer Layout Settings" tab
+  In order to use the features
+  As admin
+  I need to be able to configure the theme Boost Campus plugin
+
+  Background:
+    Given the following "users" exist:
+      | username |
+      | teacher1 |
+    And the following "courses" exist:
+      | fullname | shortname |
+      | Course 1 | C1        |
+    And the following "course enrolments" exist:
+      | user     | course | role           |
+      | teacher1 | C1     | editingteacher |
+    # There is a nasty bug with Behat-testing this theme that the footer is not displayed until the settings
+    # of the theme are stored manually. It seems not to be sufficient to just rely on the default settings being
+    # stored during the installation of the theme. Until we find the root of this bug, we circumvent it by setting the
+    # brand color manually and within this process making sure that all settings are really stored to the database.
+    And I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "General settings" "link"
+    And I set the field "id_s_theme_boost_campus_brandcolor" to "#7a99ac"
+    And I press "Save changes"
+    And I log out
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  Scenario: Setting "Footer blocks" to "One block columns in footer"
+    # Position of "Add a block" widget must be set to "At the bottom of the nav drawer" because the Moodle
+    # Behat step to add a block does not work with the position "At the bottom of the default block region"
+    Given the following config values are set as admin:
+      | config            | value             | plugin             |
+      | footerblocks      | 1columns          | theme_boost_campus |
+      | addablockposition | positionnavdrawer | theme_boost_campus |
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I follow "Dashboard" in the user menu
+    When I press "Customise this page"
+    And I add the "Latest announcements" block
+    And I configure the "Latest announcements" block
+    And I set the following fields to these values:
+      | id_bui_region | footer-left |
+    And I press "Save changes"
+    Then I should see "Latest announcements" in the "#block-region-footer-left" "css_element"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  Scenario: Setting "Footer blocks" to "Two block columns in footer"
+    # Position of "Add a block" widget must be set to "At the bottom of the nav drawer" because the Moodle
+    # Behat step to add a block does not work with the position "At the bottom of the default block region"
+    Given the following config values are set as admin:
+      | config            | value             | plugin             |
+      | footerblocks      | 2columns          | theme_boost_campus |
+      | addablockposition | positionnavdrawer | theme_boost_campus |
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I follow "Dashboard" in the user menu
+    When I press "Customise this page"
+    And I add the "Latest announcements" block
+    And I configure the "Latest announcements" block
+    And I set the following fields to these values:
+      | id_bui_region | footer-left |
+    And I press "Save changes"
+    And I add the "Comments" block
+    And I configure the "Comments" block
+    And I set the following fields to these values:
+      | id_bui_region | footer-right |
+    And I press "Save changes"
+    Then I should see "Latest announcements" in the "#block-region-footer-left" "css_element"
+    And I should see "Comments" in the "#block-region-footer-right" "css_element"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  Scenario: Setting "Footer blocks" to "Three block columns in footer"
+    # Position of "Add a block" widget must be set to "At the bottom of the nav drawer" because the Moodle
+    # Behat step to add a block does not work with the position "At the bottom of the default block region"
+    Given the following config values are set as admin:
+      | config            | value             | plugin             |
+      | footerblocks      | 3columns          | theme_boost_campus |
+      | addablockposition | positionnavdrawer | theme_boost_campus |
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I follow "Dashboard" in the user menu
+    When I press "Customise this page"
+    And I add the "Latest announcements" block
+    And I configure the "Latest announcements" block
+    And I set the following fields to these values:
+      | id_bui_region | footer-left |
+    And I press "Save changes"
+    And I add the "Comments" block
+    And I configure the "Comments" block
+    And I set the following fields to these values:
+      | id_bui_region | footer-middle |
+    And I press "Save changes"
+    And I add the "Tags" block
+    And I configure the "Tags" block
+    And I set the following fields to these values:
+      | id_bui_region | footer-right |
+    And I press "Save changes"
+    Then I should see "Latest announcements" in the "#block-region-footer-left" "css_element"
+    And I should see "Comments" in the "#block-region-footer-middle" "css_element"
+    And I should see "Tags" in the "#block-region-footer-right" "css_element"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  Scenario: Setting "Footer blocks" to "No blocks in footer"
+    # Position of "Add a block" widget must be set to "At the bottom of the nav drawer" because the Moodle
+    # Behat step to add a block does not work with the position "At the bottom of the default block region"
+    Given the following config values are set as admin:
+      | config            | value             | plugin             |
+      | footerblocks      | 0columns          | theme_boost_campus |
+      | addablockposition | positionnavdrawer | theme_boost_campus |
+    And I log in as "admin"
+    And I navigate to "Development > Purge caches" in site administration
+    And I press "Purge all caches"
+    And I follow "Dashboard" in the user menu
+    When I press "Customise this page"
+    And I add the "Latest announcements" block
+    And I configure the "Latest announcements" block
+    Then I should not see "Footer (left)" in the "#id_bui_region" "css_element"
+    And  I should not see "Footer (middle)" in the "#id_bui_region" "css_element"
+    Then I should not see "Footer (right)" in the "#id_bui_region" "css_element"
+    And I set the following fields to these values:
+      | id_bui_region | side-pre |
+    And I press "Save changes"
+    Then "#block-region-footer-left" "css_element" should not exist
+    And "#block-region-footer-middle" "css_element" should not exist
+    And "#block-region-footer-right" "css_element" should not exist
+    And I should not see "Latest announcements" in the "#page-footer" "css_element"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config             | value | plugin             |
+  #    | footerhidehelplink | 1     | theme_boost_campus |
+  Scenario: Enable Hide link to the Moodle docs"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhidehelplink" to "1"
+    And I press "Save changes"
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    Then I should not see "Moodle Docs for this page" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config             | value | plugin             |
+  #    | footerhidehelplink | 0     | theme_boost_campus |
+  Scenario: Counter check: Disable "Hide link to the Moodle docs"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhidehelplink" to "0"
+    And I press "Save changes"
+    And I log out
+    When I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    Then I should see "Moodle Docs for this page" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  Scenario: Enable "Hide login information"
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config              | value | plugin             |
+  #    | footerhidelogininfo | 1     | theme_boost_campus |
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhidelogininfo" to "1"
+    And I press "Save changes"
+    Then I should not see "You are logged in as Admin User" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  Scenario: Counter check: Disable "Hide login information"
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config              | value | plugin             |
+  #    | footerhidelogininfo | 0     | theme_boost_campus |
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhidelogininfo" to "0"
+    And I press "Save changes"
+    Then I should see "You are logged in as Admin User" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config             | value | plugin             |
+  #    | footerhidehomelink | 1     | theme_boost_campus |
+  Scenario: Enable "Hide link to the webpage start"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhidehomelink" to "1"
+    And I press "Save changes"
+    Then I should not see "Home" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config             | value | plugin             |
+  #    | footerhidehomelink | 0     | theme_boost_campus |
+  Scenario: Counter check: Disable"Hide link to the webpage start"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhidehomelink" to "0"
+    And I press "Save changes"
+    Then I should see "Home" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config                  | value | plugin             |
+  #    | footerhideusertourslink | 1     | theme_boost_campus |
+  Scenario: Enable "Hide link to reset the user tour"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhideusertourslink" to "1"
+    And I press "Save changes"
+    # As both provided user tours are disabled in the testing environment, we need to enable one
+    # (the Dashboard tour) first.
+    And I navigate to "Appearance > User tours" in site administration
+    And I click on "//td[@id='tours_r0_c3']//a[contains(concat(' ',normalize-space(@class),' '),'quickeditlink')]" "xpath_element"
+    And I log out
+    When I log in as "teacher1"
+    Then I should not see "Reset user tour on this page" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config                  | value | plugin             |
+  #    | footerhideusertourslink | 0     | theme_boost_campus |
+  Scenario: Counter check: Disable "Hide link to reset the user tour"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_footerhideusertourslink" to "0"
+    And I press "Save changes"
+    # As both provided user tours are disabled in the testing environment, we need to enable one
+    # (the Dashboard tour) first.
+    And I navigate to "Appearance > User tours" in site administration
+    And I click on "//td[@id='tours_r0_c3']//a[contains(concat(' ',normalize-space(@class),' '),'quickeditlink')]" "xpath_element"
+    And I log out
+    When I log in as "teacher1"
+    Then I should see "Reset user tour on this page" in the "page-footer" "region"
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config                | value | plugin             |
+  #    | hidefooteronloginpage | 1     | theme_boost_campus |
+  Scenario: Enable "Hiding the footer on the login page"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_hidefooteronloginpage" to "1"
+    And I press "Save changes"
+    And I log out
+    And I click on "Log in" "link"
+    Then I should not see "You are not logged in."
+
+  # This scenario needs full browser support only for this Behat test to pass, otherwise javascript would not be needed.
+  @javascript
+  # This scenario does not work with the settings short notation
+  #  Given the following config values are set as admin:
+  #    | config                | value | plugin             |
+  #    | hidefooteronloginpage | 0     | theme_boost_campus |
+  Scenario: Counter check: Disable "Hiding the footer on the login page"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "Footer Layout Settings" "link"
+    And I set the field "s_theme_boost_campus_hidefooteronloginpage" to "0"
+    And I press "Save changes"
+    And I log out
+    And I click on "Log in" "link"
+    Then I should see "You are not logged in."
diff --git a/tests/behat/theme_boost_campus_general_settings.feature b/tests/behat/theme_boost_campus_general_settings.feature
new file mode 100644
index 0000000..40b68f4
--- /dev/null
+++ b/tests/behat/theme_boost_campus_general_settings.feature
@@ -0,0 +1,50 @@
+@theme @theme_boost_campus @theme_boost_campus_general_settings
+Feature: Configuring the theme_boost_campus plugin for the "General settings" tab
+  In order to use the features
+  As admin
+  I need to be able to configure the theme Boost Campus plugin
+
+  Background:
+    # There is a nasty bug with Behat-testing this theme that the footer is not displayed until the settings
+    # of the theme are stored manually. It seems not to be sufficient to just rely on the default settings being
+    # stored during the installation of the theme. Until we find the root of this bug, we circumvent it by setting the
+    # brand color manually and within this process making sure that all settings are really stored to the database.
+    And I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "General settings" "link"
+    And I set the field "id_s_theme_boost_campus_brandcolor" to "#7a99ac"
+    And I press "Save changes"
+    And I log out
+
+  # This is derivated from theme Boost and should be covered there with tests
+  #  Scenario: Change "Theme preset"
+
+  # This is derivated from theme Boost and should be covered there with tests
+  #  Scenario: Upload "Additional theme preset files"
+
+  # This is derivated from theme Boost and should be covered there with tests
+  #  Scenario: Add "Background image"
+
+  # This is derivated from theme Boost and should be covered there with tests
+  #  Scenario: Set "Brand colour"
+
+  # This is not testable with behat
+  #  Scenario: Set "Brand success colour"
+
+  # This is not testable with behat
+  #  Scenario: Set "Brand info colour"
+
+  # This is not testable with behat
+  #  Scenario: Set "Brand warning colour"
+
+  # This is not testable with behat
+  #  Scenario: Set "Brand danger colour"
+
+  @javascript @_file_upload
+  Scenario: Add "Favicon"
+    When I log in as "admin"
+    And I navigate to "Appearance > Boost Campus" in site administration
+    And I click on "General settings" "link"
+    And I upload "theme/boost_campus/tests/fixtures/favicon.ico" file to "Favicon" filemanager
+    And I press "Save changes"
+    Then "//head//link[contains(@href, 'favicon.ico')]" "xpath_element" should exist
diff --git a/tests/fixtures/favicon.ico b/tests/fixtures/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..a06710ebc2f7e09cba8b452ba7719a80da9237b2
GIT binary patch
literal 7061
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

literal 0
HcmV?d00001

diff --git a/tests/fixtures/login_bg.jpg b/tests/fixtures/login_bg.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7082377f13a2f32a74090fed9215f2d5f64d7be5
GIT binary patch
literal 39402
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
E0PM92ivR!s

literal 0
HcmV?d00001

diff --git a/tests/fixtures/moodle_logo.jpg b/tests/fixtures/moodle_logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b010a89c5e57462d770200374c55e6011c0ebc39
GIT binary patch
literal 5402
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
PWe(j0ikP8?|K9`vySbu=

literal 0
HcmV?d00001

-- 
GitLab