/**
  * @depends testGetAttributesForOrderBysOnUser
  */
 public function testGetAttributesForChartSeries()
 {
     $model = new ReportModelTestItem();
     $rules = new ReportsTestReportRules();
     $report = new Report();
     $report->setType(Report::TYPE_SUMMATION);
     $report->setModuleClassName('ReportsTestModule');
     $adapter = new ModelRelationsAndAttributesToSummationReportAdapter($model, $rules, $report->getType());
     $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys());
     $this->assertEquals(0, count($attributes));
     //Add a group by, but not as a display attribute
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy->attributeIndexOrDerivedType = 'dropDown';
     $report->setModuleClassName('ReportsTestModule');
     $report->addGroupBy($groupBy);
     $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys());
     $this->assertEquals(0, count($attributes));
     //Add a group by as a display attribute
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy->attributeIndexOrDerivedType = 'dropDown';
     $report->setModuleClassName('ReportsTestModule');
     $report->addGroupBy($groupBy);
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $displayAttribute->attributeIndexOrDerivedType = 'dropDown';
     $report->addDisplayAttribute($displayAttribute);
     $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys(), $report->getDisplayAttributes());
     $this->assertEquals(1, count($attributes));
     $compareData = array('label' => 'Drop Down');
     $this->assertEquals($compareData, $attributes['dropDown']);
     //Add a second group by as a display attribute
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy->attributeIndexOrDerivedType = 'radioDropDown';
     $report->setModuleClassName('ReportsTestModule');
     $report->addGroupBy($groupBy);
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $displayAttribute->attributeIndexOrDerivedType = 'radioDropDown';
     $report->addDisplayAttribute($displayAttribute);
     $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys(), $report->getDisplayAttributes());
     $this->assertEquals(2, count($attributes));
     $compareData = array('label' => 'Drop Down');
     $this->assertEquals($compareData, $attributes['dropDown']);
     $compareData = array('label' => 'Radio Drop Down');
     $this->assertEquals($compareData, $attributes['radioDropDown']);
     //Add a third group by that is likeContactState as a display attribute
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy->attributeIndexOrDerivedType = 'likeContactState';
     $report->setModuleClassName('ReportsTestModule');
     $report->addGroupBy($groupBy);
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $displayAttribute->attributeIndexOrDerivedType = 'likeContactState';
     $report->addDisplayAttribute($displayAttribute);
     $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys(), $report->getDisplayAttributes());
     $this->assertEquals(3, count($attributes));
     $compareData = array('label' => 'Drop Down');
     $this->assertEquals($compareData, $attributes['dropDown']);
     $compareData = array('label' => 'Radio Drop Down');
     $this->assertEquals($compareData, $attributes['radioDropDown']);
     $compareData = array('label' => 'A name for a state');
     $this->assertEquals($compareData, $attributes['likeContactState']);
 }