/**
  * @depends testCreateAndGetCampaignItemById
  */
 public function testGetByProcessed()
 {
     CampaignItem::deleteAll();
     for ($i = 0; $i < 5; $i++) {
         $processed = 0;
         if ($i % 2) {
             $processed = 1;
         }
         $campaignItem = new CampaignItem();
         $campaignItem->processed = $processed;
         $this->assertTrue($campaignItem->unrestrictedSave());
     }
     $campaignItems = CampaignItem::getAll();
     $this->assertCount(5, $campaignItems);
     $processedItems = CampaignItem::getByProcessed(1);
     $this->assertCount(2, $processedItems);
     $notProcessedItems = CampaignItem::getByProcessed(0);
     $this->assertCount(3, $notProcessedItems);
 }
 /**
  * @depends testRunWithCustomBatchSize
  */
 public function testRunWithContactContainingPrimaryEmailOptedOut()
 {
     $unprocessedItems = CampaignItem::getByProcessed(0);
     $this->assertCount(1, $unprocessedItems);
     $job = new CampaignQueueMessagesInOutboxJob();
     $email = new Email();
     $email->emailAddress = '*****@*****.**';
     $email->optOut = true;
     $contact = ContactTestHelper::createContactByNameForOwner('contact 07', $this->user);
     $contact->primaryEmail = $email;
     $this->assertTrue($contact->save());
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 08', 'description goes here', 'fromName', '*****@*****.**');
     $campaign = CampaignTestHelper::createCampaign('campaign 08', 'subject', '[[FIRST^NAME]]', '[[LAST^NAME]]', null, null, null, Campaign::STATUS_PROCESSING, null, null, $marketingList);
     $processed = 0;
     $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact);
     $unprocessedItems = CampaignItem::getByProcessedAndCampaignId($processed, $campaign->id);
     $this->assertCount(1, $unprocessedItems);
     $this->assertTrue($job->run());
     $unprocessedItems = CampaignItem::getByProcessedAndCampaignId($processed, $campaign->id);
     $this->assertCount(0, $unprocessedItems);
     $personId = $contact->getClassId('Person');
     $activities = CampaignItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(CampaignItemActivity::TYPE_SKIP, $campaignItem->id, $personId);
     $this->assertNotEmpty($activities);
     $this->assertCount(1, $activities);
 }