addColumn(new ColumnInfo('type',ColumnInfo::TYPE_ENUM, -1, ['values(system,plugin,module,comp)'])); $info->addColumn(new ColumnInfo('key',ColumnInfo::TYPE_VCHAR, 128)); $info->addColumn(new ColumnInfo('version',ColumnInfo::TYPE_VCHAR, 10)); $info->addColumn(new ColumnInfo('attrib',ColumnInfo::TYPE_INT, -1, [ColumnInfo::P_UNSIGNED])); $result[$info->getName()] = $info; $info = new TableInfo('websites'); $info->addColumn(new ColumnInfo('id', ColumnInfo::TYPE_SHORT, -1, [ColumnInfo::P_AUTONUM])); $info->addColumn(new ColumnInfo('parent_id', ColumnInfo::TYPE_SHORT, -1, [ColumnInfo::P_ALLOW_NULL])); $info->addColumn(new ColumnInfo('domain', ColumnInfo::TYPE_VCHAR, 255)); $info->addColumn(new ColumnInfo('online', ColumnInfo::TYPE_ENUM, -1, ['values(online,maintain,offline,timed)'])); $info->addColumn(new ColumnInfo('publish_start', ColumnInfo::TYPE_DATETIME, -1, [ColumnInfo::P_ALLOW_NULL])); $info->addColumn(new ColumnInfo('publish_end', ColumnInfo::TYPE_DATETIME, -1, [ColumnInfo::P_ALLOW_NULL])); $info->setPrimary(['id']); $result[$info->getName()] = $info; $info = new TableInfo('websitesettings'); $info->addColumn(new ColumnInfo('site_id', ColumnInfo::TYPE_SHORT, -1)); $info->addColumn(new ColumnInfo('instance', ColumnInfo::TYPE_VCHAR, 32)); $info->addColumn(new ColumnInfo('key', ColumnInfo::TYPE_VCHAR, 16)); $info->addColumn(new ColumnInfo('value', ColumnInfo::TYPE_VCHAR, 255)); $result[$info->getName()] = $info; return $result; } public static function setUpBeforeClass() { if(!defined('USE_MCMS')) define('USE_MCMS', true); if(!defined('DEBUG')) define('DEBUG', true); importlib('MCMS.system'); self::$dbcfg = array( 'dsn' => 'mysqli:localhost/test', 'user' => 'tester', 'passwd' => 'tester', 'option' => [] ); $db = Mammut\DB\DB::newInstance(self::$dbcfg['dsn'], self::$dbcfg['user'], self::$dbcfg['passwd']); $tables = self::getTableInfos(); foreach ($tables as $table) { if ($db->tableExists($table->getName())) $db->dropTable($table->getName()); $db->createTable($table); } $row = ['type' => 'system', 'key' => 'mcmsdb', 'version' => '1.0.1.1']; $db->table('installinfo')->insert($row); $db->close(); } public static function tearDownAfterClass() { $db = Mammut\DB\DB::newInstance(self::$dbcfg['dsn'], self::$dbcfg['user'], self::$dbcfg['passwd']); $tables = self::getTableInfos(); $tables = array_reverse($tables, true); foreach ($tables as $table) $db->dropTable($table); $db->close(); } public function testExecuteRunner() { $_GET = array(); $_SERVER['REQUEST_METHOD'] = 'GET'; $_SERVER['HTTP_HOST'] = 'localhost'; $appender = new ArrayAppender(); Logger::getInstance()->addAppender($appender); System::init(); $system = System::getInstance(); $system->setConfig('syskey', 'key123'); $system->setConfig('db', self::$dbcfg); $runner = new Runner(); $runner->doInit(); $runner->doRoute(); $runner->doBeforeRun(); $runner->doRun(); $runner->doAfterRun(); $runner->doOutput(); $runner->doCleanup(); $log = $appender->getLog(); echo "\n"; foreach ($log as $l) echo "{$l['timestamp']}\t{$l['level']}\t{$l['message']}\n"; } }