/** * MySQL specific tests. * * @return void */ public function testMySQL() { if ($this->currentlyActiveDriverID !== 'mysql') { return; } testpack('Throw exception in case of issue with assoc constraint'); $bunny = R::dispense('bunny'); $carrot = R::dispense('carrot'); $faultyWriter = new \FaultyWriter(R::getToolBox()->getDatabaseAdapter()); $faultyOODB = new OODB($faultyWriter); $faultyOODB->setBeanHelper(R::getRedBean()->getBeanHelper()); $faultyToolbox = new ToolBox($faultyOODB, R::getToolBox()->getDatabaseAdapter(), $faultyWriter); $faultyAssociationManager = new AssociationManager($faultyToolbox); $faultyWriter->setSQLState('23000'); $faultyAssociationManager->associate($bunny, $carrot); pass(); $faultyWriter->setSQLState('42S22'); R::nuke(); try { $faultyAssociationManager->associate($bunny, $carrot); fail(); } catch (SQL $exception) { pass(); } }
/** * Configures the facade, want to have a new Writer? A new Object Database or a new * Adapter and you want it on-the-fly? Use this method to hot-swap your facade with a new * toolbox. * * @param ToolBox $tb toolbox to configure facade with * * @return ToolBox */ public static function configureFacadeWithToolbox(ToolBox $tb) { $oldTools = self::$toolbox; self::$toolbox = $tb; self::$writer = self::$toolbox->getWriter(); self::$adapter = self::$toolbox->getDatabaseAdapter(); self::$redbean = self::$toolbox->getRedBean(); self::$finder = new Finder(self::$toolbox); self::$associationManager = new AssociationManager(self::$toolbox); self::$redbean->setAssociationManager(self::$associationManager); self::$labelMaker = new LabelMaker(self::$toolbox); $helper = new SimpleModelHelper(); $helper->attachEventListeners(self::$redbean); self::$redbean->setBeanHelper(new SimpleFacadeBeanHelper()); self::$duplicationManager = new DuplicationManager(self::$toolbox); self::$tagManager = new TagManager(self::$toolbox); return $oldTools; }