diff --git a/admin/tests/behat/behat_admin.php b/admin/tests/behat/behat_admin.php index cdca881ae4a..97a78a44477 100644 --- a/admin/tests/behat/behat_admin.php +++ b/admin/tests/behat/behat_admin.php @@ -58,7 +58,7 @@ class behat_admin extends behat_base { // We expect admin block to be visible, otherwise go to homepage. if (!$this->getSession()->getPage()->find('css', '.block_settings')) { $this->getSession()->visit($this->locate_path('/')); - $this->getSession()->wait(self::TIMEOUT, '(document.readyState === "complete")'); + $this->wait(self::TIMEOUT, '(document.readyState === "complete")'); } // Search by label. @@ -67,7 +67,7 @@ class behat_admin extends behat_base { $submitsearch = $this->find('css', 'form.adminsearchform input[type=submit]'); $submitsearch->press(); - $this->getSession()->wait(self::TIMEOUT, '(document.readyState === "complete")'); + $this->wait(self::TIMEOUT, '(document.readyState === "complete")'); // Admin settings does not use the same DOM structure than other moodle forms // but we also need to use lib/behat/form_field/* to deal with the different moodle form elements. @@ -94,4 +94,16 @@ class behat_admin extends behat_base { } } + /** + * Waits with the provided params if we are running a JS session. + * + * @param int $timeout + * @param string $javascript + * @return void + */ + protected function wait($timeout, $javascript = false) { + if ($this->running_javascript()) { + $this->getSession()->wait($timeout, $javascript); + } + } } diff --git a/mod/glossary/tests/behat/entries_always_editable.feature b/mod/glossary/tests/behat/entries_always_editable.feature new file mode 100644 index 00000000000..617617a8111 --- /dev/null +++ b/mod/glossary/tests/behat/entries_always_editable.feature @@ -0,0 +1,43 @@ +@mod_glossary @mod +Feature: A teacher can set whether glossary entries are always editable or not + In order to ensure students think before adding new entries + As a moodle teacher + I need to prevent entries to be always editable + + @javascript + Scenario: Glossary entries are not always editable + 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 | category | + | Course 1 | C1 | 0 | + And the following "course enrolments" exists: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | student | + And I log in as "admin" + And I set the following administration settings values: + | Maximum time to edit posts | 1 minutes | + And I log out + And I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + And I add a "Glossary" to section "1" and I fill the form with: + | Name | Test glossary name | + | Description | Test glossary description | + | Always allow editing | No | + And I log out + And I log in as "student1" + And I follow "Course 1" + And I follow "Test glossary name" + When I add a glossary entry with the following data: + | Concept | Test concept name | + | Definition | Test concept description | + Then "Delete: Test concept name" "link" should exists + And "Edit: Test concept name" "link" should exists + And I wait "65" seconds + And I reload the page + Then "Delete: Test concept name" "link" should not exists + And "Edit: Test concept name" "link" should not exists