public function testGetChartData()
 {
     $contact = ContactTestHelper::createContactByNameForOwner('contact01', Yii::app()->user->userModel);
     $this->addCampaignItem($contact, '2013-04-01', array(CampaignItemActivity::TYPE_CLICK => 1, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 1, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0));
     $campaignChartDataProvider = new MarketingListPerformanceChartDataProvider();
     $campaignChartDataProvider->setBeginDate('2013-04-01');
     $campaignChartDataProvider->setEndDate('2013-04-25');
     $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $campaignChartDataProvider->setCampaign($this->campaign);
     $marketingListChartDataProvider = new MarketingListPerformanceChartDataProvider();
     $marketingListChartDataProvider->setBeginDate('2013-04-01');
     $marketingListChartDataProvider->setEndDate('2013-04-25');
     $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $marketingListChartDataProvider->setMarketingList($this->marketingList);
     $combinedChartDataProvider = new MarketingListPerformanceChartDataProvider();
     $combinedChartDataProvider->setBeginDate('2013-04-01');
     $combinedChartDataProvider->setEndDate('2013-04-25');
     $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $this->addAutoresponderItem($contact, '2013-04-01', array(CampaignItemActivity::TYPE_CLICK => 1, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 0, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0));
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100.0;
     $expectedArray['uniqueOpenRate'] = 0.0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100.0;
     $expectedArray['uniqueOpenRate'] = 50.0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $contact = ContactTestHelper::createContactByNameForOwner('contact02', Yii::app()->user->userModel);
     $this->addCampaignItem($contact, '2013-04-25', array(CampaignItemActivity::TYPE_CLICK => 0, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 0, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0));
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 25';
     $expectedArray['dateBalloonLabel'] = 'Apr 25';
     $this->assertEquals($expectedArray, $campaignChartData[24]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 24);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 25';
     $expectedArray['dateBalloonLabel'] = 'Apr 25';
     $this->assertEquals($expectedArray, $marketingListChartData[24]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 24);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 25';
     $expectedArray['dateBalloonLabel'] = 'Apr 25';
     $this->assertEquals($expectedArray, $combinedChartData[24]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 24);
     $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 1';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 22';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 22';
     $this->assertEquals($expectedArray, $campaignChartData[3]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 3);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 1';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 22';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 22';
     $this->assertEquals($expectedArray, $marketingListChartData[3]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider, 3);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 50;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 1';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($combinedChartDataProvider);
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 22';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 22';
     $this->assertEquals($expectedArray, $combinedChartData[3]);
     $this->assertChartDataForNormalUser($combinedChartDataProvider, 3);
     $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 50;
     $expectedArray['uniqueOpenRate'] = 50;
     $expectedArray['displayLabel'] = 'Apr';
     $expectedArray['dateBalloonLabel'] = 'Apr';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr';
     $expectedArray['dateBalloonLabel'] = 'Apr';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 66.67;
     $expectedArray['uniqueOpenRate'] = 33.33;
     $expectedArray['displayLabel'] = 'Apr';
     $expectedArray['dateBalloonLabel'] = 'Apr';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($combinedChartDataProvider);
 }