/** * Проверим что полученный yaml загружается в БД * @see Doctrine_Core::loadData() */ public function testLoadData() { $csvImport = new myImportCsvVkoshelke($this->_csvData); $success = $csvImport->execute($this->_user); $this->assertTrue($success, 'Импорт должен завершиться успешно'); file_put_contents($this->_ymlFileName, $csvImport->getYmlData()); Doctrine_Core::loadData($this->_ymlFileName, true); $transfer = Doctrine::getTable('Operation')->findOneByTransferAmount('300000.00', Doctrine::HYDRATE_ARRAY); $this->assertNotEmpty($transfer, 'Перевод должен попасть в БД'); $this->assertEquals(Operation::TYPE_TRANSFER, $transfer['type'], 'Тип операции перевода должен быть ' . Operation::TYPE_TRANSFER); $this->assertEquals('2010-06-06', $transfer['date'], 'Дата операции должна совпадать с датой в CSV'); }
/** * Загрузить данные пользователя, AJAX */ public function executeImportCsv(sfRequest $request) { $csvFile = $request->getFiles('data'); $import = new myImportCsvVkoshelke($csvFile['tmp_name']); if (!$import->execute($this->getUser()->getUserRecord())) { $errorMessage = 'Не удалось разобрать CSV'; $this->myLogMessage(__METHOD__, 'fail', $errorMessage, $errorMessage, file_get_contents($csvFile['tmp_name'])); return $this->renderJsonError($errorMessage); } $ymlFileName = sprintf("%s/php_%s_%s.yml", sys_get_temp_dir(), __CLASS__, rand(1000000.0, 10000000.0)); try { file_put_contents($ymlFileName, $import->getYmlData()); Doctrine::loadData($ymlFileName, true); unlink($ymlFileName); } catch (Exception $e) { $errorMessage = 'Импорт не удалось загрузить данные в БД'; $this->myLogMessage(__METHOD__, 'fail', $errorMessage, $errorMessage, file_get_contents($csvFile['tmp_name'])); return $this->renderJsonError($errorMessage); } return $this->renderJsonSuccess('Импорт данных успешно завершён'); }