/**
  * @param MarketingListGrowthChartDataProvider $chartDataProvider
  * @param string $uniqueId
  * @return string
  */
 public static function renderListGrowthChartContent(MarketingListGrowthChartDataProvider $chartDataProvider, $uniqueId)
 {
     assert('is_string($uniqueId)');
     $chartData = $chartDataProvider->getChartData();
     Yii::import('ext.amcharts.AmChartMaker');
     $amChart = new AmChartMaker();
     $amChart->data = $chartData;
     $amChart->id = $uniqueId;
     $amChart->type = ChartRules::TYPE_STACKED_COLUMN_2D;
     $amChart->addSerialGraph(MarketingChartDataProvider::EXISTING_SUBSCRIBERS_COUNT, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'Existing Subscribers') . "'", 'balloonText' => "'[[dateBalloonLabel]]<br>" . Zurmo::t('MarketingModule', 'Existing Subscribers') . ": [[value]]'"));
     $amChart->addSerialGraph(MarketingChartDataProvider::NEW_SUBSCRIBERS_COUNT, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'New Subscribers') . "'", 'balloonText' => "'[[dateBalloonLabel]]<br>" . Zurmo::t('MarketingModule', 'New Subscribers') . ": [[value]]'"));
     $amChart->xAxisName = $chartDataProvider->getXAxisName();
     $amChart->yAxisName = $chartDataProvider->getYAxisName();
     $javascript = $amChart->javascriptChart();
     Yii::app()->getClientScript()->registerScript(__CLASS__ . $uniqueId, $javascript);
     $cClipWidget = new CClipWidget();
     $cClipWidget->beginClip("Chart");
     $cClipWidget->widget('application.core.widgets.AmChart', array('id' => $uniqueId));
     $cClipWidget->endClip();
     return $cClipWidget->getController()->clips['Chart'];
 }
 public function testGetChartData()
 {
     $contact = ContactTestHelper::createContactByNameForOwner('contact01', Yii::app()->user->userModel);
     $marketingListMember = $this->createMarketingListMember($contact, '2013-04-01');
     $chartDataProvider = new MarketingListGrowthChartDataProvider();
     $chartDataProvider->setBeginDate('2013-04-01');
     $chartDataProvider->setEndDate('2013-04-02');
     $chartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $chartDataProvider->setMarketingList($this->marketingList);
     $combinedDataProvider = new MarketingListGrowthChartDataProvider();
     $combinedDataProvider->setBeginDate('2013-04-01');
     $combinedDataProvider->setEndDate('2013-04-02');
     $combinedDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $chartData = $chartDataProvider->getChartData();
     $combinedChartData = $combinedDataProvider->getChartData();
     $this->assertEquals(1, $chartData[0]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[0]['existingSubscribersCount']);
     $this->assertEquals(0, $chartData[1]['newSubscribersCount']);
     $this->assertEquals(1, $chartData[1]['existingSubscribersCount']);
     $this->assertEquals($chartData, $combinedChartData);
     $marketingListMember->unsubscribed = true;
     $this->assertTrue($marketingListMember->unrestrictedSave());
     $chartData = $chartDataProvider->getChartData();
     $combinedChartData = $combinedDataProvider->getChartData();
     $this->assertEquals(1, $chartData[0]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[0]['existingSubscribersCount']);
     $this->assertEquals(0, $chartData[1]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[1]['existingSubscribersCount']);
     $this->assertEquals($chartData, $combinedChartData);
     $contact = ContactTestHelper::createContactByNameForOwner('contact02', Yii::app()->user->userModel);
     $this->createMarketingListMember($contact, '2013-04-02');
     $chartData = $chartDataProvider->getChartData();
     $combinedChartData = $combinedDataProvider->getChartData();
     $this->assertEquals(1, $chartData[0]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[0]['existingSubscribersCount']);
     $this->assertEquals(1, $chartData[1]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[1]['existingSubscribersCount']);
     $this->assertEquals($chartData, $combinedChartData);
     $chartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $combinedDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $chartData = $chartDataProvider->getChartData();
     $combinedChartData = $combinedDataProvider->getChartData();
     $this->assertEquals(2, $chartData[0]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[0]['existingSubscribersCount']);
     $this->assertEquals($chartData, $combinedChartData);
     $contact = ContactTestHelper::createContactByNameForOwner('contact03', Yii::app()->user->userModel);
     $this->createMarketingListMember($contact, '2013-05-15');
     $chartDataProvider->setEndDate('2013-05-17');
     $combinedDataProvider->setEndDate('2013-05-17');
     $chartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $combinedDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $chartData = $chartDataProvider->getChartData();
     $combinedChartData = $combinedDataProvider->getChartData();
     $this->assertEquals(2, $chartData[0]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[0]['existingSubscribersCount']);
     $this->assertEquals(1, $chartData[1]['newSubscribersCount']);
     $this->assertEquals(1, $chartData[1]['existingSubscribersCount']);
     $this->assertEquals($chartData, $combinedChartData);
     $chartDataProvider->setEndDate('2013-05-01');
     $combinedDataProvider->setEndDate('2013-05-01');
     $chartData = $chartDataProvider->getChartData();
     $combinedChartData = $combinedDataProvider->getChartData();
     $this->assertEquals(2, $chartData[0]['newSubscribersCount']);
     $this->assertEquals(0, $chartData[0]['existingSubscribersCount']);
     $this->assertEquals(1, $chartData[1]['newSubscribersCount']);
     $this->assertEquals(1, $chartData[1]['existingSubscribersCount']);
     $this->assertEquals($chartData, $combinedChartData);
 }