/**
  * Получить данные из текста письма
  */
 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']);
 }
 /**
  * Проверка метода testGetByEmail
  *
  */
 public function testGetByEmail()
 {
     // Создаем отправителя
     $source = new EmailSource();
     $source->setName("new source");
     $source->setEmailList("anytest@test.tst, othertest@test.ru");
     $source->save();
     // Ok
     $getSource = Doctrine::getTable("EmailSource")->getByEmail("*****@*****.**");
     $this->assertModels($source, $getSource);
     // Ok
     $getSource = Doctrine::getTable("EmailSource")->getByEmail("*****@*****.**");
     $this->assertModels($source, $getSource);
     // Fail
     $getSource = Doctrine::getTable("EmailSource")->getByEmail("anybodyelse");
     $this->assertEquals(false, $getSource);
 }
 /**
  * Тесты каскадов
  *
  */
 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;
 }
 /**
  * Найти парсер по теме и идентификатору источника
  *
  * @param  EmailSource $source
  * @param  string      $subject
  * @return EmailParser|false
  */
 public function getOneBySubjectAndSource(EmailSource $source, $subject)
 {
     $q = $this->createQuery('p')->andWhere('p.email_source_id = ?', $source->getId())->andWhere('? RLIKE p.subject_regexp', $subject)->limit(1);
     return $q->fetchOne();
 }