Skip to content

Commit f4c09f4

Browse files
authored
Replace Zend_Measure with php-units-of-measure (OpenMage#5102)
* added tests * moved some const from Zend_Measure * Updated tests * Replace `Zend_Measure` with `php-units-of-measure` - see https://github.com/PhpUnitsOfMeasure/php-units-of-measure * tests * rector * baseline * fix rector config * typo
1 parent 8f3f6a0 commit f4c09f4

File tree

17 files changed

+412
-89
lines changed

17 files changed

+412
-89
lines changed

.phpstan.dist.baseline.neon

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3479,3 +3479,9 @@ parameters:
34793479
identifier: argument.type
34803480
count: 1
34813481
path: lib/Varien/Simplexml/Element.php
3482+
3483+
-
3484+
rawMessage: Dead catch - PhpUnitsOfMeasure\Exception\UnknownUnitOfMeasure is never thrown in the try block.
3485+
identifier: catch.neverThrown
3486+
count: 2
3487+
path: tests/unit/Mage/Usa/Helper/DataTest.php

.phpunit.dist.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@
106106
<testsuite name="Mage_Uploader">
107107
<directory>tests/unit/Mage/Uploader</directory>
108108
</testsuite>
109+
<testsuite name="Mage_Usa">
110+
<directory>tests/unit/Mage/Usa</directory>
111+
</testsuite>
109112
<testsuite name="Mage_Wishlist">
110113
<directory>tests/unit/Mage/Wishlist</directory>
111114
</testsuite>

.rector.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
use Rector\PHPUnit\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector;
2323
use Rector\Privatization\Rector as Privatization;
2424
use Rector\Renaming\Rector as Renaming;
25+
use Rector\Renaming\Rector\ClassConstFetch\RenameClassConstFetchRector;
26+
use Rector\Renaming\ValueObject\RenameClassAndConstFetch;
2527
use Rector\Strict\Rector as Strict;
2628
use Rector\Transform\Rector as Transform;
2729
use Rector\TypeDeclaration\Rector as TypeDeclaration;
@@ -43,6 +45,13 @@
4345
->withRules([
4446
Php85\ArrayDimFetch\ArrayFirstLastRector::class,
4547
])
48+
->withConfiguredRule(RenameClassConstFetchRector::class, [
49+
new RenameClassAndConstFetch('Zend_Measure_Length', 'CENTIMETER', 'Mage_Core_Helper_Measure_Length', 'CENTIMETER'),
50+
new RenameClassAndConstFetch('Zend_Measure_Length', 'INCH', 'Mage_Core_Helper_Measure_Length', 'INCH'),
51+
new RenameClassAndConstFetch('Zend_Measure_Weight', 'KILOGRAM', 'Mage_Core_Helper_Measure_Weight', 'KILOGRAM'),
52+
new RenameClassAndConstFetch('Zend_Measure_Weight', 'OUNCE', 'Mage_Core_Helper_Measure_Weight', 'OUNCE'),
53+
new RenameClassAndConstFetch('Zend_Measure_Weight', 'POUND', 'Mage_Core_Helper_Measure_Weight', 'POUND'),
54+
])
4655
->withSkip([
4756
CodeQuality\BooleanNot\SimplifyDeMorganBinaryRector::class,
4857
# skip: causes issues with Mage_Api2_Model_Auth_Adapter_Oauth::getUserParams()
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* @copyright For copyright and license information, read the COPYING.txt file.
7+
* @link /COPYING.txt
8+
* @license Open Software License (OSL 3.0)
9+
* @package Mage_Core
10+
*/
11+
12+
/**
13+
* Length constants
14+
*
15+
* @package Mage_Core
16+
*/
17+
class Mage_Core_Helper_Measure_Length extends Mage_Core_Helper_Abstract
18+
{
19+
protected $_moduleName = 'Mage_Core';
20+
21+
public const STANDARD = 'meter';
22+
23+
public const CENTIMETER = 'centimeter';
24+
25+
public const INCH = 'inch';
26+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* @copyright For copyright and license information, read the COPYING.txt file.
7+
* @link /COPYING.txt
8+
* @license Open Software License (OSL 3.0)
9+
* @package Mage_Core
10+
*/
11+
12+
/**
13+
* Weight constants
14+
*
15+
* @package Mage_Core
16+
*/
17+
class Mage_Core_Helper_Measure_Weight extends Mage_Core_Helper_Abstract
18+
{
19+
protected $_moduleName = 'Mage_Core';
20+
21+
public const STANDARD = 'kilogram';
22+
23+
public const KILOGRAM = 'kilogram';
24+
25+
public const OUNCE = 'ounce';
26+
27+
public const POUND = 'pounds';
28+
}

app/code/core/Mage/Usa/Block/Adminhtml/Dhl/Unitofmeasure.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public function _construct()
3636
$weight = round(
3737
(float) Mage::helper('usa')->convertMeasureWeight(
3838
$kgWeight,
39-
Zend_Measure_Weight::KILOGRAM,
40-
Zend_Measure_Weight::POUND,
39+
Mage_Core_Helper_Measure_Weight::KILOGRAM,
40+
Mage_Core_Helper_Measure_Weight::POUND,
4141
),
4242
3,
4343
);

app/code/core/Mage/Usa/Helper/Data.php

Lines changed: 30 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
* @package Mage_Usa
88
*/
99

10+
use PhpUnitsOfMeasure\Exception\NonNumericValue;
11+
use PhpUnitsOfMeasure\Exception\NonStringUnitName;
12+
use PhpUnitsOfMeasure\Exception\UnknownUnitOfMeasure;
13+
use PhpUnitsOfMeasure\PhysicalQuantity\Mass;
14+
use PhpUnitsOfMeasure\PhysicalQuantity\Length;
15+
1016
/**
1117
* @package Mage_Usa
1218
*/
@@ -17,18 +23,18 @@ class Mage_Usa_Helper_Data extends Mage_Core_Helper_Abstract
1723
/**
1824
* Convert weight in different measure types
1925
*
20-
* @param mixed $value
21-
* @param string $sourceWeightMeasure
22-
* @param string $toWeightMeasure
23-
* @return null|int|string
26+
* @param float $value
27+
* @param Mage_Core_Helper_Measure_Weight::* $sourceWeightMeasure
28+
* @param Mage_Core_Helper_Measure_Weight::* $toWeightMeasure
29+
* @return null|float
30+
* @throws NonNumericValue
31+
* @throws NonStringUnitName
2432
*/
2533
public function convertMeasureWeight($value, $sourceWeightMeasure, $toWeightMeasure)
2634
{
2735
if ($value) {
28-
$locale = Mage::app()->getLocale()->getLocale();
29-
$unitWeight = new Zend_Measure_Weight($value, $sourceWeightMeasure, $locale);
30-
$unitWeight->setType($toWeightMeasure);
31-
return $unitWeight->getValue();
36+
$unitWeight = new Mass($value, $sourceWeightMeasure);
37+
return $unitWeight->toUnit($toWeightMeasure);
3238
}
3339

3440
return null;
@@ -37,20 +43,18 @@ public function convertMeasureWeight($value, $sourceWeightMeasure, $toWeightMeas
3743
/**
3844
* Convert dimensions in different measure types
3945
*
40-
* @param float|int|string $value
41-
* @param string $sourceDimensionMeasure
42-
* @param string $toDimensionMeasure
43-
* @return null|int|string
44-
* @throws Zend_Locale_Exception
45-
* @throws Zend_Measure_Exception
46+
* @param float $value
47+
* @param Mage_Core_Helper_Measure_Length::* $sourceDimensionMeasure
48+
* @param Mage_Core_Helper_Measure_Length::* $toDimensionMeasure
49+
* @return null|float
50+
* @throws NonNumericValue
51+
* @throws NonStringUnitName
4652
*/
4753
public function convertMeasureDimension($value, $sourceDimensionMeasure, $toDimensionMeasure)
4854
{
4955
if ($value) {
50-
$locale = Mage::app()->getLocale()->getLocale();
51-
$unitDimension = new Zend_Measure_Length($value, $sourceDimensionMeasure, $locale);
52-
$unitDimension->setType($toDimensionMeasure);
53-
return $unitDimension->getValue();
56+
$unitDimension = new Length($value, $sourceDimensionMeasure);
57+
return $unitDimension->toUnit($toDimensionMeasure);
5458
}
5559

5660
return null;
@@ -59,37 +63,27 @@ public function convertMeasureDimension($value, $sourceDimensionMeasure, $toDime
5963
/**
6064
* Get name of measure by its type
6165
*
62-
* @param $key
66+
* @param string $key
6367
* @return string
64-
* @throws Zend_Measure_Exception
68+
* @throws UnknownUnitOfMeasure
6569
*/
6670
public function getMeasureWeightName($key)
6771
{
68-
$weight = new Zend_Measure_Weight(0);
69-
$conversionList = $weight->getConversionList();
70-
if (!empty($conversionList[$key]) && !empty($conversionList[$key][1])) {
71-
return $conversionList[$key][1];
72-
}
73-
74-
return '';
72+
$unit = Mass::getUnit($key);
73+
return $unit->getName();
7574
}
7675

7776
/**
7877
* Get name of measure by its type
7978
*
80-
* @param $key
79+
* @param string $key
8180
* @return string
82-
* @throws Zend_Measure_Exception
81+
* @throws UnknownUnitOfMeasure
8382
*/
8483
public function getMeasureDimensionName($key)
8584
{
86-
$weight = new Zend_Measure_Length(0);
87-
$conversionList = $weight->getConversionList();
88-
if (!empty($conversionList[$key]) && !empty($conversionList[$key][1])) {
89-
return $conversionList[$key][1];
90-
}
91-
92-
return '';
85+
$unit = Length::getUnit($key);
86+
return $unit->getName();
9387
}
9488

9589
/**
@@ -132,7 +126,6 @@ public function displayGirthValue($shippingMethod)
132126
* Validate ups type value
133127
*
134128
* @param string $valueForCheck ups type value for check
135-
*
136129
* @return bool
137130
*/
138131
public function validateUpsType($valueForCheck)

app/code/core/Mage/Usa/Model/Shipping/Carrier/Dhl.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,29 +290,29 @@ public function setRequest(Varien_Object $request)
290290
if ($request->getAction() == 'GenerateLabel') {
291291
$packageParams = $request->getPackageParams();
292292
$shippingWeight = $request->getPackageWeight();
293-
if ($packageParams->getWeightUnits() != Zend_Measure_Weight::POUND) {
293+
if ($packageParams->getWeightUnits() != Mage_Core_Helper_Measure_Weight::POUND) {
294294
$shippingWeight = round((float) Mage::helper('usa')->convertMeasureWeight(
295295
$request->getPackageWeight(),
296296
$packageParams->getWeightUnits(),
297-
Zend_Measure_Weight::POUND,
297+
Mage_Core_Helper_Measure_Weight::POUND,
298298
));
299299
}
300300

301-
if ($packageParams->getDimensionUnits() != Zend_Measure_Length::INCH) {
301+
if ($packageParams->getDimensionUnits() != Mage_Core_Helper_Measure_Length::INCH) {
302302
$packageParams->setLength(round((float) Mage::helper('usa')->convertMeasureDimension(
303303
$packageParams->getLength(),
304304
$packageParams->getDimensionUnits(),
305-
Zend_Measure_Length::INCH,
305+
Mage_Core_Helper_Measure_Length::INCH,
306306
)));
307307
$packageParams->setWidth(round((float) Mage::helper('usa')->convertMeasureDimension(
308308
$packageParams->getWidth(),
309309
$packageParams->getDimensionUnits(),
310-
Zend_Measure_Length::INCH,
310+
Mage_Core_Helper_Measure_Length::INCH,
311311
)));
312312
$packageParams->setHeight(round((float) Mage::helper('usa')->convertMeasureDimension(
313313
$packageParams->getHeight(),
314314
$packageParams->getDimensionUnits(),
315-
Zend_Measure_Length::INCH,
315+
Mage_Core_Helper_Measure_Length::INCH,
316316
)));
317317
}
318318

app/code/core/Mage/Usa/Model/Shipping/Carrier/Dhl/International.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -427,18 +427,18 @@ public function getCode($type, $code = '')
427427
'1' => Mage::helper('usa')->__('Specific'),
428428
],
429429
'dimensions_variables' => [
430-
'L' => Zend_Measure_Weight::POUND,
431-
'LB' => Zend_Measure_Weight::POUND,
432-
'POUND' => Zend_Measure_Weight::POUND,
433-
'K' => Zend_Measure_Weight::KILOGRAM,
434-
'KG' => Zend_Measure_Weight::KILOGRAM,
435-
'KILOGRAM' => Zend_Measure_Weight::KILOGRAM,
436-
'I' => Zend_Measure_Length::INCH,
437-
'IN' => Zend_Measure_Length::INCH,
438-
'INCH' => Zend_Measure_Length::INCH,
439-
'C' => Zend_Measure_Length::CENTIMETER,
440-
'CM' => Zend_Measure_Length::CENTIMETER,
441-
'CENTIMETER' => Zend_Measure_Length::CENTIMETER,
430+
'L' => Mage_Core_Helper_Measure_Weight::POUND,
431+
'LB' => Mage_Core_Helper_Measure_Weight::POUND,
432+
'POUND' => Mage_Core_Helper_Measure_Weight::POUND,
433+
'K' => Mage_Core_Helper_Measure_Weight::KILOGRAM,
434+
'KG' => Mage_Core_Helper_Measure_Weight::KILOGRAM,
435+
'KILOGRAM' => Mage_Core_Helper_Measure_Weight::KILOGRAM,
436+
'I' => Mage_Core_Helper_Measure_Length::INCH,
437+
'IN' => Mage_Core_Helper_Measure_Length::INCH,
438+
'INCH' => Mage_Core_Helper_Measure_Length::INCH,
439+
'C' => Mage_Core_Helper_Measure_Length::CENTIMETER,
440+
'CM' => Mage_Core_Helper_Measure_Length::CENTIMETER,
441+
'CENTIMETER' => Mage_Core_Helper_Measure_Length::CENTIMETER,
442442

443443
],
444444
];
@@ -537,7 +537,7 @@ public function getDhlProductTitle($code)
537537
protected function _getWeight($weight, $maxWeight = false, $configWeightUnit = false)
538538
{
539539
if ($maxWeight) {
540-
$configWeightUnit = Zend_Measure_Weight::KILOGRAM;
540+
$configWeightUnit = Mage_Core_Helper_Measure_Weight::KILOGRAM;
541541
} elseif ($configWeightUnit) {
542542
$configWeightUnit = $this->getCode('dimensions_variables', $configWeightUnit);
543543
} else {
@@ -731,10 +731,10 @@ protected function _getDimension($dimension, $configWeightUnit = false)
731731
$configWeightUnit = $this->getCode('dimensions_variables', $configWeightUnit);
732732
}
733733

734-
if ($configWeightUnit == Zend_Measure_Weight::POUND) {
735-
$configDimensionUnit = Zend_Measure_Length::INCH;
734+
if ($configWeightUnit == Mage_Core_Helper_Measure_Weight::POUND) {
735+
$configDimensionUnit = Mage_Core_Helper_Measure_Length::INCH;
736736
} else {
737-
$configDimensionUnit = Zend_Measure_Length::CENTIMETER;
737+
$configDimensionUnit = Mage_Core_Helper_Measure_Length::CENTIMETER;
738738
}
739739

740740
$countryDimensionUnit = $this->getCode('dimensions_variables', $this->_getDimensionUnit());

app/code/core/Mage/Usa/Model/Shipping/Carrier/Fedex.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1343,8 +1343,8 @@ protected function _formShipmentRequest(Varien_Object $request)
13431343
$height = $packageParams->getHeight();
13441344
$width = $packageParams->getWidth();
13451345
$length = $packageParams->getLength();
1346-
$weightUnits = $packageParams->getWeightUnits() == Zend_Measure_Weight::POUND ? 'LB' : 'KG';
1347-
$dimensionsUnits = $packageParams->getDimensionUnits() == Zend_Measure_Length::INCH ? 'IN' : 'CM';
1346+
$weightUnits = $packageParams->getWeightUnits() == Mage_Core_Helper_Measure_Weight::POUND ? 'LB' : 'KG';
1347+
$dimensionsUnits = $packageParams->getDimensionUnits() == Mage_Core_Helper_Measure_Length::INCH ? 'IN' : 'CM';
13481348
$unitPrice = 0;
13491349
$itemsQty = 0;
13501350
$itemsDesc = [];

0 commit comments

Comments
 (0)