public function testResolveFiltersForVariableStatesWithOneDisplayAttributeAndOneFilterForANonSuperUserWhoCanSeeOneState() { Yii::app()->user->userModel = User::getByUsername('sally'); $report = new Report(); $report->setType(Report::TYPE_ROWS_AND_COLUMNS); $report->setModuleClassName('AccountsModule'); $displayAttribute = new DisplayAttributeForReportForm('AccountsModule', 'Account', Report::TYPE_ROWS_AND_COLUMNS); $displayAttribute->attributeIndexOrDerivedType = 'contacts___officePhone'; $report->addDisplayAttribute($displayAttribute); $reportDataProvider = new RowsAndColumnsReportDataProvider($report); $filtersStructure = '1'; $filter = new FilterForReportForm('AccountsModule', 'Account', Report::TYPE_ROWS_AND_COLUMNS); $filter->attributeIndexOrDerivedType = 'opportunities___contacts___website'; $filter->operator = OperatorRules::TYPE_EQUALS; $filter->value = 'Zurmo'; $filters = array($filter); $filters = $reportDataProvider->resolveFiltersForVariableStates($filters, $filtersStructure); $stateAdapter = new ContactsStateMetadataAdapter(array('clauses' => array(), 'structure' => '')); $this->assertTrue(count($stateAdapter->getStateIds()) > 0); $this->assertEquals(3, count($filters)); $this->assertEquals('contacts___state', $filters[1]->attributeIndexOrDerivedType); $this->assertEquals(OperatorRules::TYPE_ONE_OF, $filters[1]->operator); $this->assertEquals($stateAdapter->getStateIds(), $filters[1]->value); $this->assertEquals('opportunities___contacts___state', $filters[2]->attributeIndexOrDerivedType); $this->assertEquals(OperatorRules::TYPE_ONE_OF, $filters[2]->operator); $this->assertEquals($stateAdapter->getStateIds(), $filters[2]->value); $this->assertEquals('1 and (2 and 3)', $filtersStructure); }
public function testInferredRelationModelAttributeWithYetAnotherRelation() { Yii::app()->user->userModel = User::getByUsername('sally'); $stateAdapter = new ContactsStateMetadataAdapter(array('clauses' => array(), 'structure' => '')); $this->assertTrue(count($stateAdapter->getStateIds()) > 0); $filter = new FilterForReportForm('MeetingsModule', 'Meeting', Report::TYPE_ROWS_AND_COLUMNS); $filter->attributeIndexOrDerivedType = 'Account__activityItems__Inferred___contacts___officePhone'; $indexes = array(); VariableStatesForReportUtil::resolveAttributeIndexesByComponents($indexes, array($filter)); $this->assertEquals(array('Account__activityItems__Inferred___contacts___' => array('state', $stateAdapter->getStateIds())), $indexes); //Test with the super user. There shouldn't be any variable state data Yii::app()->user->userModel = User::getByUsername('super'); $filter = new FilterForReportForm('MeetingsModule', 'Meeting', Report::TYPE_ROWS_AND_COLUMNS); $filter->attributeIndexOrDerivedType = 'Account__activityItems__Inferred___contacts___name'; $indexes = array(); VariableStatesForReportUtil::resolveAttributeIndexesByComponents($indexes, array($filter)); $this->assertEquals(array(), $indexes); }