/** * Get the schema manager. * * @return \CiviTesterBuilder * * @code * CiviTester::builder()->apply(); * CiviTester::builder()->sqlFile('ex.sql')->apply(); * @endCode */ public static function builder() { if (!isset(self::$singletons['builder'])) { $civiRoot = dirname(dirname(dirname(dirname(__FILE__)))); self::$singletons['builder'] = new CiviTesterBuilder('CiviTesterSchema'); self::$singletons['builder']->callback(function ($ctx) { $dbName = CiviTester::dsn('database'); echo "Installing {$dbName} schema\n"; CiviTester::schema()->dropAll(); }, 'msg-drop')->sqlFile($civiRoot . "/sql/civicrm.mysql")->callback(function ($ctx) { CiviTester::data()->populate(); }, 'populate'); } return self::$singletons['builder']; }
/** * @param bool $perClass * @param null $object * @return bool * TRUE if the populate logic runs; FALSE if it is skipped */ protected static function _populateDB($perClass = FALSE, &$object = NULL) { if (CIVICRM_UF !== 'UnitTests') { throw new \RuntimeException("_populateDB requires CIVICRM_UF=UnitTests"); } if ($perClass || $object == NULL) { $dbreset = TRUE; } else { $dbreset = $object->requireDBReset(); } if (self::$populateOnce || !$dbreset) { return FALSE; } self::$populateOnce = NULL; CiviTester::data()->populate(); return TRUE; }