protected function execute(InputInterface $input, OutputInterface $output) { $suites = $this->getSuites($input->getOption('config')); $output->writeln("<info>Building Guy classes for suites: " . implode(', ', $suites) . '</info>'); foreach ($suites as $suite) { $settings = $this->getSuiteConfig($suite, $input->getOption('config')); $namespace = rtrim($settings['namespace'], '\\'); $modules = \Codeception\Configuration::modules($settings); $code = array(); $methodCounter = 0; $output->writeln('<info>' . $settings['class_name'] . "</info> includes modules: " . implode(', ', array_keys($modules))); $docblock = array(); foreach ($modules as $module) { $docblock[] = "use " . get_class($module) . ";"; } $methods = array(); $actions = \Codeception\Configuration::actions($modules); foreach ($actions as $action => $moduleName) { if (in_array($action, $methods)) { continue; } $module = $modules[$moduleName]; $method = new \ReflectionMethod(get_class($module), $action); $code[] = $this->addMethod($method); $methods[] = $action; $methodCounter++; } $docblock = $this->prependAbstractGuyDocBlocks($docblock); $contents = sprintf($this->template, $namespace ? "namespace {$namespace};" : '', implode("\n", $docblock), 'class', $settings['class_name'], '\\Codeception\\AbstractGuy', implode("\n\n ", $code)); $file = $settings['path'] . $this->getClassName($settings['class_name']) . '.php'; $this->save($file, $contents, true); $output->writeln("{$settings['class_name']}.php generated successfully. {$methodCounter} methods added"); } }
public function testActions() { $modules = array('EmulateModuleHelper' => new \Codeception\Module\EmulateModuleHelper()); $actions = \Codeception\Configuration::actions($modules); $this->assertArrayHasKey('seeEquals', $actions); $this->assertEquals('EmulateModuleHelper', $actions['seeEquals']); }
protected function initializeModules() { self::$modules = Configuration::modules($this->settings); self::$actions = Configuration::actions(self::$modules); foreach (self::$modules as $module) { $module->_initialize(); } }
/** * @group core */ public function testActionsInExtendedModule() { $modules = array('PhpSiteHelper' => new \Codeception\Module\PhpSiteHelper()); $actions = \Codeception\Configuration::actions($modules); $this->assertArrayHasKey('amOnPage', $actions); $this->assertArrayHasKey('see', $actions); $this->assertArrayHasKey('click', $actions); }
public function __construct(EventDispatcher $dispatcher, $name, $settings) { $this->settings = array_merge($this->defaults, $settings); $this->dispatcher = $dispatcher; $this->suite = $this->createSuite($name); $this->path = $settings['path']; $this->settings['bootstrap'] = $this->path . $settings['bootstrap']; self::$modules = \Codeception\Configuration::modules($settings); self::$actions = \Codeception\Configuration::actions(self::$modules); }
public function __construct($settings) { $this->settings = $settings; $this->modules = \Codeception\Configuration::modules($settings); $this->actions = \Codeception\Configuration::actions($this->modules); }
/** * @group core */ public function testActionsExplicitlySetForNotInheritedModule() { \Codeception\Module\PhpSiteHelper::$onlyActions = array('see'); $modules = array('PhpSiteHelper' => new \Codeception\Module\PhpSiteHelper()); $actions = \Codeception\Configuration::actions($modules); $this->assertArrayNotHasKey('amOnPage', $actions); $this->assertArrayHasKey('see', $actions); }