public function test_process_withReplace_OneIdentifiedByFieldOnly() { $mockPdoFacade = \Mockery::mock('\\TestDbAcle\\Db\\Mysql\\Pdo\\PdoFacade'); $dataTree = new \TestDbAcle\Psv\PsvTree(); $dataTree->addTable(new \TestDbAcle\Psv\Table\Table('user', array(array("user_id" => "10", "first_name" => "john", "last_name" => "miller"), array("user_id" => "20", "first_name" => "stu", "last_name" => "Smith"), array("user_id" => "30", "first_name" => "stuart", "last_name" => "Smith")), new \TestDbAcle\Psv\Table\Meta(array('mode' => 'replace', 'identifiedBy' => array('first_name'))))); $mockPdoFacade->shouldReceive('recordExists')->once()->with("user", array('first_name' => 'john'))->andReturn(true)->ordered(); $mockPdoFacade->shouldReceive('executeSql')->once()->with("UPDATE `user` SET `user_id`='10', `first_name`='john', `last_name`='miller' WHERE `first_name`='john'")->ordered(); $mockPdoFacade->shouldReceive('recordExists')->once()->with("user", array('first_name' => 'stu'))->andReturn(true)->ordered(); $mockPdoFacade->shouldReceive('executeSql')->once()->with("UPDATE `user` SET `user_id`='20', `first_name`='stu', `last_name`='Smith' WHERE `first_name`='stu'")->ordered(); $mockPdoFacade->shouldReceive('recordExists')->once()->with("user", array('first_name' => 'stuart'))->andReturn(false)->ordered(); $mockPdoFacade->shouldReceive('executeSql')->once()->with("INSERT INTO `user` ( `user_id`, `first_name`, `last_name` ) VALUES ( '30', 'stuart', 'Smith' )")->ordered(); $dataInserter = new \TestDbAcle\Db\DataInserter\DataInserter($mockPdoFacade, new \TestDbAcle\Db\DataInserter\Factory\UpsertBuilderFactory($mockPdoFacade)); $dataInserter->process($dataTree); }
public function getFactoriesMysql() { return array('dataInserter' => function (\TestDbAcle\ServiceLocator $serviceLocator) { $dataInserter = new \TestDbAcle\Db\DataInserter\DataInserter($serviceLocator->get('pdoFacade'), $serviceLocator->get('upsertBuilderFactory')); $dataInserter->addUpsertListener(new \TestDbAcle\Db\DataInserter\Listeners\MysqlZeroPKListener($serviceLocator->get('pdoFacade'), $serviceLocator->get('tableList'))); return $dataInserter; }, 'pdoFacade' => function (\TestDbAcle\ServiceLocator $serviceLocator) { $pdoFacade = new \TestDbAcle\Db\Mysql\Pdo\PdoFacade($serviceLocator->get('pdo')); $pdoFacade->disableForeignKeyChecks(); $pdoFacade->enableExceptions(); return $pdoFacade; }, 'tableFactory' => function (\TestDbAcle\ServiceLocator $serviceLocator) { return new \TestDbAcle\Db\Mysql\TableFactory($serviceLocator->get('pdoFacade')); }); }