/**
  * @depends testCreateAndGetAutoresponderItemActivityById
  */
 public function testAutoresponderItemActivityStringValue()
 {
     $autoresponderItemActivities = AutoresponderItemActivity::getAll();
     $this->assertCount(2, $autoresponderItemActivities);
     $types = AutoresponderItemActivity::getTypesArray();
     $type = $types[$autoresponderItemActivities[0]->type];
     $expectedStringValue = $autoresponderItemActivities[0]->latestDateTime . ': ' . strval($autoresponderItemActivities[0]->person) . '/' . $type;
     $this->assertEquals($expectedStringValue, strval($autoresponderItemActivities[0]));
 }
 /**
  * @depends testCreateAndGetAutoresponderById
  */
 public function testDeleteAutoresponder()
 {
     $autoresponders = Autoresponder::getAll();
     $this->assertCount(7, $autoresponders);
     $autoresponderId = $autoresponders[0]->id;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $contact = ContactTestHelper::createContactByNameForOwner('autoresponderContact', Yii::app()->user->userModel);
     $saved = AutoresponderItem::addNewItem(0, $processDateTime, $contact, $autoresponders[0]);
     $this->assertTrue($saved);
     $autoresponderItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId);
     //print_r($autoresponderItems[0]->id);
     $this->assertNotEmpty($autoresponderItems);
     $this->assertCount(1, $autoresponderItems);
     $autoresponderItemActivity = new AutoresponderItemActivity();
     $autoresponderItemActivity->type = AutoresponderItemActivity::TYPE_OPEN;
     $autoresponderItemActivity->quantity = 10;
     $autoresponderItemActivity->latestSourceIP = '10.11.12.13';
     $autoresponderItemActivity->autoresponderItem = $autoresponderItems[0];
     $this->assertTrue($autoresponderItemActivity->save());
     //print_r($autoresponderItemActivity->id);
     $autoresponderItemActivities = AutoresponderItemActivity::getAll();
     $this->assertCount(1, $autoresponderItemActivities);
     $autoresponders[0]->delete();
     $autoresponders = Autoresponder::getAll();
     $this->assertEquals(6, count($autoresponders));
     $autoresponderitems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId);
     $this->assertEquals(0, count($autoresponderitems));
     $autoresponderItemActivities = AutoresponderItemActivity::getAll();
     $this->assertCount(0, $autoresponderItemActivities);
 }
 /**
  * @depends testRunWithOneBounceMessageWithDesiredCustomHeaders
  */
 public function testRunWithTwoBounceMessagesWithDesiredCustomHeaders()
 {
     $this->skipTestIfMissingSettings();
     $contact = ContactTestHelper::createContactByNameForOwner('contact 02', $this->user);
     $personId = $contact->getClassId('Person');
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 02');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 02', 'text content', 'html content', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList);
     $processed = 0;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 200);
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     $bounce = BounceMessageTestHelper::resolveBounceObject();
     $this->assertTrue($bounce->connect());
     $headers = array('Return-Path' => $bounce->returnPath, 'zurmoItemId' => $autoresponderItem->id, 'zurmoItemClass' => get_class($autoresponderItem), 'zurmoPersonId' => $personId);
     $bounceTestEmailAddress = Yii::app()->params['emailTestAccounts']['bounceTestEmailAddress'];
     Yii::app()->emailHelper->sendRawEmail("1/2 Bounce - Desired Headers " . date(DATE_RFC822), Yii::app()->emailHelper->outboundUsername, $bounceTestEmailAddress, 'Test email body', '<strong>Test</strong> email html body', null, null, null, null, $headers);
     Yii::app()->emailHelper->sendRawEmail("2/2 Bounce - Desired Headers " . date(DATE_RFC822), Yii::app()->emailHelper->outboundUsername, $bounceTestEmailAddress, 'Test email body', '<strong>Test</strong> email html body', null, null, null, null, $headers);
     sleep(60);
     $messages = $bounce->getMessages();
     $this->assertEquals(2, count($messages));
     for ($i = 0; $i < 2; $i++) {
         $this->assertEquals("Mail delivery failed: returning message to sender", $messages[$i]->subject);
         $this->assertContains('Test email body', $messages[$i]->textBody);
         $this->assertContains('zurmoItemId: ' . $autoresponderItem->id, $messages[$i]->textBody);
         $this->assertContains('zurmoItemClass: ' . get_class($autoresponderItem), $messages[$i]->textBody);
         $this->assertContains('zurmoPersonId: ' . $personId, $messages[$i]->textBody);
     }
     $job = new EmailBounceJob();
     $this->assertTrue($job->run());
     $activities = AutoresponderItemActivity::getAll();
     $this->assertNotEmpty($activities);
     $this->assertCount(2, $activities);
     $activities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(AutoresponderItemActivity::TYPE_BOUNCE, $autoresponderItem->id, $personId);
     $this->assertNotEmpty($activities);
     $this->assertCount(1, $activities);
     $this->assertEquals(2, $activities[0]->quantity);
     $messages = $bounce->getMessages();
     $this->assertEquals(0, count($messages));
 }
 /**
  * @depends testCreateAndGetAutoresponderItemById
  */
 public function testDeleteAutoresponderItem()
 {
     $autoresponderItems = AutoresponderItem::getAll();
     $this->assertCount(37, $autoresponderItems);
     $autoresponderItemActivity = new AutoresponderItemActivity();
     $autoresponderItemActivity->type = AutoresponderItemActivity::TYPE_OPEN;
     $autoresponderItemActivity->quantity = 10;
     $autoresponderItemActivity->latestSourceIP = '10.11.12.13';
     $autoresponderItemActivity->autoresponderItem = $autoresponderItems[0];
     $this->assertTrue($autoresponderItemActivity->save());
     $autoresponderItemActivities = AutoresponderItemActivity::getAll();
     $this->assertCount(1, $autoresponderItemActivities);
     $autoresponderItems[0]->delete();
     $autoresponderItems = AutoresponderItem::getAll();
     $this->assertEquals(36, count($autoresponderItems));
     $autoresponderItemActivities = AutoresponderItemActivity::getAll();
     $this->assertCount(0, $autoresponderItemActivities);
 }