From f48e9ca8670c722b321f2fc9a9c73c27c67a8883 Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Thu, 13 Nov 2025 16:50:54 +0100 Subject: [PATCH 1/8] handle manual trigger with AND condition --- .../table/interaction_remaining_table.php | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/classes/local/table/interaction_remaining_table.php b/classes/local/table/interaction_remaining_table.php index 37453372..268e245d 100644 --- a/classes/local/table/interaction_remaining_table.php +++ b/classes/local/table/interaction_remaining_table.php @@ -122,7 +122,7 @@ public function init() { * @throws \moodle_exception */ public function col_tools($row) { - global $PAGE, $OUTPUT; + global $PAGE, $OUTPUT, $DB; if ($row->processid !== null) { return '--'; @@ -132,6 +132,46 @@ public function col_tools($row) { } $actions = []; foreach ($this->availabletools as $tool) { + // Check if there is an automatic trigger AND associated with the manual trigger. + $records = $DB->get_records_select('tool_lifecycle_trigger', "subpluginname != :plugin and workflowid in + (select workflowid from {tool_lifecycle_trigger} where id = :id)", + ['id' => $tool->triggerid, 'plugin' => 'manual']); + if (!empty($records)) { + // There is at least one automatic trigger associated + // => check for AND condition. + $field = $DB->get_field('tool_lifecycle_workflow', 'andor', ['id' => $records[0]->workflowid]); + if ($field) { + // No AND condition => OR condition is not supported. + echo 'OR condition is not supported.
'; + continue; + } + // Ok, we have an AND condition => + // Check if courses belonging to the other triggers fit. + // var_dump($records); + $triggers = []; + foreach ($records as $record) { + $triggers[] = $record; + } + if (count($triggers) > 0) { + // var_dump($triggers); + // echo '

'; + $processor = new \tool_lifecycle\processor(); + $recordset = $processor->get_course_recordset($triggers); + // var_dump($recordset); + $found = false; + foreach ($recordset as $element) { + if ($row->courseid === $element->id) { + $found = true; + break; + } + } + if (!$found) { + continue; + } + } + } + + // Check capability. if (has_capability($tool->capability, \context_course::instance($row->courseid), null, false)) { $actions[$tool->triggerid] = new \action_menu_link_secondary( new \moodle_url($PAGE->url, ['triggerid' => $tool->triggerid, From a5aab45898cdf966ea12546b8514b842c050d971 Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Fri, 14 Nov 2025 16:17:49 +0100 Subject: [PATCH 2/8] optimize code --- .../table/interaction_remaining_table.php | 83 +++++++++++-------- 1 file changed, 47 insertions(+), 36 deletions(-) diff --git a/classes/local/table/interaction_remaining_table.php b/classes/local/table/interaction_remaining_table.php index 268e245d..2030acc0 100644 --- a/classes/local/table/interaction_remaining_table.php +++ b/classes/local/table/interaction_remaining_table.php @@ -43,6 +43,10 @@ class interaction_remaining_table extends interaction_table { /** @var manual_trigger_tool[] $availabletools list of all available trigger tools. */ private $availabletools; + /** @var array[] $trigger2courses map from trigger id to courses that are selected by automatic trigger(s) + * which is (are) assiciated to manual trigger. + */ + private $trigger2courses = []; /** * Constructor for deactivated_workflows_table. @@ -51,9 +55,36 @@ class interaction_remaining_table extends interaction_table { */ public function __construct($uniqueid, $courseids) { parent::__construct($uniqueid); - global $PAGE, $CFG; + global $PAGE, $CFG, $DB; $this->availabletools = workflow_manager::get_manual_trigger_tools_for_active_workflows(); + foreach ($this->availabletools as $tool) { + // Check if there is an automatic trigger associated with the manual trigger. + $records = $DB->get_records_select('tool_lifecycle_trigger', "subpluginname != :plugin and workflowid in + (select workflowid from {tool_lifecycle_trigger} where id = :id)", + ['id' => $tool->triggerid, 'plugin' => 'manual']); + if ($records != false && !empty($records)) { + // There is at least one automatic trigger associated + // => check for AND condition. + $field = $DB->get_field('tool_lifecycle_workflow', 'andor', ['id' => $records[0]->workflowid]); + if ($field) { + // No AND condition => OR condition is not supported. + echo 'OR condition is not supported.
'; + continue; + } + // Ok, we have an AND condition => + // Check if courses belonging to the other triggers fit. + $triggers = []; + foreach ($records as $record) { + $triggers[] = $record; + } + if (count($triggers) > 0) { + $processor = new \tool_lifecycle\processor(); + $recordset = $processor->get_course_recordset($triggers); + $this->trigger2courses[$tool->triggerid] = $recordset; + } + } + } // COALESCE returns l.time if l.time != null and 0 otherwise. // We need to do this, so that courses without any action have a smaller timestamp than courses with an recorded action. @@ -132,43 +163,23 @@ public function col_tools($row) { } $actions = []; foreach ($this->availabletools as $tool) { - // Check if there is an automatic trigger AND associated with the manual trigger. - $records = $DB->get_records_select('tool_lifecycle_trigger', "subpluginname != :plugin and workflowid in - (select workflowid from {tool_lifecycle_trigger} where id = :id)", - ['id' => $tool->triggerid, 'plugin' => 'manual']); - if (!empty($records)) { - // There is at least one automatic trigger associated - // => check for AND condition. - $field = $DB->get_field('tool_lifecycle_workflow', 'andor', ['id' => $records[0]->workflowid]); - if ($field) { - // No AND condition => OR condition is not supported. - echo 'OR condition is not supported.
'; - continue; - } - // Ok, we have an AND condition => - // Check if courses belonging to the other triggers fit. - // var_dump($records); - $triggers = []; - foreach ($records as $record) { - $triggers[] = $record; - } - if (count($triggers) > 0) { - // var_dump($triggers); - // echo '

'; - $processor = new \tool_lifecycle\processor(); - $recordset = $processor->get_course_recordset($triggers); - // var_dump($recordset); - $found = false; - foreach ($recordset as $element) { - if ($row->courseid === $element->id) { - $found = true; - break; - } - } - if (!$found) { - continue; + // Check if the manual trigegr has at least one automatic trigger associated. + if (array_key_exists($tool->triggerid, $this->trigger2courses)) { + // There is at least one automatic trigger => + // Check if 'this' course is included in course set. + $found = false; + foreach ($this->trigger2courses[$tool->triggerid] as $element) { + if ($row->courseid === $element->id) { + // Course is included in course set of automatic trigger(s). + $found = true; + break; } } + if (!$found) { + // Course is not included in automatic trigger(s) set + // => do not display action in action menu. + continue; + } } // Check capability. From 86c4ff65c1702f58734d511812d3279b87038592 Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Fri, 14 Nov 2025 17:06:30 +0100 Subject: [PATCH 3/8] add behat test for manual and automatic trigger --- .../table/interaction_remaining_table.php | 5 +- .../manual_and_automatic_trigger.feature | 95 +++++++++++++++++++ 2 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 tests/behat/manual_and_automatic_trigger.feature diff --git a/classes/local/table/interaction_remaining_table.php b/classes/local/table/interaction_remaining_table.php index 2030acc0..01fefc60 100644 --- a/classes/local/table/interaction_remaining_table.php +++ b/classes/local/table/interaction_remaining_table.php @@ -63,10 +63,11 @@ public function __construct($uniqueid, $courseids) { $records = $DB->get_records_select('tool_lifecycle_trigger', "subpluginname != :plugin and workflowid in (select workflowid from {tool_lifecycle_trigger} where id = :id)", ['id' => $tool->triggerid, 'plugin' => 'manual']); - if ($records != false && !empty($records)) { + if ($records && count($records) > 0) { + $first = reset($records); // There is at least one automatic trigger associated // => check for AND condition. - $field = $DB->get_field('tool_lifecycle_workflow', 'andor', ['id' => $records[0]->workflowid]); + $field = $DB->get_field('tool_lifecycle_workflow', 'andor', ['id' => $first->workflowid]); if ($field) { // No AND condition => OR condition is not supported. echo 'OR condition is not supported.
'; diff --git a/tests/behat/manual_and_automatic_trigger.feature b/tests/behat/manual_and_automatic_trigger.feature new file mode 100644 index 00000000..77f3dcb7 --- /dev/null +++ b/tests/behat/manual_and_automatic_trigger.feature @@ -0,0 +1,95 @@ +@tool @tool_lifecycle @manual_trigger +Feature: Add a manual trigger and test view and actions as a teacher + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@example.com | + | teacher2 | Teacher | 2 | teacher2@example.com | + And the following "categories" exist: + | name | category | idnumber | + | cata | 0 | cata | + | catba | cata | catba | + | catc | 0 | catc | + | archive | 0 | archive | + And the following "courses" exist: + | fullname | shortname | category | + | Course A | CA | cata | + | Course BA | CBA | catba | + | Course C | CC | catc | + | Course Arch | CArch | archive | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | CA | editingteacher | + | teacher1 | CBA | editingteacher | + | teacher1 | CC | editingteacher | + | teacher1 | CArch | editingteacher | + | teacher2| CA | editingteacher | + | teacher2 | CBA | teacher | + | teacher2 | CC | teacher | + | teacher2 | CArch | editingteacher | + + @javascript + Scenario: Combine manual trigger with automatic categories trigger (backup and course deletion) + Given I log in as "admin" + And I am on workflowdrafts page + And I click on "Create new workflow" "link" + And I set the following fields to these values: + | Title | My Workflow | + | Displayed workflow title | Teachers view on workflow | + And I press "Save changes" + And I select "Manual trigger" from the "tool_lifecycle-choose-trigger" singleselect + And I set the following fields to these values: + | Instance name | My Trigger | + | Icon | t/delete | + | Action name | Delete course | + | Capability | moodle/course:manageactivities | + And I press "Save changes" + + And I select "Categories trigger" from the "tool_lifecycle-choose-trigger" singleselect + And I set the following fields to these values: + | Instance name | Categories | + And I set the following fields to these values: + | Categories, for which the workflow should be triggered | cata, catc | + And I press "Save changes" + + And I select "Create backup step" from the "tool_lifecycle-choose-step" singleselect + And I set the field "Instance name" to "Create backup step" + And I press "Save changes" + And I select "Delete course step" from the "tool_lifecycle-choose-step" singleselect + And I set the field "Instance name" to "Delete Course 2" + And I press "Save changes" + + And I am on workflowdrafts page + And I press "Activate" + And I log out + And I log in as "teacher1" + + And I am on lifecycle view + Then I should see the tool "Delete course" in the "Course A" row of the "tool_lifecycle_remaining" table + And I should see the tool "Delete course" in the "Course BA" row of the "tool_lifecycle_remaining" table + And I should see the tool "Delete course" in the "Course C" row of the "tool_lifecycle_remaining" table + And I pause + And I should not see "Action" in the "Course Arch" row of the "tool_lifecycle_remaining" table + When I click on the tool "Delete course" in the "Course A" row of the "tool_lifecycle_remaining" table + And I pause + Then I should see "Course A" + And I should see "Course BA" + And I should not see the tool "Delete course" in the "Course 1" row of the "tool_lifecycle_remaining" table + And I should see the tool "Delete course" in the "Course 2" row of the "tool_lifecycle_remaining" table + When I log out + And I log in as "admin" + And I run the scheduled task "tool_lifecycle\task\lifecycle_task" + And I wait "20" seconds + And I run the scheduled task "tool_lifecycle\task\lifecycle_task" + And I wait "20" seconds + And I log out + And I log in as "teacher1" + And I am on lifecycle view + Then I should not see "Course 1" + And I should see "Course 2" + When I log out + And I log in as "admin" + And I am on coursebackups page + Then I should see "Course 1" + And I should not see "Course 2" From 72edd6e93d768690a5db96ad7790bd2bcbde6674 Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Mon, 17 Nov 2025 10:03:09 +0100 Subject: [PATCH 4/8] pass behat test --- .../manual_and_automatic_trigger.feature | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/tests/behat/manual_and_automatic_trigger.feature b/tests/behat/manual_and_automatic_trigger.feature index 77f3dcb7..c634afe1 100644 --- a/tests/behat/manual_and_automatic_trigger.feature +++ b/tests/behat/manual_and_automatic_trigger.feature @@ -19,15 +19,15 @@ Feature: Add a manual trigger and test view and actions as a teacher | Course C | CC | catc | | Course Arch | CArch | archive | And the following "course enrolments" exist: - | user | course | role | - | teacher1 | CA | editingteacher | - | teacher1 | CBA | editingteacher | - | teacher1 | CC | editingteacher | - | teacher1 | CArch | editingteacher | - | teacher2| CA | editingteacher | - | teacher2 | CBA | teacher | - | teacher2 | CC | teacher | - | teacher2 | CArch | editingteacher | + | user | course | role | + | teacher1 | CA | editingteacher | + | teacher1 | CBA | editingteacher | + | teacher1 | CC | editingteacher | + | teacher1 | CArch | editingteacher | + | teacher2 | CA | editingteacher | + | teacher2 | CBA | teacher | + | teacher2 | CC | teacher | + | teacher2 | CArch | editingteacher | @javascript Scenario: Combine manual trigger with automatic categories trigger (backup and course deletion) @@ -69,27 +69,32 @@ Feature: Add a manual trigger and test view and actions as a teacher Then I should see the tool "Delete course" in the "Course A" row of the "tool_lifecycle_remaining" table And I should see the tool "Delete course" in the "Course BA" row of the "tool_lifecycle_remaining" table And I should see the tool "Delete course" in the "Course C" row of the "tool_lifecycle_remaining" table - And I pause - And I should not see "Action" in the "Course Arch" row of the "tool_lifecycle_remaining" table - When I click on the tool "Delete course" in the "Course A" row of the "tool_lifecycle_remaining" table - And I pause - Then I should see "Course A" - And I should see "Course BA" - And I should not see the tool "Delete course" in the "Course 1" row of the "tool_lifecycle_remaining" table - And I should see the tool "Delete course" in the "Course 2" row of the "tool_lifecycle_remaining" table + And I should not see "Action" in the "Course Arch" "table_row" + + When I click on the tool "Delete course" in the "Course C" row of the "tool_lifecycle_remaining" table + And I should not see the tool "Delete course" in the "Course C" row of the "tool_lifecycle_remaining" table + And I should see the tool "Delete course" in the "Course BA" row of the "tool_lifecycle_remaining" table + And I should see the tool "Delete course" in the "Course A" row of the "tool_lifecycle_remaining" table When I log out And I log in as "admin" And I run the scheduled task "tool_lifecycle\task\lifecycle_task" - And I wait "20" seconds + And I wait "5" seconds And I run the scheduled task "tool_lifecycle\task\lifecycle_task" - And I wait "20" seconds + And I wait "5" seconds + And I run the scheduled task "tool_lifecycle\task\lifecycle_task" + And I wait "5" seconds And I log out And I log in as "teacher1" And I am on lifecycle view - Then I should not see "Course 1" - And I should see "Course 2" + Then I should not see "Course C" + And I should see "Course BA" + And I should see "Course A" + And I should see "Course Arch" When I log out And I log in as "admin" And I am on coursebackups page - Then I should see "Course 1" - And I should not see "Course 2" + Then I should see "Course C" + And I should not see "Course BA" + And I should not see "Course A" + And I should not see "Course Arch" + From 9401d73d7299e76e616cb76d64aad1fa5b45483d Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Mon, 17 Nov 2025 16:38:39 +0100 Subject: [PATCH 5/8] new behat test for automatic trigger combination --- .../manual_and_automatic_trigger.feature | 69 +++++++++++++++++-- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/tests/behat/manual_and_automatic_trigger.feature b/tests/behat/manual_and_automatic_trigger.feature index c634afe1..78e658d1 100644 --- a/tests/behat/manual_and_automatic_trigger.feature +++ b/tests/behat/manual_and_automatic_trigger.feature @@ -1,5 +1,5 @@ @tool @tool_lifecycle @manual_trigger -Feature: Add a manual trigger and test view and actions as a teacher +Feature: Combine triggers with and operation and test view and actions Background: Given the following "users" exist: @@ -17,7 +17,7 @@ Feature: Add a manual trigger and test view and actions as a teacher | Course A | CA | cata | | Course BA | CBA | catba | | Course C | CC | catc | - | Course Arch | CArch | archive | + | ArchCourse | CArch | archive | And the following "course enrolments" exist: | user | course | role | | teacher1 | CA | editingteacher | @@ -25,8 +25,8 @@ Feature: Add a manual trigger and test view and actions as a teacher | teacher1 | CC | editingteacher | | teacher1 | CArch | editingteacher | | teacher2 | CA | editingteacher | - | teacher2 | CBA | teacher | - | teacher2 | CC | teacher | + | teacher2 | CBA | student | + | teacher2 | CC | student | | teacher2 | CArch | editingteacher | @javascript @@ -69,7 +69,7 @@ Feature: Add a manual trigger and test view and actions as a teacher Then I should see the tool "Delete course" in the "Course A" row of the "tool_lifecycle_remaining" table And I should see the tool "Delete course" in the "Course BA" row of the "tool_lifecycle_remaining" table And I should see the tool "Delete course" in the "Course C" row of the "tool_lifecycle_remaining" table - And I should not see "Action" in the "Course Arch" "table_row" + And I should not see "Action" in the "ArchCourse" "table_row" When I click on the tool "Delete course" in the "Course C" row of the "tool_lifecycle_remaining" table And I should not see the tool "Delete course" in the "Course C" row of the "tool_lifecycle_remaining" table @@ -89,12 +89,67 @@ Feature: Add a manual trigger and test view and actions as a teacher Then I should not see "Course C" And I should see "Course BA" And I should see "Course A" - And I should see "Course Arch" + And I should see "ArchCourse" When I log out And I log in as "admin" And I am on coursebackups page Then I should see "Course C" And I should not see "Course BA" And I should not see "Course A" - And I should not see "Course Arch" + And I should not see "ArchCourse" + + @javascript + Scenario: Combine automatic triggers (backup and course deletion) + Given I log in as "admin" + And I am on workflowdrafts page + And I click on "Create new workflow" "link" + And I set the following fields to these values: + | Title | My Workflow | + | Displayed workflow title | Teachers view on workflow | + And I press "Save changes" + + And I select "Trigger courses by roles missing" from the "tool_lifecycle-choose-trigger" singleselect + And I set the following fields to these values: + | Instance name | Roles | + | Responsible Roles in courses | student | + And I press "Save changes" + + And I select "Categories trigger" from the "tool_lifecycle-choose-trigger" singleselect + And I set the following fields to these values: + | Instance name | Categories | + And I set the following fields to these values: + | Categories, for which the workflow should be triggered | cata, catc | + And I press "Save changes" + + And I select "Create backup step" from the "tool_lifecycle-choose-step" singleselect + And I set the field "Instance name" to "Create backup step" + And I press "Save changes" + And I select "Delete course step" from the "tool_lifecycle-choose-step" singleselect + And I set the field "Instance name" to "Delete Course 2" + And I press "Save changes" + + And I am on workflowdrafts page + And I press "Activate" + + And I run the scheduled task "tool_lifecycle\task\lifecycle_task" + And I wait "2" seconds + And I run the scheduled task "tool_lifecycle\task\lifecycle_task" + And I wait "2" seconds + And I run the scheduled task "tool_lifecycle\task\lifecycle_task" + And I wait "2" seconds + + And I log out + And I log in as "teacher1" + And I am on lifecycle view + Then I should not see "Course A" + And I should see "Course BA" + And I should see "Course C" + And I should see "ArchCourse" + When I log out + And I log in as "admin" + And I am on coursebackups page + Then I should see "Course A" + And I should not see "Course BA" + And I should not see "Course CS" + And I should not see "ArchCourse" From 03b6ab06485a7b944127ed706fc88650a0b1cafc Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Mon, 17 Nov 2025 17:26:52 +0100 Subject: [PATCH 6/8] pass coding style --- tests/behat/manual_and_automatic_trigger.feature | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/behat/manual_and_automatic_trigger.feature b/tests/behat/manual_and_automatic_trigger.feature index 78e658d1..9a979c33 100644 --- a/tests/behat/manual_and_automatic_trigger.feature +++ b/tests/behat/manual_and_automatic_trigger.feature @@ -152,4 +152,3 @@ Feature: Combine triggers with and operation and test view and actions And I should not see "Course BA" And I should not see "Course CS" And I should not see "ArchCourse" - From b26d143eb80850e450d7e9f36127320160e540ca Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Mon, 17 Nov 2025 17:48:29 +0100 Subject: [PATCH 7/8] update comments --- classes/local/table/interaction_remaining_table.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/classes/local/table/interaction_remaining_table.php b/classes/local/table/interaction_remaining_table.php index 01fefc60..bcb373df 100644 --- a/classes/local/table/interaction_remaining_table.php +++ b/classes/local/table/interaction_remaining_table.php @@ -43,8 +43,8 @@ class interaction_remaining_table extends interaction_table { /** @var manual_trigger_tool[] $availabletools list of all available trigger tools. */ private $availabletools; - /** @var array[] $trigger2courses map from trigger id to courses that are selected by automatic trigger(s) - * which is (are) assiciated to manual trigger. + /** @var array[] $trigger2courses map from manual trigger id to courses that are selected by + * automatic trigger(s) which is (are) associated to manual trigger. */ private $trigger2courses = []; @@ -74,7 +74,7 @@ public function __construct($uniqueid, $courseids) { continue; } // Ok, we have an AND condition => - // Check if courses belonging to the other triggers fit. + // Store courses selected by this (these) trigger(s). $triggers = []; foreach ($records as $record) { $triggers[] = $record; @@ -164,7 +164,7 @@ public function col_tools($row) { } $actions = []; foreach ($this->availabletools as $tool) { - // Check if the manual trigegr has at least one automatic trigger associated. + // Check if the manual trigger has at least one automatic trigger associated. if (array_key_exists($tool->triggerid, $this->trigger2courses)) { // There is at least one automatic trigger => // Check if 'this' course is included in course set. From 25f46d56194ebd86ee8d74fc2d045bc0817d6085 Mon Sep 17 00:00:00 2001 From: Karin Borm Date: Tue, 18 Nov 2025 11:55:45 +0100 Subject: [PATCH 8/8] pass behat with pgsql? --- classes/local/table/interaction_remaining_table.php | 8 ++++++-- ...omatic_trigger.feature => trigger_combination.feature} | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) rename tests/behat/{manual_and_automatic_trigger.feature => trigger_combination.feature} (97%) diff --git a/classes/local/table/interaction_remaining_table.php b/classes/local/table/interaction_remaining_table.php index bcb373df..1d48795e 100644 --- a/classes/local/table/interaction_remaining_table.php +++ b/classes/local/table/interaction_remaining_table.php @@ -82,7 +82,11 @@ public function __construct($uniqueid, $courseids) { if (count($triggers) > 0) { $processor = new \tool_lifecycle\processor(); $recordset = $processor->get_course_recordset($triggers); - $this->trigger2courses[$tool->triggerid] = $recordset; + $courses = []; + foreach ($recordset as $element) { + $courses[] = $element->id; + } + $this->trigger2courses[$tool->triggerid] = $courses; } } } @@ -170,7 +174,7 @@ public function col_tools($row) { // Check if 'this' course is included in course set. $found = false; foreach ($this->trigger2courses[$tool->triggerid] as $element) { - if ($row->courseid === $element->id) { + if ($row->courseid === $element) { // Course is included in course set of automatic trigger(s). $found = true; break; diff --git a/tests/behat/manual_and_automatic_trigger.feature b/tests/behat/trigger_combination.feature similarity index 97% rename from tests/behat/manual_and_automatic_trigger.feature rename to tests/behat/trigger_combination.feature index 9a979c33..893e8131 100644 --- a/tests/behat/manual_and_automatic_trigger.feature +++ b/tests/behat/trigger_combination.feature @@ -1,5 +1,5 @@ @tool @tool_lifecycle @manual_trigger -Feature: Combine triggers with and operation and test view and actions +Feature: Combine triggers with 'and' operation and test view and actions Background: Given the following "users" exist: @@ -31,6 +31,7 @@ Feature: Combine triggers with and operation and test view and actions @javascript Scenario: Combine manual trigger with automatic categories trigger (backup and course deletion) + # => category archive is excluded, so course ArchCourse shall not be deleted Given I log in as "admin" And I am on workflowdrafts page And I click on "Create new workflow" "link"