public function testSaveRates() { $this->specify("должен удалять из базы курсы с тем же типом операции, типом валют и датой что и сохраняемые", function () { $rates = (include __DIR__ . '/../_data/card_rates.php'); $date = new \DateTime(); $oldRate = ['type' => 'card', 'date' => $date->format('Y-m-d'), 'curr' => 'USD', 'count' => 100, 'buy' => '9999.99', 'sale' => '8888.88', 'nbu' => '7777.7777']; $hash = md5(json_encode($oldRate)); $oldRate['md5'] = $hash; $I = $this->tester; $I->haveInDatabase('t_exchange_rates', $oldRate); $dbh = $this->getModule('Db')->dbh; $db = new DbiTester($dbh); $er = new ExchangeRates($db); $er->parse($this->data('card.xls')); $er->save(); $I->dontSeeInDatabase('t_exchange_rates', $oldRate); }); $this->specify("должен сохранять курсы валют в базу", function () { $rates = (include __DIR__ . '/../_data/card_rates.php'); $I = $this->tester; $dbh = $this->getModule('Db')->dbh; $db = new DbiTester($dbh); $er = new ExchangeRates($db); $er->parse($this->data('card.xls')); $er->save(); $I->seeInDatabase('t_exchange_rates', array_pop($rates)); }); }
public function testImport() { $this->specify("должен бросать исключение если файлы импорта не существуют", function () { $er = new ExchangeRates(); $er->parse('fail.file'); }, ['throws' => 'PHPExcel_Reader_Exception']); $this->specify("должен бросать исключение если не возможно определить какие курсы валют в нем содержатся", function () { $er = new ExchangeRates(); $er->parse($this->data('wrong.xls')); }, ['throws' => 'Matchish\\Exceptions\\ExchangeRatesParseException']); $this->specify("должен правильно определять тип курсов в файле", function ($filename, $parserClassName) { Stub::make($parserClassName, array('parse' => Stub::once(function () { return []; }))); $er = new ExchangeRates(); $er->parse($this->data($filename)); }, ['examples' => [['cash.xls', '\\Matchish\\ExchangeRatesCashParser'], ['card.xls', '\\Matchish\\ExchangeRatesCardParser']]]); $this->specify("должен принимать массив имен файлов", function () { $er = new ExchangeRates(); $er->parse([$this->data('cash.xls'), $this->data('card.xls')]); }); }