/** * Returns limitation code from MassDeleteLimitResult parameters. * * @param MassDeleteLimitResult $result * * @return int */ public function getLimitationCode(MassDeleteLimitResult $result) { $selected = $result->getSelected(); $deletable = $result->getDeletable(); $maxLimit = $result->getMaxLimit(); if ($deletable <= $maxLimit) { return $selected === $deletable ? self::NO_LIMIT : self::LIMIT_ACCESS; } else { return $selected === $deletable ? self::LIMIT_MAX_RECORDS : self::LIMIT_ACCESS_MAX_RECORDS; } }
/** * @dataProvider getLimitQueryDataProvider * * @param MassDeleteLimitResult $limitResult * @param bool $accessRestriction * @param bool $maxLimitRestriction * * @internal param $MassDeleteLimitResult $ */ public function testLimitQuery(MassDeleteLimitResult $limitResult, $accessRestriction = false, $maxLimitRestriction = false) { /** @var QueryBuilder|\PHPUnit_Framework_MockObject_MockObject $queryBuilder */ $queryBuilder = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock(); /** @var MassActionHandlerArgs|\PHPUnit_Framework_MockObject_MockObject $args */ $args = $this->getMockBuilder('Oro\\Bundle\\DataGridBundle\\Extension\\MassAction\\MassActionHandlerArgs')->disableOriginalConstructor()->getMock(); $args->expects($this->once())->method('getResults')->willReturn(new DeletionIterableResult($queryBuilder)); if ($accessRestriction) { $this->helper->expects($this->once())->method('apply')->with($queryBuilder, 'DELETE'); } if ($maxLimitRestriction) { $queryBuilder->expects($this->once())->method('setMaxResults')->with($limitResult->getMaxLimit()); } $this->limiter->limitQuery($limitResult, $args); }
/** * @param MassDeleteLimitResult $limitResult * * @return MassActionResponse */ protected function getPostResponse(MassDeleteLimitResult $limitResult) { return new MassActionResponse(true, 'OK', ['selected' => $limitResult->getSelected(), 'deletable' => $limitResult->getDeletable(), 'max_limit' => $limitResult->getMaxLimit()]); }