/** * Get all paths to fixture files and all paths to include uimap elements * @return array */ public function getConfigFixtures() { if (!empty($this->_configFixtures)) { return $this->_configFixtures; } //Get initial path to fixtures $frameworkConfig = $this->_configHelper->getConfigFramework(); $initialPath = SELENIUM_TESTS_BASEDIR . DIRECTORY_SEPARATOR . $frameworkConfig['fixture_base_path']; //Get fixtures sequence $fallbackOrderFixture = $this->_configHelper->getFixturesFallbackOrder(); //Get folder names where uimaps are stored for specified area $uimapFolders = array(); $configAreas = $this->_configHelper->getConfigAreas(); foreach ($configAreas as $areaName => $areaConfig) { $uimapFolders[$areaName] = $areaConfig['uimap_path']; } $separator = preg_quote(DIRECTORY_SEPARATOR); $facade = new File_Iterator_Facade(); foreach ($fallbackOrderFixture as $codePoolName) { $projectPath = $initialPath . DIRECTORY_SEPARATOR . $codePoolName; if (!is_dir($projectPath)) { continue; } $files = $facade->getFilesAsArray($projectPath, '.yml'); foreach ($files as $file) { if (preg_match('|' . $separator . 'data' . $separator . '|', $file)) { $this->_configFixtures[$codePoolName]['data'][] = $file; } if (preg_match('|' . $separator . 'uimap' . $separator . '|', $file)) { foreach ($uimapFolders as $areaName => $uimapFolder) { $pattern = implode($separator, array('', 'uimap', $uimapFolder, '')); if (preg_match('|' . $pattern . '|', $file)) { $this->_configFixtures[$codePoolName]['uimap'][$areaName][] = $file; } } } if (preg_match('|' . $separator . self::UIMAP_INCLUDE_FOLDER . $separator . '|', $file)) { foreach ($uimapFolders as $areaName => $uimapFolder) { $pattern = implode($separator, array('', self::UIMAP_INCLUDE_FOLDER, $uimapFolder)) . '\\.yml'; if (preg_match('|' . $pattern . '|', $file)) { $this->_configFixtures['uimapInclude'][$areaName][] = $file; } } } } } return $this->_configFixtures; }
/** * Set data params * * @param string $value * @param string $key Index of the target to randomize */ public function setDataParams(&$value, $key) { if (preg_match('/%randomize%/', $value)) { $value = preg_replace('/%randomize%/', $this->generate('string', 5, ':lower:'), $value); } if (preg_match('/%longValue[0-9]+%/', $value)) { $str = preg_replace('/(.)+(?=longValue[0-9]+%)/', '', $value); list($dataParam) = explode('%', $str); $length = preg_replace('/[^0-9]/', '', $dataParam); $value = preg_replace('/%longValue[0-9]+%/', $this->generate('string', $length, ':alpha:'), $value); } if (preg_match('/%specialValue[0-9]+%/', $value)) { $str = preg_replace('/(.)+(?=specialValue[0-9]+%)/', '', $value); list($dataParam) = explode('%', $str); $length = preg_replace('/[^0-9]/', '', $dataParam); $value = preg_replace('/%specialValue[0-9]+%/', $this->generate('string', $length, ':punct:'), $value); } if (preg_match('/%currentDate%/', $value)) { $fallbackOrderHelper = $this->_configHelper->getFixturesFallbackOrder(); switch (end($fallbackOrderHelper)) { case 'default': $value = preg_replace('/%currentDate%/', date("n/j/y"), $value); break; default: $value = preg_replace('/%currentDate%/', date("n/j/Y"), $value); break; } } if (preg_match('/^%next(\\w)+%$/', $value)) { $fallbackOrderHelper = $this->_configHelper->getFixturesFallbackOrder(); $param = strtoupper(substr(substr($value, 0, -1), 5)); switch (end($fallbackOrderHelper)) { case 'enterprise': $value = preg_replace('/%next(\\w)+%/', date("n/j/Y", strtotime("+1 {$param}")), $value); break; default: $value = preg_replace('/%next(\\w)+%/', date("n/j/y", strtotime("+1 {$param}")), $value); break; } } }
/** * @covers Mage_Selenium_Helper_Config::getFixturesFallbackOrder */ public function testGetFixturesFallbackOrder() { $configHelper = new Mage_Selenium_Helper_Config($this->_config); $configHelper->setApplication('mage'); $fallbackOrder = $configHelper->getFixturesFallbackOrder(); $this->assertInternalType('array', $fallbackOrder); $this->assertSame($fallbackOrder, array('default')); $configHelper->setApplication('enterprise'); $fallbackOrder = $configHelper->getFixturesFallbackOrder(); $this->assertInternalType('array', $fallbackOrder); $this->assertSame($fallbackOrder, array('default', 'enterprise')); }