name = $name; return $this; } /** * Function which takes an array of test names and formats them as included raw suite data * * @param array $tests * @return $this */ public function includeTests($tests) { $this->includes = $this->appendEntriesToSuiteContents($this->includes, 'test', $tests); return $this; } /** * Function which takes an array of test names and formats them as excluded raw suite data * * @param array $tests * @return $this */ public function excludeTests($tests) { $this->excludes = $this->appendEntriesToSuiteContents($this->excludes, 'test', $tests); return $this; } /** * Function which takes an array of group names and formats them as included raw suite data * * @param array $groups * @return $this */ public function includeGroups($groups) { $this->includes = $this->appendEntriesToSuiteContents($this->includes, 'group', $groups); return $this; } /** * Function which takes an array of group names and formats them as excluded raw suite data * * @param array $groups * @return $this */ public function excludeGroups($groups) { $this->excludes = $this->appendEntriesToSuiteContents($this->excludes, 'groups', $groups); return $this; } /** * Function which takes an array of module names and formats them as included raw suite data * * @param array $modules * @return $this */ public function includeModules($modules) { $this->includes = $this->appendEntriesToSuiteContents($this->includes, 'module', $modules); return $this; } /** * Function which takes an array of group names and formats them as excluded raw suite data * * @param array $modules * @return $this */ public function excludeModules($modules) { $this->excludes = $this->appendEntriesToSuiteContents($this->excludes, 'module', $modules); return $this; } /** * Function which takes an array of current include/exclude contents, a type (group, module, or test) and contents * to be appended to the array and returns a propelry formatted array representative of parsed suite data. * * @param array $currentContents * @param string $type * @param array $contents * @return array */ private function appendEntriesToSuiteContents($currentContents, $type, $contents) { $newContents = $currentContents; foreach ($contents as $entry) { $newContents[$entry] = [ SuiteObjectExtractor::NODE_NAME => $type, SuiteObjectExtractor::NAME => $entry ]; } return $newContents; } /** * Add an after hook passed in by arg (or default if no arg) * * @param null $afterHook * @return $this */ public function withAfterHook($afterHook = null) { if ($afterHook == null) { $this->afterHook = [$this->testActionAfterName => [ ActionObjectExtractor::NODE_NAME => $this->testActionType, ActionObjectExtractor::TEST_STEP_MERGE_KEY => $this->testActionAfterName ]]; } else { $this->afterHook = $afterHook; } return $this; } /** * Add a before hook passed in by arg (or default if no arg) * * @param null $beforeHook * @return $this */ public function withBeforeHook($beforeHook = null) { if ($beforeHook == null) { $this->beforeHook = [$this->testActionBeforeName => [ ActionObjectExtractor::NODE_NAME => $this->testActionType, ActionObjectExtractor::TEST_STEP_MERGE_KEY => $this->testActionBeforeName ]]; } else { $this->beforeHook = $beforeHook; } return $this; } /** * Function which takes all class properties set and generates an array representing suite data as parsed from xml. * * @return array */ public function build() { return ['suites' => [ $this->name => [ SuiteObjectExtractor::NAME => $this->name, TestObjectExtractor::TEST_BEFORE_HOOK => $this->beforeHook, TestObjectExtractor::TEST_AFTER_HOOK => $this->afterHook, SuiteObjectExtractor::INCLUDE_TAG_NAME => $this->includes, SuiteObjectExtractor::EXCLUDE_TAG_NAME => $this->excludes ] ]]; } }