/**
  * @depends testCreateActionForRowsAndColumns
  */
 public function testExportAction()
 {
     $notificationsBeforeCount = Notification::getCount();
     $notificationMessagesBeforeCount = NotificationMessage::getCount();
     $savedReports = SavedReport::getAll();
     $this->assertEquals(2, count($savedReports));
     $this->setGetArray(array('id' => $savedReports[0]->id));
     //Test where there is no data to export
     $this->runControllerWithRedirectExceptionAndGetContent('reports/default/export');
     $this->assertContains('There is no data to export.', Yii::app()->user->getFlash('notification'));
     $reportModelTestItem = new ReportModelTestItem();
     $reportModelTestItem->string = 'string1';
     $reportModelTestItem->lastName = 'xLast1';
     $this->assertTrue($reportModelTestItem->save());
     $reportModelTestItem = new ReportModelTestItem();
     $reportModelTestItem->string = 'string2';
     $reportModelTestItem->lastName = 'xLast2';
     $this->assertTrue($reportModelTestItem->save());
     $content = $this->runControllerWithExitExceptionAndGetContent('reports/default/export');
     $this->assertEquals('Testing download.', $content);
     ExportModule::$asynchronousThreshold = 1;
     $this->runControllerWithRedirectExceptionAndGetUrl('reports/default/export');
     // Start background job
     $job = new ExportJob();
     $this->assertTrue($job->run());
     $exportItems = ExportItem::getAll();
     $this->assertEquals(1, count($exportItems));
     $fileModel = $exportItems[0]->exportFileModel;
     $this->assertEquals(1, $exportItems[0]->isCompleted);
     $this->assertEquals('csv', $exportItems[0]->exportFileType);
     $this->assertEquals('reports', $exportItems[0]->exportFileName);
     $this->assertTrue($fileModel instanceof ExportFileModel);
     $this->assertEquals($notificationsBeforeCount + 1, Notification::getCount());
     $this->assertEquals($notificationMessagesBeforeCount + 1, NotificationMessage::getCount());
 }
 public function testSqlQueryWithLinkTypeSpecificOnRelatedModels()
 {
     $quote = DatabaseCompatibilityUtil::getQuote();
     Yii::app()->user->userModel = User::getByUsername('super');
     $reportModelTestItem2 = new ReportModelTestItem2();
     $reportModelTestItem2->name = 'name';
     $this->assertTrue($reportModelTestItem2->save());
     $reportModelTestItem = new ReportModelTestItem();
     $reportModelTestItem->lastName = 'lastName';
     $reportModelTestItem->string = 'string';
     $reportModelTestItem->hasOne = $reportModelTestItem2;
     $this->assertTrue($reportModelTestItem->save());
     $report = new Report();
     $report->setType(Report::TYPE_ROWS_AND_COLUMNS);
     $report->setModuleClassName('ReportsTest2Module');
     $report->setFiltersStructure('');
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute1->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute1->attributeIndexOrDerivedType = 'hasMany2___FullName';
     $report->addDisplayAttribute($displayAttribute1);
     $dataProvider = new RowsAndColumnsReportDataProvider($report);
     $content = $dataProvider->makeSqlQueryForDisplay();
     $compareContent = "select {$quote}reportmodeltestitem{$quote}.{$quote}id{$quote} reportmodeltestitemid " . "from {$quote}reportmodeltestitem2{$quote} " . "left join {$quote}reportmodeltestitem{$quote} on " . "{$quote}reportmodeltestitem{$quote}.{$quote}hasone_reportmodeltestitem2_id{$quote} " . "= {$quote}reportmodeltestitem2{$quote}.{$quote}id{$quote}  limit 10 offset 0";
     $this->assertEquals($compareContent, $content);
 }
 public function testViaSelectAndViaModelTogether()
 {
     $reportModelTestItem = new ReportModelTestItem();
     $reportModelTestItem->string = 'string';
     $reportModelTestItem->lastName = 'lastName';
     $reportModelTestItem->integer = 9000;
     $reportModelTestItem->boolean = true;
     $this->assertTrue($reportModelTestItem->save());
     $report = new Report();
     $report->setType(Report::TYPE_SUMMATION);
     $report->setModuleClassName('ReportsTestModule');
     $report->setFiltersStructure('');
     //viaSelect attribute
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute1->attributeIndexOrDerivedType = 'integer__Minimum';
     $displayAttribute1->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute1->columnAliasName == 'col0');
     $report->addDisplayAttribute($displayAttribute1);
     //viaModel attribute
     $reportModelTestItem->boolean = true;
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute2->setModelAliasUsingTableAliasName('model1');
     $displayAttribute2->attributeIndexOrDerivedType = 'boolean';
     $report->addDisplayAttribute($displayAttribute2);
     $dataProvider = new SummationReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareHeaderData = array('Integer -(Min)', 'Boolean');
     $compareRowData = array(array(9000, true), array('Total'));
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
     $reportModelTestItem->delete();
 }
