public function testResolveFiltersForVariableStatesWithOneDisplayAttributeAndOneFilterForANonSuperUserWhoCanSeeAnotherState() { Yii::app()->user->userModel = User::getByUsername('sarah'); $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 LeadsStateMetadataAdapter(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); }