/** * {@inheritdoc} */ public function loadData($printQuery = false, $logQuery = false) { if (!$this->isLoaded()) { $searchCriteria = $this->getSearchCriteria(); $searchResults = $this->ruleService->searchTaxRules($searchCriteria); $this->_totalRecords = $searchResults->getTotalCount(); foreach ($searchResults->getItems() as $taxRule) { $this->_addItem($this->createTaxRuleCollectionItem($taxRule)); } $this->_setIsLoaded(); } return $this; }
public function testSearchTaxRulesSingleResult() { /** @var \PHPUnit_Framework_MockObject_MockObject | * \Magento\Tax\Model\Resource\Calculation\Rule\Collection $mockCollection */ $mockCollection = $this->getMockBuilder('\\Magento\\Tax\\Model\\Resource\\Calculation\\Rule\\Collection')->disableOriginalConstructor()->setMethods(['__wakeup', 'getItems', 'getSize', 'addFieldToFilter', '_beforeLoad', 'getIterator'])->getMock(); /** @var \Magento\Tax\Service\V1\Data\TaxRuleBuilder $taxRuleBuilder */ $taxRuleBuilder = $this->objectManager->getObject('Magento\\Tax\\Service\\V1\\Data\\TaxRuleBuilder'); /** @var \Magento\Tax\Service\V1\Data\TaxRule $taxRule */ $taxRule = $taxRuleBuilder->create(); $taxRuleModel = $this->getMockBuilder('Magento\\Tax\\Model\\Calculation\\Rule')->disableOriginalConstructor()->getMock(); $mockCollection->expects($this->once())->method('getIterator')->will($this->returnValue(new \ArrayIterator([$taxRuleModel]))); $mockCollection->expects($this->once())->method('getSize')->will($this->returnValue(1)); $filterBuilder = $this->objectManager->getObject('\\Magento\\Framework\\Service\\V1\\Data\\FilterBuilder'); $filter = $filterBuilder->setField('code')->setValue('code')->setConditionType('eq')->create(); $filterGroupBuilder = $this->objectManager->getObject('Magento\\Framework\\Service\\V1\\Data\\Search\\FilterGroupBuilder'); /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder */ $searchCriteriaBuilder = $this->objectManager->getObject('Magento\\Framework\\Service\\V1\\Data\\SearchCriteriaBuilder', ['filterGroupBuilder' => $filterGroupBuilder]); $searchCriteria = $searchCriteriaBuilder->addFilter([$filter])->addSortOrder('id', \Magento\Framework\Service\V1\Data\SearchCriteria::SORT_ASC)->create(); /** @var \Magento\Tax\Service\V1\Data\TaxRuleSearchResultsBuilder $searchResultsBuilder */ $searchResultsBuilder = $this->objectManager->getObject('\\Magento\\Tax\\Service\\V1\\Data\\TaxRuleSearchResultsBuilder'); $expectedResults = $searchResultsBuilder->setSearchCriteria($searchCriteria)->setItems([$taxRule])->setTotalCount(1)->create(); $this->ruleModelMock->expects($this->once())->method('getCollection')->will($this->returnValue($mockCollection)); $this->converterMock->expects($this->once())->method('createTaxRuleDataObjectFromModel')->with($taxRuleModel)->will($this->returnValue($taxRule)); $actualResults = $this->taxRuleService->searchTaxRules($searchCriteria); $this->assertNotNull($actualResults); $this->assertSame($searchCriteria, $actualResults->getSearchCriteria()); $this->assertSame($expectedResults->getSearchCriteria(), $actualResults->getSearchCriteria()); $this->assertSame($expectedResults->getTotalCount(), $actualResults->getTotalCount()); $this->assertEquals($expectedResults->getItems(), $actualResults->getItems()); $this->assertSame($taxRule, $actualResults->getItems()[0]); }
/** * * @param Filter[] $filters * @param Filter[] $filterGroup * @param string[] $expectedResultCodes The codes of the tax rules that are expected to be found * * @magentoDbIsolation enabled * @dataProvider searchTaxRulesDataProvider */ public function testSearchTaxRules($filters, $filterGroup, $expectedRuleCodes) { $this->setUpDefaultRules(); /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchBuilder */ $searchBuilder = Bootstrap::getObjectManager()->create('Magento\\Framework\\Service\\V1\\Data\\SearchCriteriaBuilder'); foreach ($filters as $filter) { $searchBuilder->addFilter([$filter]); } if (!is_null($filterGroup)) { $searchBuilder->addFilter($filterGroup); } $searchCriteria = $searchBuilder->create(); $searchResults = $this->taxRuleService->searchTaxRules($searchCriteria); $items = []; foreach ($expectedRuleCodes as $ruleCode) { $ruleId = $this->taxRules[$ruleCode]; $items[] = $this->taxRuleService->getTaxRule($ruleId); } /** @var TaxRuleSearchResultsBuilder $resultsBuilder */ $resultsBuilder = Bootstrap::getObjectManager()->create('Magento\\Tax\\Service\\V1\\Data\\TaxRuleSearchResultsBuilder'); $expectedResult = $resultsBuilder->setItems($items)->setTotalCount(count($items))->setSearchCriteria($searchCriteria)->create(); $this->assertEquals($expectedResult, $searchResults); $this->tearDownDefaultRules(); }