/** * Convert a rate model to a TaxRate data object * * @param TaxRateModel $rateModel * @return TaxRateDataObject * @SuppressWarnings(PHPMD.NPathComplexity) */ public function createTaxRateDataObjectFromModel(TaxRateModel $rateModel) { $this->taxRateDataObjectBuilder->populateWithArray([]); if ($rateModel->getId()) { $this->taxRateDataObjectBuilder->setId($rateModel->getId()); } if ($rateModel->getTaxCountryId()) { $this->taxRateDataObjectBuilder->setCountryId($rateModel->getTaxCountryId()); } /* tax region id may be 0 which is "*" which would fail an if check */ if ($rateModel->getTaxRegionId() !== null) { $this->taxRateDataObjectBuilder->setRegionId($rateModel->getTaxRegionId()); $regionName = $this->directoryRegion->load($rateModel->getTaxRegionId())->getCode(); $this->taxRateDataObjectBuilder->setRegionName($regionName); } if ($rateModel->getRegionName()) { $this->taxRateDataObjectBuilder->setRegionName($rateModel->getRegionName()); } if ($rateModel->getTaxPostcode()) { $this->taxRateDataObjectBuilder->setPostcode($rateModel->getTaxPostcode()); } if ($rateModel->getCode()) { $this->taxRateDataObjectBuilder->setCode($rateModel->getCode()); } if ($rateModel->getRate()) { $this->taxRateDataObjectBuilder->setPercentageRate((double) $rateModel->getRate()); } if ($rateModel->getZipIsRange()) { $zipRange = $this->zipRangeDataObjectBuilder->populateWithArray([])->setFrom($rateModel->getZipFrom())->setTo($rateModel->getZipTo())->create(); $this->taxRateDataObjectBuilder->setZipRange($zipRange); } $this->taxRateDataObjectBuilder->setTitles($this->createTitleArrayFromModel($rateModel)); return $this->taxRateDataObjectBuilder->create(); }
/** * @param array $dataArray * @param string $errorMessages * @throws \Magento\Framework\Exception\InputException * * @dataProvider createDataProvider * @expectedException \Magento\Framework\Exception\InputException * @magentoDbIsolation enabled */ public function testCreateTaxRateWithExceptionMessages($dataArray, $errorMessages) { $taxRate = $this->taxRateBuilder->populateWithArray($dataArray)->create(); try { $this->taxRateService->createTaxRate($taxRate); } catch (InputException $exception) { $errors = $exception->getErrors(); foreach ($errors as $key => $error) { $this->assertEquals($errorMessages[$key], $error->getMessage()); } throw $exception; } }
/** * @param array $dataArray * @param string $errorMessages * @throws \Magento\Framework\Exception\InputException * * @dataProvider createDataProvider * @expectedException \Magento\Framework\Exception\InputException * @magentoDbIsolation enabled */ public function testCreateTaxRateWithExceptionMessages($dataArray, $errorMessages) { $expectedErrorMessages = ['country_id is a required field.', 'percentage_rate is a required field.', 'code is a required field.']; $expectedErrorMessages = array_merge($expectedErrorMessages, $errorMessages); $taxRate = $this->taxRateBuilder->populateWithArray($dataArray)->create(); try { $this->taxRateService->createTaxRate($taxRate); } catch (InputException $exception) { $errors = $exception->getErrors(); foreach ($errors as $key => $error) { $this->assertEquals($expectedErrorMessages[$key], $error->getMessage()); } throw $exception; } }