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'));
     });
 }