From 85b30e2ac5ed32516dc4e2f1d92ca910e73b548d Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Thu, 29 Aug 2019 11:37:40 +0800 Subject: [PATCH] MDL-66550 behat: Transform fields to search in a fieldset --- lib/behat/classes/behat_selectors.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/behat/classes/behat_selectors.php b/lib/behat/classes/behat_selectors.php index 9b0831726a3..9f75474efb3 100644 --- a/lib/behat/classes/behat_selectors.php +++ b/lib/behat/classes/behat_selectors.php @@ -27,6 +27,7 @@ require_once(__DIR__ . '/exact_named_selector.php'); require_once(__DIR__ . '/partial_named_selector.php'); use Behat\Mink\Exception\ExpectationException as ExpectationException; +use Behat\Mink\Element\Element; /** * Moodle selectors manager. @@ -93,4 +94,26 @@ class behat_selectors { behat_context_helper::escape($locator), ]; } + + /** + * Transform the selector for a field. + * + * @param string $label The label to find + * @param Element $container The container to look within + * @return array The selector, locator, and container to search within + */ + public static function transform_find_for_field(behat_base $context, string $label, Element $container): array { + $hasfieldset = strpos($label, '>'); + if (false !== $hasfieldset) { + list($containerlabel, $label) = explode(">", $label, 2); + $container = $context->find_fieldset(trim($containerlabel), $container); + $label = trim($label); + } + + return [ + 'selector' => 'named_partial', + 'locator' => self::normalise_named_selector('field', $label), + 'container' => $container, + ]; + } }