/** * Получить данные из текста письма */ public function testGetDataFromMailPart() { // Создаем отправителя $source = new EmailSource(); $source->setName($this->_source); $source->setEmailList("anytest@test.tst, " . $this->_from); $source->save(); $sourceId = $source->getId(); // Создаем парсер $parser = new EmailParser(); $parser->setEmailSourceId($sourceId); $parser->setName($this->_subject); $parser->setSubjectRegexp("описание операции \\(Снятие наличных\\/Платеж\\)"); $parser->setAccountRegexp("Номер карты: (\\d\\d\\d\\d)"); $parser->setTotalRegexp("списано средств: ([\\d\\.,]+) "); $parser->setDescriptionRegexp("Описание: (.+)"); $parser->setType($this->_type); $parser->save(); $email = new myCreateEmailImport($this->_getEmailData()); $email->addPart('qwerty'); $mailArray = myParseEmailImport::getEmailData((string) $email); $getEmail = new myParseEmailImport($mailArray['body'], $parser, $mailArray['to']); $this->assertEquals($this->_getParseData(), $getEmail->getData($this->_operationId)); // Проверим, работает ли регексп чистки суммы $this->_amount = '123,-400x.a00'; $parser->setTotalRegexp("списано средств: ([\\d\\.,a-zA-Z\\-]+) "); $parser->save(); $email = new myCreateEmailImport($this->_getEmailData()); $mailArray = myParseEmailImport::getEmailData((string) $email); $getEmail = new myParseEmailImport($mailArray['body'], $parser, $mailArray['to']); $data = $getEmail->getData($this->_operationId); $this->assertEquals('123400.00', $data['amount']); }
/** * Тесты каскадов * */ public function testCascade() { $source = new EmailSource(); $source->setName('name'); $source->setEmailList('email'); $source->save(); $id = $source->getId(); $parser = new EmailParser(); $parser->setName('parser'); $parser->setEmailSourceId($id); $parser->setSubjectRegexp("subj"); $parser->save(); $parserId = $parser->getId(); $source->delete(); $findParser = Doctrine::getTable("EmailParser")->find($parserId); $this->assertEquals($findParser, null); }
/** * Тест метода getParserBySubject * */ public function testGetParserBySubject() { // Создаем отправителя $source = new EmailSource(); $source->setName("test"); $source->setEmailList("*****@*****.**"); $source->save(); // Создаем правильный парсер $parser1 = new EmailParser(); $parser1->setEmailSourceId($source->getId()); $parser1->setName("parser1"); $parser1->setSubjectRegexp("описание операции \\(Снятие наличных\\/Платеж\\)"); $parser1->save(); // Создаем неправильный парсер $parser2 = new EmailParser(); $parser2->setEmailSourceId($source->getId()); $parser2->setName("parser2"); $parser2->setSubjectRegexp("это неправильный регексп"); $parser2->save(); $testParser = $source->getParserBySubject("fwd: описание операции (Снятие наличных/Платеж) xxx"); $this->assertModels($parser1, $testParser); }
/** * Создать отправителя и парсер * * @return EmailParser */ private function _createSourceAndParser() { // Создаем отправителя $source = new EmailSource(); $source->setName($this->_source); $source->setEmailList("anytest@test.tst, " . $this->_from); $source->save(); $sourceId = $source->getId(); // Создаем парсер $parser = new EmailParser(); $parser->setEmailSourceId($sourceId); $parser->setName($this->_subject); $parser->setSubjectRegexp("описание операции \\(Снятие наличных\\/Платеж\\)"); // MySQL regexp! $parser->setAccountRegexp("Номер карты: (\\d\\d\\d\\d)"); $parser->setTotalRegexp("списано средств: ([\\d\\.,]+) "); $parser->setDescriptionRegexp("Описание: (.+)"); $parser->setType($this->_type); $parser->save(); return $parser; }