/** * @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(); }
/** * @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()); }