Пример #4
0
 /**
  * @depends testGetDataWithNoRelationsSet
  */
 public function testExportRelationAttributes()
 {
     $values = array('Test1', 'Test2', 'Test3', 'Sample', 'Demo');
     $customFieldData = CustomFieldData::getByName('ReportTestDropDown');
     $customFieldData->serializedData = serialize($values);
     $saved = $customFieldData->save();
     assert('$saved');
     // Not Coding Standard
     $report = new Report();
     //for fullname attribute
     $reportModelTestItem = new ReportModelTestItem();
     $reportModelTestItem->firstName = 'xFirst';
     $reportModelTestItem->lastName = 'xLast';
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute1->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute1->attributeIndexOrDerivedType = 'hasMany2___FullName';
     //for boolean attribute
     $reportModelTestItem->boolean = true;
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute2->attributeIndexOrDerivedType = 'hasMany2___boolean';
     //for date attribute
     $reportModelTestItem->date = '2013-02-12';
     $displayAttribute3 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute3->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute3->attributeIndexOrDerivedType = 'hasMany2___date';
     //for datetime attribute
     $reportModelTestItem->dateTime = '2013-02-12 10:15:00';
     $displayAttribute4 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute4->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute4->attributeIndexOrDerivedType = 'hasMany2___dateTime';
     //for float attribute
     $reportModelTestItem->float = 10.5;
     $displayAttribute5 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute5->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute5->attributeIndexOrDerivedType = 'hasMany2___float';
     //for integer attribute
     $reportModelTestItem->integer = 10;
     $displayAttribute6 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute6->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute6->attributeIndexOrDerivedType = 'hasMany2___integer';
     //for phone attribute
     $reportModelTestItem->phone = '7842151012';
     $displayAttribute7 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute7->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute7->attributeIndexOrDerivedType = 'hasMany2___phone';
     //for string attribute
     $reportModelTestItem->string = 'xString';
     $displayAttribute8 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute8->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute8->attributeIndexOrDerivedType = 'hasMany2___string';
     //for textArea attribute
     $reportModelTestItem->textArea = 'xtextAreatest';
     $displayAttribute9 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute9->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute9->attributeIndexOrDerivedType = 'hasMany2___textArea';
     //for url attribute
     $reportModelTestItem->url = 'http://www.test.com';
     $displayAttribute10 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute10->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute10->attributeIndexOrDerivedType = 'hasMany2___url';
     //for dropdown attribute
     $reportModelTestItem->dropDown->value = $values[1];
     $displayAttribute11 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute11->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute11->attributeIndexOrDerivedType = 'hasMany2___dropDown';
     //for currency attribute
     $currencies = Currency::getAll();
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 100;
     $currencyValue->currency = $currencies[0];
     $this->assertEquals('USD', $currencyValue->currency->code);
     $reportModelTestItem->currencyValue = $currencyValue;
     $displayAttribute12 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute12->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute12->attributeIndexOrDerivedType = 'hasMany2___currencyValue';
     //for primaryAddress attribute
     $reportModelTestItem->primaryAddress->street1 = 'someString';
     $displayAttribute13 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute13->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute13->attributeIndexOrDerivedType = 'hasMany2___primaryAddress___street1';
     //for primaryEmail attribute
     $reportModelTestItem->primaryEmail->emailAddress = "*****@*****.**";
     $displayAttribute14 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute14->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute14->attributeIndexOrDerivedType = 'hasMany2___primaryEmail___emailAddress';
     //for multiDropDown attribute
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Multi 1';
     $reportModelTestItem->multiDropDown->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Multi 2';
     $reportModelTestItem->multiDropDown->values->add($customFieldValue);
     $displayAttribute15 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute15->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute15->attributeIndexOrDerivedType = 'hasMany2___multiDropDown';
     //for tagCloud attribute
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Cloud 2';
     $reportModelTestItem->tagCloud->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Cloud 3';
     $reportModelTestItem->tagCloud->values->add($customFieldValue);
     $displayAttribute16 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute16->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute16->attributeIndexOrDerivedType = 'hasMany2___tagCloud';
     //for radioDropDown attribute
     $reportModelTestItem->radioDropDown->value = $values[1];
     $displayAttribute17 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute17->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute17->attributeIndexOrDerivedType = 'hasMany2___radioDropDown';
     //for likeContactState
     $reportModelTestItem7 = new ReportModelTestItem7();
     $reportModelTestItem7->name = 'someName';
     $reportModelTestItem->likeContactState = $reportModelTestItem7;
     $displayAttribute18 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute18->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute18->attributeIndexOrDerivedType = 'hasMany2___likeContactState';
     //for dynamic user attribute
     $reportModelTestItem->owner = Yii::app()->user->userModel;
     $displayAttribute19 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute19->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute19->attributeIndexOrDerivedType = 'hasMany2___owner__User';
     $saved = $reportModelTestItem->save();
     $this->assertTrue($saved);
     $tempId = 1;
     $reportResultsRowData = new ReportResultsRowData(array($displayAttribute1, $displayAttribute2, $displayAttribute3, $displayAttribute4, $displayAttribute5, $displayAttribute6, $displayAttribute7, $displayAttribute8, $displayAttribute9, $displayAttribute10, $displayAttribute11, $displayAttribute12, $displayAttribute13, $displayAttribute14, $displayAttribute15, $displayAttribute16, $displayAttribute17, $displayAttribute18, $displayAttribute19), $tempId);
     $reportResultsRowData->addModelAndAlias($reportModelTestItem, 'relatedModel');
     $adapter = new ReportToExportAdapter($reportResultsRowData, $report);
     $compareHeaderData = array('Name', 'Reports Tests >> Boolean', 'Reports Tests >> Date', 'Reports Tests >> Date Time', 'Reports Tests >> Float', 'Reports Tests >> Integer', 'Reports Tests >> Phone', 'Reports Tests >> String', 'Reports Tests >> Text Area', 'Reports Tests >> Url', 'Reports Tests >> Drop Down', 'Reports Tests >> Currency Value', 'Reports Tests >> Currency Value Currency', 'Reports Tests >> Primary Address >> Street 1', 'Reports Tests >> Primary Email >> Email Address', 'Reports Tests >> Multi Drop Down', 'Reports Tests >> Tag Cloud', 'Reports Tests >> Radio Drop Down', 'Reports Tests >> A name for a state', 'Reports Tests >> Owner');
     $compareRowData = array('xFirst xLast', 1, '2013-02-12', '2013-02-12 10:15:00', 10.5, 10, '7842151012', 'xString', 'xtextAreatest', 'http://www.test.com', 'Test2', '100.00', 'USD', 'someString', '*****@*****.**', 'Multi 1,Multi 2', 'Cloud 2,Cloud 3', 'Test2', 'someName', 'super');
     // Not Coding Standard
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
     //for MANY-MANY Relationship
     //for name attribute
     $reportModelTestItem = new ReportModelTestItem3();
     $reportModelTestItem->name = 'xFirst';
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute1->setModelAliasUsingTableAliasName('relatedModel1');
     $displayAttribute1->attributeIndexOrDerivedType = 'hasOne___hasMany3___name';
     //for somethingOn3 attribute
     $reportModelTestItem->somethingOn3 = 'somethingOn3';
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->setModelAliasUsingTableAliasName('relatedModel1');
     $displayAttribute2->attributeIndexOrDerivedType = 'hasOne___hasMany3___somethingOn3';
     $reportResultsRowData = new ReportResultsRowData(array($displayAttribute1, $displayAttribute2), 4);
     $reportResultsRowData->addModelAndAlias($reportModelTestItem, 'relatedModel1');
     $adapter = new ReportToExportAdapter($reportResultsRowData, $report);
     $compareHeaderData = array('ReportModelTestItem2 >> ReportModelTestItem3s >> Name', 'ReportModelTestItem2 >> ReportModelTestItem3s >> Something On 3');
     $compareRowData = array('xFirst', 'somethingOn3');
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
 }
 public function testGetDataWithNoRelationsSet()
 {
     $values = array('Test1', 'Test2', 'Test3', 'Sample', 'Demo');
     $customFieldData = CustomFieldData::getByName('ReportTestDropDown');
     $customFieldData->serializedData = serialize($values);
     $saved = $customFieldData->save();
     $this->assertTrue($saved);
     //for fullname attribute  (derived attribute)
     $reportModelTestItem1 = new ReportModelTestItem();
     $reportModelTestItem1->firstName = 'xFirst';
     $reportModelTestItem1->lastName = 'xLast';
     $reportModelTestItem1->boolean = true;
     $reportModelTestItem1->date = '2013-02-12';
     $reportModelTestItem1->dateTime = '2013-02-12 10:15:00';
     $reportModelTestItem1->float = 10.5;
     $reportModelTestItem1->integer = 10;
     $reportModelTestItem1->phone = '7842151012';
     $reportModelTestItem1->string = 'xString';
     $reportModelTestItem1->textArea = 'xtextAreatest';
     $reportModelTestItem1->url = 'http://www.test.com';
     $reportModelTestItem1->dropDown->value = $values[1];
     $currencies = Currency::getAll();
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 100;
     $currencyValue->currency = $currencies[0];
     $this->assertEquals('USD', $currencyValue->currency->code);
     $reportModelTestItem1->currencyValue = $currencyValue;
     $reportModelTestItem1->primaryAddress->street1 = 'someString';
     $reportModelTestItem1->primaryEmail->emailAddress = "*****@*****.**";
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Multi 1';
     $reportModelTestItem1->multiDropDown->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Multi 2';
     $reportModelTestItem1->multiDropDown->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Cloud 2';
     $reportModelTestItem1->tagCloud->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Cloud 3';
     $reportModelTestItem1->tagCloud->values->add($customFieldValue);
     $reportModelTestItem1->radioDropDown->value = $values[1];
     $reportModelTestItem7 = new ReportModelTestItem7();
     $reportModelTestItem7->name = 'someName';
     $reportModelTestItem1->likeContactState = $reportModelTestItem7;
     $reportModelTestItem1->owner = Yii::app()->user->userModel;
     $saved = $reportModelTestItem1->save();
     $this->assertTrue($saved);
     $reportModelTestItem2 = new ReportModelTestItem();
     $reportModelTestItem2->firstName = 'xFirst';
     $reportModelTestItem2->lastName = 'xLast';
     $reportModelTestItem2->boolean = true;
     $reportModelTestItem2->date = '2013-02-14';
     $reportModelTestItem2->dateTime = '2013-02-14 23:15:00';
     $reportModelTestItem2->float = 200.5;
     $reportModelTestItem2->integer = 1010;
     $reportModelTestItem2->phone = '7842151012';
     $reportModelTestItem2->string = 'xString';
     $reportModelTestItem2->textArea = 'xtextAreatest';
     $reportModelTestItem2->url = 'http://www.test.com';
     $reportModelTestItem2->dropDown->value = $values[1];
     $reportModelTestItem2->currencyValue = $currencyValue;
     $reportModelTestItem2->primaryAddress->street1 = 'someString';
     $reportModelTestItem2->primaryEmail->emailAddress = "*****@*****.**";
     $reportModelTestItem2->multiDropDown->values->add($customFieldValue);
     $reportModelTestItem2->tagCloud->values->add($customFieldValue);
     $reportModelTestItem2->radioDropDown->value = $values[1];
     $reportModelTestItem2->likeContactState = $reportModelTestItem7;
     $reportModelTestItem2->owner = Yii::app()->user->userModel;
     $saved = $reportModelTestItem2->save();
     $this->assertTrue($saved);
     $report = new Report();
     $report->setType(Report::TYPE_MATRIX);
     $report->setModuleClassName('ReportsTestModule');
     $report->setFiltersStructure('');
     //for date summation
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute1->attributeIndexOrDerivedType = 'date__Maximum';
     $displayAttribute1->label = 'New Label For Date -(Max)';
     $this->assertTrue($displayAttribute1->columnAliasName == 'col0');
     $report->addDisplayAttribute($displayAttribute1);
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute2->attributeIndexOrDerivedType = 'date__Minimum';
     $this->assertTrue($displayAttribute2->columnAliasName == 'col1');
     $report->addDisplayAttribute($displayAttribute2);
     //for dateTime summation
     $displayAttribute3 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute3->attributeIndexOrDerivedType = 'dateTime__Maximum';
     $this->assertTrue($displayAttribute3->columnAliasName == 'col2');
     $report->addDisplayAttribute($displayAttribute3);
     $displayAttribute4 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute4->attributeIndexOrDerivedType = 'dateTime__Minimum';
     $this->assertTrue($displayAttribute4->columnAliasName == 'col3');
     $report->addDisplayAttribute($displayAttribute4);
     //for createdDateTime summation
     $displayAttribute5 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute5->attributeIndexOrDerivedType = 'createdDateTime__Maximum';
     $this->assertTrue($displayAttribute5->columnAliasName == 'col4');
     $report->addDisplayAttribute($displayAttribute5);
     $displayAttribute6 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute6->attributeIndexOrDerivedType = 'createdDateTime__Minimum';
     $this->assertTrue($displayAttribute6->columnAliasName == 'col5');
     $report->addDisplayAttribute($displayAttribute6);
     //for modifiedDateTime summation
     $displayAttribute7 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute7->attributeIndexOrDerivedType = 'modifiedDateTime__Maximum';
     $this->assertTrue($displayAttribute7->columnAliasName == 'col6');
     $report->addDisplayAttribute($displayAttribute7);
     $displayAttribute8 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute8->attributeIndexOrDerivedType = 'modifiedDateTime__Minimum';
     $this->assertTrue($displayAttribute8->columnAliasName == 'col7');
     $report->addDisplayAttribute($displayAttribute8);
     //for float summation
     $displayAttribute9 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute9->attributeIndexOrDerivedType = 'float__Minimum';
     $this->assertTrue($displayAttribute9->columnAliasName == 'col8');
     $report->addDisplayAttribute($displayAttribute9);
     $displayAttribute10 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute10->attributeIndexOrDerivedType = 'float__Maximum';
     $this->assertTrue($displayAttribute10->columnAliasName == 'col9');
     $report->addDisplayAttribute($displayAttribute10);
     $displayAttribute11 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute11->attributeIndexOrDerivedType = 'float__Summation';
     $this->assertTrue($displayAttribute11->columnAliasName == 'col10');
     $report->addDisplayAttribute($displayAttribute11);
     $displayAttribute12 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute12->attributeIndexOrDerivedType = 'float__Average';
     $this->assertTrue($displayAttribute12->columnAliasName == 'col11');
     $report->addDisplayAttribute($displayAttribute12);
     //for integer summation
     $displayAttribute13 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute13->attributeIndexOrDerivedType = 'integer__Minimum';
     $this->assertTrue($displayAttribute13->columnAliasName == 'col12');
     $report->addDisplayAttribute($displayAttribute13);
     $displayAttribute14 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute14->attributeIndexOrDerivedType = 'integer__Maximum';
     $this->assertTrue($displayAttribute14->columnAliasName == 'col13');
     $report->addDisplayAttribute($displayAttribute14);
     $displayAttribute15 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute15->attributeIndexOrDerivedType = 'integer__Summation';
     $this->assertTrue($displayAttribute15->columnAliasName == 'col14');
     $report->addDisplayAttribute($displayAttribute15);
     $displayAttribute16 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute16->attributeIndexOrDerivedType = 'integer__Average';
     $this->assertTrue($displayAttribute16->columnAliasName == 'col15');
     $report->addDisplayAttribute($displayAttribute16);
     //for currency summation
     $displayAttribute17 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute17->attributeIndexOrDerivedType = 'currencyValue__Minimum';
     $this->assertTrue($displayAttribute17->columnAliasName == 'col16');
     $report->addDisplayAttribute($displayAttribute17);
     $displayAttribute18 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute18->attributeIndexOrDerivedType = 'currencyValue__Maximum';
     $this->assertTrue($displayAttribute18->columnAliasName == 'col17');
     $report->addDisplayAttribute($displayAttribute18);
     $displayAttribute19 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute19->attributeIndexOrDerivedType = 'currencyValue__Summation';
     $this->assertTrue($displayAttribute19->columnAliasName == 'col18');
     $report->addDisplayAttribute($displayAttribute19);
     $displayAttribute20 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute20->attributeIndexOrDerivedType = 'currencyValue__Average';
     $this->assertTrue($displayAttribute20->columnAliasName == 'col19');
     $report->addDisplayAttribute($displayAttribute20);
     $displayAttribute21 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute21->attributeIndexOrDerivedType = 'Count';
     $this->assertTrue($displayAttribute21->columnAliasName == 'col20');
     $report->addDisplayAttribute($displayAttribute21);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'firstName';
     $report->addGroupBy($groupBy);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'lastName';
     $groupBy->axis = 'y';
     $report->addGroupBy($groupBy);
     $dataProvider = new MatrixReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareRowData = array(array(null, 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'Total'), array('Last Name', 'New Label For Date -(Max)', 'Date -(Min)', 'Date Time -(Max)', 'Date Time -(Min)', 'Created Date Time -(Max)', 'Created Date Time -(Min)', 'Modified Date Time -(Max)', 'Modified Date Time -(Min)', 'Float -(Min)', 'Float -(Max)', 'Float -(Sum)', 'Float -(Avg)', 'Integer -(Min)', 'Integer -(Max)', 'Integer -(Sum)', 'Integer -(Avg)', 'Currency Value -(Min)', 'Currency Value -(Min) Currency', 'Currency Value -(Max)', 'Currency Value -(Max) Currency', 'Currency Value -(Sum)', 'Currency Value -(Sum) Currency', 'Currency Value -(Avg)', 'Currency Value -(Avg) Currency', 'Count', 'New Label For Date -(Max)', 'Date -(Min)', 'Date Time -(Max)', 'Date Time -(Min)', 'Created Date Time -(Max)', 'Created Date Time -(Min)', 'Modified Date Time -(Max)', 'Modified Date Time -(Min)', 'Float -(Min)', 'Float -(Max)', 'Float -(Sum)', 'Float -(Avg)', 'Integer -(Min)', 'Integer -(Max)', 'Integer -(Sum)', 'Integer -(Avg)', 'Currency Value -(Min)', 'Currency Value -(Max)', 'Currency Value -(Sum)', 'Currency Value -(Avg)', 'Count'), array('xLast', '2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, '10.5', '200.5', '211', '105.5', '10', '1010', '1020', '510.0000', '100', 'Mixed Currency', '100', 'Mixed Currency', '200', 'Mixed Currency', '100', 'Mixed Currency', '2', '2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, '10.5', '200.5', '211', '105.5', '10', '1010', '1020', '510.0000', '100', '100', '200', '100', '2'), array('Total', '2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, '10.5', '200.5', '211', '105.5', '10', '1010', '1020', '510.0000', '100', null, '100', null, '200', null, '100', null, '2'));
     $this->assertEmpty($adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'boolean';
     $report->addGroupBy($groupBy);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'phone';
     $groupBy->axis = 'y';
     $report->addGroupBy($groupBy);
     $dataProvider = new MatrixReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareRowData = array(array(null, null, 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'xFirst', 'Total'), array('', '', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Total'), array('Last Name', 'Phone', 'New Label For Date -(Max)', 'Date -(Min)', 'Date Time -(Max)', 'Date Time -(Min)', 'Created Date Time -(Max)', 'Created Date Time -(Min)', 'Modified Date Time -(Max)', 'Modified Date Time -(Min)', 'Float -(Min)', 'Float -(Max)', 'Float -(Sum)', 'Float -(Avg)', 'Integer -(Min)', 'Integer -(Max)', 'Integer -(Sum)', 'Integer -(Avg)', 'Currency Value -(Min)', 'Currency Value -(Min) Currency', 'Currency Value -(Max)', 'Currency Value -(Max) Currency', 'Currency Value -(Sum)', 'Currency Value -(Sum) Currency', 'Currency Value -(Avg)', 'Currency Value -(Avg) Currency', 'Count', 'New Label For Date -(Max)', 'Date -(Min)', 'Date Time -(Max)', 'Date Time -(Min)', 'Created Date Time -(Max)', 'Created Date Time -(Min)', 'Modified Date Time -(Max)', 'Modified Date Time -(Min)', 'Float -(Min)', 'Float -(Max)', 'Float -(Sum)', 'Float -(Avg)', 'Integer -(Min)', 'Integer -(Max)', 'Integer -(Sum)', 'Integer -(Avg)', 'Currency Value -(Min)', 'Currency Value -(Max)', 'Currency Value -(Sum)', 'Currency Value -(Avg)', 'Count'), array('xLast', '7842151012', '2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, '10.5', '200.5', '211', '105.5', '10', '1010', '1020', '510.0000', '100', 'Mixed Currency', '100', 'Mixed Currency', '200', 'Mixed Currency', '100', 'Mixed Currency', '2', '2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, '10.5', '200.5', '211', '105.5', '10', '1010', '1020', '510.0000', '100', '100', '200', '100', '2'), array('Total', 'Total', '2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, '10.5', '200.5', '211', '105.5', '10', '1010', '1020', '510.0000', '100', null, '100', null, '200', null, '100', null, '2'));
     $this->assertEmpty($adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
     //Test currency type is resolved
     $report = new Report();
     $report->setType(Report::TYPE_MATRIX);
     $report->setModuleClassName('ReportsTestModule');
     $report->setFiltersStructure('');
     $report->setCurrencyConversionType(Report::CURRENCY_CONVERSION_TYPE_BASE);
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $displayAttribute->attributeIndexOrDerivedType = 'currencyValue__Summation';
     $report->addDisplayAttribute($displayAttribute);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'firstName';
     $report->addGroupBy($groupBy);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'lastName';
     $groupBy->axis = 'y';
     $report->addGroupBy($groupBy);
     $dataProvider = new MatrixReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareRowData = array(array(null, 'xFirst', 'xFirst', 'Total'), array('Last Name', 'Currency Value -(Sum)', 'Currency Value -(Sum) Currency', 'Currency Value -(Sum)', 'Currency Value -(Sum) Currency'), array('xLast', 200, 'USD', 200, 'USD'), array('Total', 200, null));
     $this->assertEquals($compareRowData, $adapter->getData());
 }