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(); $report->setType(Report::TYPE_ROWS_AND_COLUMNS); $report->setModuleClassName('ReportsTest2Module'); $report->setFiltersStructure(''); //for fullname attribute $reportModelTestItem = new ReportModelTestItem(); $reportModelTestItem->firstName = 'xFirst'; $reportModelTestItem->lastName = 'xLast'; $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute1->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute1->attributeIndexOrDerivedType = 'hasMany2___FullName'; $displayAttribute1->label = 'Name'; $report->addDisplayAttribute($displayAttribute1); //for boolean attribute $reportModelTestItem->boolean = true; $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute2->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute2->attributeIndexOrDerivedType = 'hasMany2___boolean'; $report->addDisplayAttribute($displayAttribute2); //for date attribute $reportModelTestItem->date = '2013-02-12'; $displayAttribute3 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute3->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute3->attributeIndexOrDerivedType = 'hasMany2___date'; $report->addDisplayAttribute($displayAttribute3); //for datetime attribute $reportModelTestItem->dateTime = '2013-02-12 10:15:00'; $displayAttribute4 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute4->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute4->attributeIndexOrDerivedType = 'hasMany2___dateTime'; $report->addDisplayAttribute($displayAttribute4); //for float attribute $reportModelTestItem->float = 10.5; $displayAttribute5 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute5->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute5->attributeIndexOrDerivedType = 'hasMany2___float'; $report->addDisplayAttribute($displayAttribute5); //for integer attribute $reportModelTestItem->integer = 10; $displayAttribute6 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute6->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute6->attributeIndexOrDerivedType = 'hasMany2___integer'; $report->addDisplayAttribute($displayAttribute6); //for phone attribute $reportModelTestItem->phone = '7842151012'; $displayAttribute7 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute7->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute7->attributeIndexOrDerivedType = 'hasMany2___phone'; $report->addDisplayAttribute($displayAttribute7); //for string attribute $reportModelTestItem->string = 'xString'; $displayAttribute8 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute8->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute8->attributeIndexOrDerivedType = 'hasMany2___string'; $report->addDisplayAttribute($displayAttribute8); //for textArea attribute $reportModelTestItem->textArea = 'xtextAreatest'; $displayAttribute9 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute9->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute9->attributeIndexOrDerivedType = 'hasMany2___textArea'; $report->addDisplayAttribute($displayAttribute9); //for url attribute $reportModelTestItem->url = 'http://www.test.com'; $displayAttribute10 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute10->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute10->attributeIndexOrDerivedType = 'hasMany2___url'; $report->addDisplayAttribute($displayAttribute10); //for dropdown attribute $reportModelTestItem->dropDown->value = $values[1]; $displayAttribute11 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute11->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute11->attributeIndexOrDerivedType = 'hasMany2___dropDown'; $report->addDisplayAttribute($displayAttribute11); //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('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute12->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute12->attributeIndexOrDerivedType = 'hasMany2___currencyValue'; $report->addDisplayAttribute($displayAttribute12); //for primaryAddress attribute $reportModelTestItem->primaryAddress->street1 = 'someString'; $displayAttribute13 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute13->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute13->attributeIndexOrDerivedType = 'hasMany2___primaryAddress___street1'; $report->addDisplayAttribute($displayAttribute13); //for primaryEmail attribute $reportModelTestItem->primaryEmail->emailAddress = "*****@*****.**"; $displayAttribute14 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute14->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute14->attributeIndexOrDerivedType = 'hasMany2___primaryEmail___emailAddress'; $report->addDisplayAttribute($displayAttribute14); //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('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute15->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute15->attributeIndexOrDerivedType = 'hasMany2___multiDropDown'; $report->addDisplayAttribute($displayAttribute15); //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('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute16->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute16->attributeIndexOrDerivedType = 'hasMany2___tagCloud'; $report->addDisplayAttribute($displayAttribute16); //for radioDropDown attribute $reportModelTestItem->radioDropDown->value = $values[1]; $displayAttribute17 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute17->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute17->attributeIndexOrDerivedType = 'hasMany2___radioDropDown'; $report->addDisplayAttribute($displayAttribute17); //for likeContactState $reportModelTestItem7 = new ReportModelTestItem7(); $reportModelTestItem7->name = 'someName'; $reportModelTestItem->likeContactState = $reportModelTestItem7; $displayAttribute18 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute18->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute18->attributeIndexOrDerivedType = 'hasMany2___likeContactState'; $report->addDisplayAttribute($displayAttribute18); //for dynamic user attribute $reportModelTestItem->owner = Yii::app()->user->userModel; $displayAttribute19 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute19->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute19->attributeIndexOrDerivedType = 'hasMany2___owner__User'; $report->addDisplayAttribute($displayAttribute19); //for dynamic user fullName attribute $reportModelTestItem->owner = Yii::app()->user->userModel; $displayAttribute20 = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute20->setModelAliasUsingTableAliasName('relatedModel'); $displayAttribute20->attributeIndexOrDerivedType = 'hasMany2___owner___FullName'; $report->addDisplayAttribute($displayAttribute20); $reportModelTestItem2 = new ReportModelTestItem2(); $reportModelTestItem2->owner = Yii::app()->user->userModel; $reportModelTestItem2->hasMany2->add($reportModelTestItem); $this->assertTrue($reportModelTestItem2->save()); $dataProvider = new RowsAndColumnsReportDataProvider($report); $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider); $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', 'Reports Tests >> User >> Full Name'); $compareRowData = array(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', 'Clark Kent', 'Clark Kent')); // Not Coding Standard $this->assertEquals($compareHeaderData, $adapter->getHeaderData()); $this->assertEquals($compareRowData, $adapter->getData()); //for MANY-MANY Relationship $report = new Report(); $report->setType(Report::TYPE_ROWS_AND_COLUMNS); $report->setModuleClassName('ReportsTestModule'); $report->setFiltersStructure(''); //for name attribute $reportModelTestItem3 = new ReportModelTestItem3(); $reportModelTestItem3->name = 'xFirst'; $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute1->setModelAliasUsingTableAliasName('relatedModel1'); $displayAttribute1->attributeIndexOrDerivedType = 'hasOne___hasMany3___name'; $report->addDisplayAttribute($displayAttribute1); //for somethingOn3 attribute $reportModelTestItem3->somethingOn3 = 'somethingOn3'; $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute2->setModelAliasUsingTableAliasName('relatedModel1'); $displayAttribute2->attributeIndexOrDerivedType = 'hasOne___hasMany3___somethingOn3'; $report->addDisplayAttribute($displayAttribute2); $reportModelTestItem3->owner = Yii::app()->user->userModel; $reportModelTestItem3->hasMany2->add($reportModelTestItem2); $this->assertTrue($reportModelTestItem3->save()); $dataProvider = new RowsAndColumnsReportDataProvider($report); $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider); $compareHeaderData = array('ReportModelTestItem2 >> ReportModelTestItem3s >> Name', 'ReportModelTestItem2 >> ReportModelTestItem3s >> Something On 3'); $compareRowData = array(array('xFirst', 'somethingOn3')); $this->assertEquals($compareHeaderData, $adapter->getHeaderData()); $this->assertEquals($compareRowData, $adapter->getData()); $reportModelTestItem->delete(); $reportModelTestItem2->delete(); $reportModelTestItem3->delete(); }
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 testGetLeadingHeadersDataFromMatrixReportDataProviderWithALinkableAttribute() { $reportModelTestItem2 = new ReportModelTestItem2(); $reportModelTestItem2->name = 'report name'; $reportModelTestItem2->phone = '123456789'; $this->assertTrue($reportModelTestItem2->save()); $reportModelTestItem2 = new ReportModelTestItem2(); $reportModelTestItem2->name = 'report name'; $reportModelTestItem2->phone = '987654321'; $this->assertTrue($reportModelTestItem2->save()); $report = new Report(); $report->setType(Report::TYPE_MATRIX); $report->setModuleClassName('ReportsTest2Module'); $report->setFiltersStructure(''); $displayAttribute = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX); $displayAttribute->attributeIndexOrDerivedType = 'Count'; $report->addDisplayAttribute($displayAttribute); $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX); $groupBy->attributeIndexOrDerivedType = 'phone'; $report->addGroupBy($groupBy); $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX); $groupBy->attributeIndexOrDerivedType = 'name'; $groupBy->axis = 'y'; $report->addGroupBy($groupBy); $dataProvider = new MatrixReportDataProvider($report); $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider); $compareRowData = array(array(null, '123456789', '987654321', 'Total'), array('Name', 'Count', 'Count', 'Count'), array('report name', 1, 1, 2), array('Total', 1, 1)); $this->assertEmpty($adapter->getHeaderData()); $this->assertEquals($compareRowData, $adapter->getData()); $report = new Report(); $report->setType(Report::TYPE_MATRIX); $report->setModuleClassName('ReportsTest2Module'); $report->setFiltersStructure(''); $displayAttribute = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX); $displayAttribute->attributeIndexOrDerivedType = 'Count'; $report->addDisplayAttribute($displayAttribute); $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX); $groupBy->attributeIndexOrDerivedType = 'name'; $report->addGroupBy($groupBy); $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', 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, 'report name', 'Total'), array('Phone', 'Count', 'Count'), array('123456789', 1, 1), array('987654321', 1, 1), array('Total', 2)); $this->assertEmpty($adapter->getHeaderData()); $this->assertEquals($compareRowData, $adapter->getData()); }