Skip to content
Extraits de code Groupes Projets
IntegrationTestCase.php 44,6 ko
Newer Older
  • Learn to ignore specific revisions
  •             isset($params['setDateLastN']) ? $params['setDateLastN'] : false,
                isset($params['language']) ? $params['language'] : false,
                isset($params['segment']) ? $params['segment'] : false,
                isset($params['visitorId']) ? $params['visitorId'] : false,
                isset($params['abandonedCarts']) ? $params['abandonedCarts'] : false,
                isset($params['idGoal']) ? $params['idGoal'] : false,
                isset($params['apiModule']) ? $params['apiModule'] : false,
                isset($params['apiAction']) ? $params['apiAction'] : false,
                isset($params['otherRequestParameters']) ? $params['otherRequestParameters'] : array(),
                isset($params['supertableApi']) ? $params['supertableApi'] : false,
                isset($params['fileExtension']) ? $params['fileExtension'] : false);
    
    
            $compareAgainst = isset($params['compareAgainst']) ? ('test_' . $params['compareAgainst']) : false;
    
            foreach ($requestUrls as $apiId => $requestUrl) {
    
                $this->_testApiUrl($testName . $testSuffix, $apiId, $requestUrl, $compareAgainst);
    
            // change the language back to en
    
            if ($this->lastLanguage != 'en') {
    
    
            if (!empty($this->missingExpectedFiles)) {
    
                $expectedDir = dirname(reset($this->missingExpectedFiles));
    
                $this->fail(" ERROR: Could not find expected API output '"
    
                    . implode("', '", $this->missingExpectedFiles)
                    . "'. For new tests, to pass the test, you can copy files from the processed/ directory into"
                    . " $expectedDir  after checking that the output is valid. %s ");
    
            // Display as one error all sub-failures
            if (!empty($this->comparisonFailures)) {
                $messages = '';
                $i = 1;
                foreach ($this->comparisonFailures as $failure) {
                    $msg = $failure->getMessage();
                    $msg = strtok($msg, "\n");
                    $messages .= "\n#" . $i++ . ": " . $msg;
                }
                $messages .= " \n ";
                print($messages);
                $first = reset($this->comparisonFailures);
                throw $first;
    
        }
    
        /**
         * changing the language within one request is a bit fancy
         * in order to keep the core clean, we need a little hack here
         *
         * @param string $langId
         */
    
        protected function changeLanguage($langId)
    
            if ($this->lastLanguage != $langId) {
    
                Translate::reloadLanguage($langId);
    
         * Path where expected/processed output files are stored.
    
        public static function getPathToTestDirectory()
    
            return dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Integration';
    
        /**
         * Returns an array associating table names w/ lists of row data.
    
         * @return array
         */
        protected static function getDbTablesWithData()
        {
    
            foreach (DbHelper::getTablesInstalled() as $tableName) {
    
                $result[$tableName] = Db::fetchAll("SELECT * FROM $tableName");
    
        /**
         * Truncates all tables then inserts the data in $tables into each
         * mapped table.
    
         * @param array $tables Array mapping table names with arrays of row data.
         */
    
        protected static function restoreDbTables($tables)
        {
            // truncate existing tables
    
            DbHelper::truncateAllTables();
    
            $existingTables = DbHelper::getTablesInstalled();
    
            foreach ($tables as $table => $rows) {
                // create table if it's an archive table
                if (strpos($table, 'archive_') !== false && !in_array($table, $existingTables)) {
                    $tableType = strpos($table, 'archive_numeric') !== false ? 'archive_numeric' : 'archive_blob';
    
    
    mattab's avatar
    mattab a validé
                    $createSql = DbHelper::getTableCreateSql($tableType);
    
                    $createSql = str_replace(Common::prefixTable($tableType), $table, $createSql);
    
                foreach ($rows as $row) {
                    $values = array();
                    foreach ($row as $name => $value) {
                        if (is_null($value)) {
                            $values[] = 'NULL';
                        } else if (is_numeric($value)) {
                            $values[] = $value;
                        } else if (!ctype_print($value)) {
                            $values[] = "x'" . bin2hex(substr($value, 1)) . "'";
                        } else {
    
                            $values[] = "?";
                            $bind[] = $value;
    
                        }
                    }
    
                    $rowsSql[] = "(" . implode(',', $values) . ")";
                }
    
                $sql = "INSERT INTO $table VALUES " . implode(',', $rowsSql);
    
            }
        }
    
        /**
         * Drops all archive tables.
         */
        public static function deleteArchiveTables()
    
            foreach (ArchiveTableCreator::getTablesArchivesInstalled() as $table) {
    
                Db::query("DROP TABLE IF EXISTS $table");
    
            ArchiveTableCreator::refreshTableList($forceReload = true);
    
    mattab's avatar
    mattab a validé