/** * @depends testGetInferredRelationsDataWithPrecedingModel */ public function testGetDerivedRelationsViaCastedUpModelDataWithPrecedingModel() { //test with preceding model that is not the via relation $model = new ReportModelTestItem(); $precedingModel = new ReportModelTestItem5(); $rules = new ReportsTestReportRules(); $report = new Report(); $report->setType(Report::TYPE_ROWS_AND_COLUMNS); $report->setModuleClassName('ReportsTestModule'); $adapter = new ModelRelationsAndAttributesToReportAdapter($model, $rules, $report->getType()); $relations = $adapter->getSelectableRelationsData($precedingModel, 'nonReportable2'); $this->assertEquals(11, count($relations)); $compareData = array('label' => 'Has One'); $this->assertEquals($compareData, $relations['hasOne']); $compareData = array('label' => 'Has One Again'); $this->assertEquals($compareData, $relations['hasOneAgain']); $compareData = array('label' => 'Has Many'); $this->assertEquals($compareData, $relations['hasMany']); $compareData = array('label' => 'Has One Also'); $this->assertEquals($compareData, $relations['hasOneAlso']); $compareData = array('label' => 'Model 5 Via Item'); $this->assertEquals($compareData, $relations['model5ViaItem']); $compareData = array('label' => 'Primary Email'); $this->assertEquals($compareData, $relations['primaryEmail']); $compareData = array('label' => 'Primary Address'); $this->assertEquals($compareData, $relations['primaryAddress']); $compareData = array('label' => 'Secondary Email'); $this->assertEquals($compareData, $relations['secondaryEmail']); $compareData = array('label' => 'Owner'); $this->assertEquals($compareData, $relations['owner']); $compareData = array('label' => 'Created By User'); $this->assertEquals($compareData, $relations['createdByUser']); $compareData = array('label' => 'Modified By User'); $this->assertEquals($compareData, $relations['modifiedByUser']); //test with preceding model that is the via relation $rules = new ReportsTestReportRules(); $report = new Report(); $report->setType(Report::TYPE_ROWS_AND_COLUMNS); $report->setModuleClassName('ReportsTestModule'); $adapter = new ModelRelationsAndAttributesToReportAdapter($model, $rules, $report->getType()); $relations = $adapter->getSelectableRelationsData($precedingModel, 'reportItems'); $this->assertEquals(10, count($relations)); $compareData = array('label' => 'Has One'); $this->assertEquals($compareData, $relations['hasOne']); $compareData = array('label' => 'Has One Again'); $this->assertEquals($compareData, $relations['hasOneAgain']); $compareData = array('label' => 'Has Many'); $this->assertEquals($compareData, $relations['hasMany']); $compareData = array('label' => 'Has One Also'); $this->assertEquals($compareData, $relations['hasOneAlso']); $compareData = array('label' => 'Primary Email'); $this->assertEquals($compareData, $relations['primaryEmail']); $compareData = array('label' => 'Primary Address'); $this->assertEquals($compareData, $relations['primaryAddress']); $compareData = array('label' => 'Secondary Email'); $this->assertEquals($compareData, $relations['secondaryEmail']); $compareData = array('label' => 'Owner'); $this->assertEquals($compareData, $relations['owner']); $compareData = array('label' => 'Created By User'); $this->assertEquals($compareData, $relations['createdByUser']); $compareData = array('label' => 'Modified By User'); $this->assertEquals($compareData, $relations['modifiedByUser']); }
/** * Sally cannot access notes, tasks, or contacts. User is always accessible regardless of right to access */ public function testGetAllReportableRelationsAsANonElevatedUser() { Yii::app()->user->userModel = User::getByUsername('sally'); $model = new Account(); $rules = new AccountsReportRules(); $report = new Report(); $report->setType(Report::TYPE_ROWS_AND_COLUMNS); $report->setModuleClassName('AccountsModule'); $adapter = new ModelRelationsAndAttributesToReportAdapter($model, $rules, $report->getType()); $relations = $adapter->getSelectableRelationsData(); $relations = $adapter->getSelectableRelationsDataResolvedForUserAccess(Yii::app()->user->userModel, $relations); $this->assertEquals(9, count($relations)); $compareData = array('label' => 'Billing Address'); $this->assertEquals($compareData, $relations['billingAddress']); $compareData = array('label' => 'Created By User'); $this->assertEquals($compareData, $relations['createdByUser']); $compareData = array('label' => 'Meetings'); $this->assertEquals($compareData, $relations['meetings']); $compareData = array('label' => 'Modified By User'); $this->assertEquals($compareData, $relations['modifiedByUser']); $compareData = array('label' => 'Opportunities'); $this->assertEquals($compareData, $relations['opportunities']); $compareData = array('label' => 'Owner'); $this->assertEquals($compareData, $relations['owner']); $compareData = array('label' => 'Primary Email'); $this->assertEquals($compareData, $relations['primaryEmail']); $compareData = array('label' => 'Shipping Address'); $this->assertEquals($compareData, $relations['shippingAddress']); $compareData = array('label' => 'Secondary Email'); $this->assertEquals($compareData, $relations['secondaryEmail']); }