public function setup()
 {
     parent::setUp();
     Yii::app()->user->userModel = User::getByUsername('super');
     DisplayAttributeForReportForm::resetCount();
     DrillDownDisplayAttributeForReportForm::resetCount();
 }
 public function setup()
 {
     parent::setUp();
     Yii::app()->user->userModel = User::getByUsername('super');
     Yii::app()->user->userModel->timeZone = 'America/Chicago';
     DisplayAttributeForReportForm::resetCount();
 }
 /**
  * @depends testMakeStringForMultipleLinks
  */
 public function testMakeStringForLinkOrLinks()
 {
     $accounts = Account::getByName('account1');
     $account1 = $accounts[0];
     $account2 = $accounts[1];
     $displayAttribute = new DisplayAttributeForReportForm('AccountsModule', 'Account', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute->setModelAliasUsingTableAliasName('abc');
     $displayAttribute->attributeIndexOrDerivedType = 'name';
     $reportResultsRowData = new ReportResultsRowData(array($displayAttribute), 4);
     $reportResultsRowData->addModelAndAlias($account2, 'abc');
     $result = ReportResultsGridUtil::makeStringForLinkOrLinks('attribute0', $reportResultsRowData, true, 'account1');
     $this->assertContains('<span class="tooltip">2</span>', $result);
     $result = ReportResultsGridUtil::makeStringForLinkOrLinks('attribute0', $reportResultsRowData, false, 'account1');
     $this->assertContains('a target="new"', $result);
     $this->assertContains('id=' . $account2->id, $result);
     $this->assertNotContains('tooltip', $result);
 }
 protected function resolveParamsForCurrencyTypes(DisplayAttributeForReportForm $displayAttribute, &$params)
 {
     assert('is_array($params)');
     if ($displayAttribute->isATypeOfCurrencyValue()) {
         $params['currencyValueConversionType'] = $this->report->getCurrencyConversionType();
         $params['spotConversionCurrencyCode'] = $this->report->getSpotConversionCurrencyCode();
         $params['fromBaseToSpotRate'] = $this->report->getFromBaseToSpotRate();
     }
 }
 public function testExportRelationAttributes()
 {
     $report = new Report();
     $report->setType(Report::TYPE_ROWS_AND_COLUMNS);
     $report->setModuleClassName('EmailMessagesModule');
     $report->setFiltersStructure('');
     $emailMessage = new EmailMessage();
     $emailMessage->owner = Yii::app()->user->userModel;
     $emailMessage->subject = 'A test email';
     $emailContent = new EmailMessageContent();
     $emailContent->textContent = 'A test text message from Zurmo.';
     $emailContent->htmlContent = 'A test text message from Zurmo.';
     $emailMessage->content = $emailContent;
     $sender = new EmailMessageSender();
     $sender->fromAddress = '*****@*****.**';
     $sender->fromName = 'super';
     $sender->personsOrAccounts->add(Yii::app()->user->userModel);
     $emailMessage->sender = $sender;
     $recipient = new EmailMessageRecipient();
     $recipient->toAddress = '*****@*****.**';
     $recipient->toName = 'Test Recipient';
     $recipient->type = EmailMessageRecipient::TYPE_TO;
     $emailMessage->recipients->add($recipient);
     $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME);
     $emailMessage->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_SENT);
     $this->assertTrue($emailMessage->save());
     $displayAttribute1 = new DisplayAttributeForReportForm('EmailMessagesModule', 'EmailMessage', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute1->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute1->attributeIndexOrDerivedType = 'sender___User__personsOrAccounts__Inferred___firstName';
     $report->addDisplayAttribute($displayAttribute1);
     $displayAttribute2 = new DisplayAttributeForReportForm('EmailMessagesModule', 'EmailMessage', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute2->attributeIndexOrDerivedType = 'sender___Contact__personsOrAccounts__Inferred___firstName';
     $report->addDisplayAttribute($displayAttribute2);
     $dataProvider = new RowsAndColumnsReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareHeaderData = array('Sender >> Users >> First Name', 'Sender >> Contacts >> First Name');
     $compareRowData = array(array('Clark', ''));
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
 }
 public function setUp()
 {
     parent::setUp();
     Yii::app()->user->userModel = User::getByUsername('super');
     DisplayAttributeForReportForm::resetCount();
     $freeze = false;
     if (RedBeanDatabase::isFrozen()) {
         RedBeanDatabase::unfreeze();
         $freeze = true;
     }
     $this->freeze = $freeze;
 }
 /**
  * @return string
  */
 public static function getTreeType()
 {
     return DisplayAttributeForReportForm::getType();
 }
 /**
  * @depends testExportByModelIds
  */
 public function testExportReportWithMultiplePagesOfData()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $numberOfUserNotifications = Notification::getCountByTypeAndUser('ExportProcessCompleted', Yii::app()->user->userModel);
     $report = new Report();
     $report->setType(Report::TYPE_ROWS_AND_COLUMNS);
     $report->setModuleClassName('AccountsModule');
     $report->setFiltersStructure('');
     $displayAttribute = new DisplayAttributeForReportForm('AccountsModule', 'Account', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute->setModelAliasUsingTableAliasName('model1');
     $displayAttribute->attributeIndexOrDerivedType = 'name';
     $report->addDisplayAttribute($displayAttribute);
     $dataProvider = new RowsAndColumnsReportDataProvider($report);
     $exportItem = new ExportItem();
     $exportItem->isCompleted = 0;
     $exportItem->exportFileType = 'csv';
     $exportItem->exportFileName = 'rowAndColumnsTest2';
     $exportItem->modelClassName = 'SavedReport';
     $exportItem->serializedData = ExportUtil::getSerializedDataForExport($dataProvider);
     $this->assertTrue($exportItem->save());
     $id = $exportItem->id;
     $exportItem->forget();
     unset($exportItem);
     //Delete queued jobs from test exportItems created above
     Yii::app()->jobQueue->deleteAll();
     ExportModule::$asynchronousPageSize = 2;
     $job = new ExportJob();
     $this->assertEquals(0, count(Yii::app()->jobQueue->getAll()));
     $this->assertTrue($job->run());
     $this->assertEquals(0, count(Yii::app()->jobQueue->getAll()));
     $exportItem = ExportItem::getById($id);
     $fileModel = $exportItem->exportFileModel;
     $this->assertEquals(1, $exportItem->isCompleted);
     $this->assertEquals(0, $exportItem->processOffset);
     $this->assertEquals('csv', $exportItem->exportFileType);
     $this->assertEquals('rowAndColumnsTest2', $exportItem->exportFileName);
     $this->assertTrue($fileModel instanceof ExportFileModel);
     $accounts = Account::getAll();
     $headerData = array('Name');
     $data = array();
     foreach ($accounts as $account) {
         $data[] = array($account->name);
     }
     $output = ExportItemToCsvFileUtil::export($data, $headerData, 'rowAndColumnsTest2.csv', false);
     $this->assertEquals($output, $fileModel->fileContent->content);
     // Check if user got notification message, and if its type is ExportProcessCompleted
     $this->assertEquals($numberOfUserNotifications + 1, Notification::getCountByTypeAndUser('ExportProcessCompleted', Yii::app()->user->userModel));
     //Matrix report should not paginate
     $report = new Report();
     $report->setType(Report::TYPE_MATRIX);
     $report->setModuleClassName('AccountsModule');
     $report->setFiltersStructure('');
     $displayAttribute = new DisplayAttributeForReportForm('AccountsModule', 'Account', Report::TYPE_MATRIX);
     $displayAttribute->setModelAliasUsingTableAliasName('model1');
     $displayAttribute->attributeIndexOrDerivedType = 'Count';
     $report->addDisplayAttribute($displayAttribute);
     $groupBy = new GroupByForReportForm('AccountsModule', 'Account', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'name';
     $groupBy->axis = 'y';
     $report->addGroupBy($groupBy);
     $groupBy = new GroupByForReportForm('AccountsModule', 'Account', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'officePhone';
     $report->addGroupBy($groupBy);
     $dataProvider = new MatrixReportDataProvider($report);
     $exportItem = new ExportItem();
     $exportItem->isCompleted = 0;
     $exportItem->exportFileType = 'csv';
     $exportItem->exportFileName = 'matrixTest1';
     $exportItem->modelClassName = 'SavedReport';
     $exportItem->serializedData = ExportUtil::getSerializedDataForExport($dataProvider);
     $this->assertTrue($exportItem->save());
     $id = $exportItem->id;
     $exportItem->forget();
     unset($exportItem);
     //Delete queued jobs from test exportItems created above
     Yii::app()->jobQueue->deleteAll();
     ExportModule::$asynchronousPageSize = 2;
     $job = new ExportJob();
     $this->assertTrue($job->run());
     $exportItem = ExportItem::getById($id);
     $fileModel = $exportItem->exportFileModel;
     $this->assertEquals(1, $exportItem->isCompleted);
     $this->assertEquals(0, $exportItem->processOffset);
     $this->assertEquals('csv', $exportItem->exportFileType);
     $this->assertEquals('matrixTest1', $exportItem->exportFileName);
     $this->assertTrue($fileModel instanceof ExportFileModel);
     $fileContent = $fileModel->fileContent->content;
     $this->assertContains('Test Account', $fileContent);
     $this->assertContains('Test Account 2', $fileContent);
     $this->assertContains('Test Account 3', $fileContent);
     $this->assertContains('Test Account 4', $fileContent);
     // Check if user got notification message, and if its type is ExportProcessCompleted
     $this->assertEquals($numberOfUserNotifications + 2, Notification::getCountByTypeAndUser('ExportProcessCompleted', Yii::app()->user->userModel));
 }
 /**
  * There was a bug with showing address->state on a contact rows and columns report. it was showing the
  * contact->state instead. this test passes after this bug was fixed
  */
 public function testDisplayingAOwnedModelAttributeThatIsAlsoDefinedAsAnAttributeOnTheOwningModel()
 {
     $contactStates = ContactState::getByName('Qualified');
     $contact = new Contact();
     $contact->owner = Yii::app()->user->userModel;
     $contact->title->value = 'Mr.';
     $contact->firstName = 'Super';
     $contact->lastName = 'Man';
     $contact->jobTitle = 'Superhero';
     $contact->description = 'Some Description';
     $contact->department = 'Red Tape';
     $contact->officePhone = '1234567890';
     $contact->mobilePhone = '0987654321';
     $contact->officeFax = '1222222222';
     $contact->state = $contactStates[0];
     $contact->primaryAddress->state = 'IL';
     $this->assertTrue($contact->save());
     $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute->setModelAliasUsingTableAliasName('abc');
     $displayAttribute->attributeIndexOrDerivedType = 'primaryAddress___state';
     $this->assertEquals('col0', $displayAttribute->columnAliasName);
     $reportResultsRowData = new ReportResultsRowData(array($displayAttribute), 4);
     $reportResultsRowData->addModelAndAlias($contact, 'abc');
     $model = $reportResultsRowData->getModel('attribute0');
     $this->assertEquals('IL', $model->primaryAddress->state);
     $this->assertEquals('IL', $reportResultsRowData->attribute0);
 }
 /**
  * Test for viaSelect and viaModel together
  * @depends testExportSummationAttributes
  */
 public function testViaSelectAndViaModelTogether()
 {
     $reportModelTestItem = new ReportModelTestItem();
     $report = new Report();
     //viaSelect attribute
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute1->attributeIndexOrDerivedType = 'integer__Minimum';
     $displayAttribute1->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute1->columnAliasName == 'col0');
     //viaModel attribute
     $reportModelTestItem->boolean = true;
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->setModelAliasUsingTableAliasName('model1');
     $displayAttribute2->attributeIndexOrDerivedType = 'boolean';
     $reportResultsRowData = new ReportResultsRowData(array($displayAttribute1, $displayAttribute2), 4);
     $reportResultsRowData->addSelectedColumnNameAndValue('col0', 9000);
     $reportResultsRowData->addModelAndAlias($reportModelTestItem, 'model1');
     $adapter = new ReportToExportAdapter($reportResultsRowData, $report);
     $compareHeaderData = array('Integer -(Min)', 'Boolean');
     $compareRowData = array(9000, true);
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
 }
 public function testDynamicallyDerivedAttributeOnSelf()
 {
     $q = DatabaseCompatibilityUtil::getQuote();
     //2 __User attributes on the same model
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('ReportModelTestItem9');
     $selectQueryAdapter = new RedBeanModelSelectQueryAdapter();
     $builder = new DisplayAttributesReportQueryBuilder($joinTablesAdapter, $selectQueryAdapter);
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem9', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute->attributeIndexOrDerivedType = 'createdByUser__User';
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem9', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->attributeIndexOrDerivedType = 'modifiedByUser__User';
     $content = $builder->makeQueryContent(array($displayAttribute, $displayAttribute2));
     $compareContent = "select {$q}reportmodeltestitem9{$q}.{$q}id{$q} reportmodeltestitem9id ";
     $this->assertEquals($compareContent, $content);
     $this->assertEquals(0, $joinTablesAdapter->getFromTableJoinCount());
     $this->assertEquals(0, $joinTablesAdapter->getLeftTableJoinCount());
     $idTableAliasesAndModelClassNames = $selectQueryAdapter->getIdTableAliasesAndModelClassNames();
     $this->assertCount(1, $idTableAliasesAndModelClassNames);
     $this->assertEquals('ReportModelTestItem9', $idTableAliasesAndModelClassNames['reportmodeltestitem9']);
     //2 __User attributes on the same model, one is owned, so not originating both from Item
     DisplayAttributeForReportForm::resetCount();
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('ReportModelTestItem9');
     $selectQueryAdapter = new RedBeanModelSelectQueryAdapter();
     $builder = new DisplayAttributesReportQueryBuilder($joinTablesAdapter, $selectQueryAdapter);
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem9', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute->attributeIndexOrDerivedType = 'createdByUser__User';
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem9', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->attributeIndexOrDerivedType = 'owner__User';
     $content = $builder->makeQueryContent(array($displayAttribute, $displayAttribute2));
     $compareContent = "select {$q}reportmodeltestitem9{$q}.{$q}id{$q} reportmodeltestitem9id ";
     $this->assertEquals($compareContent, $content);
     $this->assertEquals(0, $joinTablesAdapter->getFromTableJoinCount());
     $this->assertEquals(0, $joinTablesAdapter->getLeftTableJoinCount());
     $idTableAliasesAndModelClassNames = $selectQueryAdapter->getIdTableAliasesAndModelClassNames();
     $this->assertCount(1, $idTableAliasesAndModelClassNames);
     $this->assertEquals('ReportModelTestItem9', $idTableAliasesAndModelClassNames['reportmodeltestitem9']);
     $idTableAliasesAndModelClassNames = $selectQueryAdapter->getIdTableAliasesAndModelClassNames();
     $this->assertCount(1, $idTableAliasesAndModelClassNames);
     $this->assertEquals('ReportModelTestItem9', $idTableAliasesAndModelClassNames['reportmodeltestitem9']);
 }
 /**
  * @param DisplayAttributeForReportForm $displayAttribute
  * @param mixed $value
  * @return mixed
  * @throws NotSupportedException if the currencyConversionType is invalid or null, when the displayAttribute
  * is a currency type
  */
 protected function formatValue(DisplayAttributeForReportForm $displayAttribute, $value)
 {
     if ($displayAttribute->isATypeOfCurrencyValue()) {
         if ($this->report->getCurrencyConversionType() == Report::CURRENCY_CONVERSION_TYPE_ACTUAL) {
             return Yii::app()->numberFormatter->formatDecimal((double) $value);
         } elseif ($this->report->getCurrencyConversionType() == Report::CURRENCY_CONVERSION_TYPE_BASE) {
             return Yii::app()->numberFormatter->formatCurrency((double) $value, Yii::app()->currencyHelper->getBaseCode());
         } elseif ($this->report->getCurrencyConversionType() == Report::CURRENCY_CONVERSION_TYPE_SPOT) {
             return Yii::app()->numberFormatter->formatCurrency((double) $value * $this->report->getFromBaseToSpotRate(), $this->report->getSpotConversionCurrencyCode());
         } else {
             throw new NotSupportedException();
         }
     } elseif ($displayAttribute->getDisplayElementType() == 'Decimal') {
         return Yii::app()->numberFormatter->formatDecimal((double) $value);
     } elseif ($displayAttribute->getDisplayElementType() == 'Integer') {
         return Yii::app()->numberFormatter->formatDecimal((int) $value);
     } elseif ($displayAttribute->getDisplayElementType() == 'Date') {
         return DateTimeUtil::resolveValueForDateLocaleFormattedDisplay($value);
     } elseif ($displayAttribute->getDisplayElementType() == 'DateTime') {
         return DateTimeUtil::convertDbFormattedDateTimeToLocaleFormattedDisplay($value);
     } else {
         return $value;
     }
 }
 public function testResolveValueOnBaseModelAndRelatedModel()
 {
     $reportModelTestItem11 = new ReportModelTestItem11();
     $reportModelTestItem11->integer = 5;
     $currencies = Currency::getAll();
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 100;
     $currencyValue->currency = $currencies[0];
     $reportModelTestItem11->amount = $currencyValue;
     $reportModelTestItem11b = new ReportModelTestItem11();
     $reportModelTestItem11b->integer = 7;
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 200;
     $currencyValue->currency = $currencies[0];
     $reportModelTestItem11b->amount = $currencyValue;
     $reportModelTestItem10 = new ReportModelTestItem10();
     $reportModelTestItem10->integer = 12;
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 400;
     $currencyValue->currency = $currencies[0];
     $reportModelTestItem10->currencyValue = $currencyValue;
     $reportModelTestItem10->reportModelTestItem11->add($reportModelTestItem11);
     $reportModelTestItem10->reportModelTestItem11->add($reportModelTestItem11b);
     $saved = $reportModelTestItem10->save();
     $this->assertTrue($saved);
     $displayAttributeX = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem10', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttributeX->setModelAliasUsingTableAliasName('abc');
     $displayAttributeX->attributeIndexOrDerivedType = 'reportModelTestItem11___calculated2';
     $this->assertEquals('col0', $displayAttributeX->columnAliasName);
     $displayAttributeY = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem10', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttributeY->setModelAliasUsingTableAliasName('def');
     $displayAttributeY->attributeIndexOrDerivedType = 'calculated';
     $this->assertEquals('col1', $displayAttributeY->columnAliasName);
     $reportResultsRowData = new ReportResultsRowData(array($displayAttributeX, $displayAttributeY), 4);
     $reportResultsRowData->addModelAndAlias($reportModelTestItem11b, 'abc');
     $reportResultsRowData->addModelAndAlias($reportModelTestItem10, 'def');
     //Get value for calculated which is on base model
     $value = CalculatedNumberForReportListViewColumnAdapter::resolveValue('attribute1', $reportResultsRowData);
     $this->assertEquals('$412.00', $value);
     //Get value for calculated2 which is on a relateds model
     $value = CalculatedNumberForReportListViewColumnAdapter::resolveValue('attribute0', $reportResultsRowData);
     $this->assertEquals('$207.00', $value);
 }
 /**
  * @param DisplayAttributeForReportForm $displayAttribute
  * @param RedBeanModel $model
  * @return mixed $value
  */
 protected function resolveRawValueByModel(DisplayAttributeForReportForm $displayAttribute, RedBeanModel $model)
 {
     $type = $displayAttribute->getDisplayElementType();
     $attribute = $displayAttribute->getResolvedAttribute();
     if ($type == 'CurrencyValue') {
         return $model->{$attribute}->value;
     } elseif ($type == 'User') {
         $realAttributeName = $displayAttribute->getResolvedAttributeRealAttributeName();
         return $model->{$realAttributeName}->id;
     } elseif ($type == 'DropDown') {
         return $model->{$attribute}->value;
     } elseif (null != ($rawValueRelatedAttribute = $displayAttribute->getRawValueRelatedAttribute())) {
         return $model->{$attribute}->{$rawValueRelatedAttribute};
     } else {
         return $this->resolveModelAttributeValueForPenultimateRelation($model, $attribute, $displayAttribute);
     }
 }
 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);
 }
 /**
  * @param array $data
  * @param Report $report
  */
 protected static function resolveDisplayAttributes($data, Report $report)
 {
     $report->removeAllDisplayAttributes();
     DisplayAttributeForReportForm::resetCount();
     $moduleClassName = $report->getModuleClassName();
     if (count($displayAttributesData = ArrayUtil::getArrayValue($data, ComponentForReportForm::TYPE_DISPLAY_ATTRIBUTES)) > 0) {
         foreach ($displayAttributesData as $key => $displayAttributeData) {
             $displayAttribute = new DisplayAttributeForReportForm($moduleClassName, $moduleClassName::getPrimaryModelName(), $report->getType(), $key);
             $displayAttribute->setAttributes($displayAttributeData);
             $report->addDisplayAttribute($displayAttribute);
         }
     } else {
         $report->removeAllDisplayAttributes();
     }
 }
 public function testGetDisplayLabel()
 {
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute->attributeIndexOrDerivedType = 'string';
     $this->assertEquals('String', $displayAttribute->getDisplayLabel());
     $displayAttribute->attributeIndexOrDerivedType = 'hasOne___name';
     $this->assertEquals('ReportModelTestItem2 >> Name', $displayAttribute->getDisplayLabel());
     $displayAttribute->attributeIndexOrDerivedType = 'hasMany___name';
     $this->assertEquals('ReportModelTestItem3s >> Name', $displayAttribute->getDisplayLabel());
     $displayAttribute->attributeIndexOrDerivedType = 'primaryAddress___street1';
     $this->assertEquals('Primary Address >> Street 1', $displayAttribute->getDisplayLabel());
 }
 /**
  * @param DisplayAttributeForReportForm $displayAttribute
  * @return array
  */
 protected function resolveParamsForColumnElement(DisplayAttributeForReportForm $displayAttribute)
 {
     $params = array();
     if ($displayAttribute->isALinkableAttribute() == 'name') {
         $params['isLink'] = true;
     } elseif ($displayAttribute->isATypeOfCurrencyValue()) {
         $params['currencyValueConversionType'] = $this->dataProvider->getReport()->getCurrencyConversionType();
         $params['spotConversionCurrencyCode'] = $this->dataProvider->getReport()->getSpotConversionCurrencyCode();
         $params['fromBaseToSpotRate'] = $this->dataProvider->getReport()->getFromBaseToSpotRate();
     }
     return $params;
 }
 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();
 }
 public function testValidateDisplayAttributes()
 {
     $rowsAndColumnsReportWizardForm = new RowsAndColumnsReportWizardForm();
     $reportModelTestItem = new ReportModelTestItem();
     $reportModelTestItem->date = '2013-02-12';
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute->setModelAliasUsingTableAliasName('model1');
     $displayAttribute->attributeIndexOrDerivedType = 'date';
     $rowsAndColumnsReportWizardForm->displayAttributes = array($displayAttribute);
     $rowsAndColumnsReportWizardForm->validateDisplayAttributes();
     $this->assertFalse($rowsAndColumnsReportWizardForm->hasErrors());
 }
 public function testGetAttributeLabel()
 {
     $reportModelTestItemX = new ReportModelTestItem();
     $reportModelTestItemX->string = 'someString';
     $displayAttributeX = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttributeX->setModelAliasUsingTableAliasName('abc');
     $displayAttributeX->attributeIndexOrDerivedType = 'string';
     $displayAttributeY = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttributeY->attributeIndexOrDerivedType = 'integer__Maximum';
     $reportResultsRowData = new ReportResultsRowData(array($displayAttributeX, $displayAttributeY), 4);
     $reportResultsRowData->addModelAndAlias($reportModelTestItemX, 'abc');
     $reportResultsRowData->addSelectedColumnNameAndValue('col1', 55);
     //Test a viaModel attribute
     $this->assertEquals('String', $reportResultsRowData->getAttributeLabel('attribute0'));
     //Test a viaSelect attriubte
     $this->assertEquals('Integer -(Max)', $reportResultsRowData->getAttributeLabel('col1'));
 }