From 368e2b6a4dc37a15834d47178213429a11e68a2e Mon Sep 17 00:00:00 2001 From: Tim Reynolds Date: Fri, 10 Aug 2012 15:37:15 -0400 Subject: [PATCH 1/3] Validation change for Text type attributes. The call on Mage_Eav_Model_Attribute_Data_Text:67 to empty returns true of a value of "0" is entered, as specified in the PHP spec. This prevents the entry of zero on the backend admin for fields. Zero should be a valid value, as it was in our case. No unit tests were created, as no unit tests exist currently for the Eav module. --- app/code/core/Mage/Eav/Model/Attribute/Data/Text.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php b/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php index c48ed5932025f..15432541815dc 100644 --- a/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php +++ b/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php @@ -64,7 +64,7 @@ public function validateValue($value) $value = $this->getEntity()->getDataUsingMethod($attribute->getAttributeCode()); } - if ($attribute->getIsRequired() && empty($value)) { + if ($attribute->getIsRequired() && empty($value) && $value !=='0') { $errors[] = Mage::helper('Mage_Eav_Helper_Data')->__('"%s" is a required value.', $label); } From 951423ae71491b65091b6101e5926873f497a293 Mon Sep 17 00:00:00 2001 From: Tim Reynolds Date: Sun, 12 Aug 2012 16:59:21 -0400 Subject: [PATCH 2/3] Unit test created for previous commit (368e2b6a4dc37a15834d47178213429a11e68a2e) Sorry for not including this originally. --- .../Eav/Model/Attribute/Data/TextTest.php | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php diff --git a/dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php b/dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php new file mode 100644 index 0000000000000..33bcc1971c9de --- /dev/null +++ b/dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php @@ -0,0 +1,102 @@ +_model = $this->getMock('Mage_Eav_Model_Attribute_Data_Text', array('getAttribute'), array(), '', false); + $attributeData = array( + 'store_label' => 'Test', + 'attribute_code' => 'test', + 'is_required' => 1, + 'validate_rules' => array( + 'min_text_length' => 0, + 'max_text_length' => 0, + 'input_validation' => 0 + ) + ); + + /** @var $model Mage_Core_Model_Abstract */ + $attribute = $this->getMock('Mage_Core_Model_Abstract', null, array($attributeData)); + //$this->_model->_attribute = $attribute; + $this->_attribute = $attribute; + $this->_model->expects($this->any()) + ->method('getAttribute') + ->will($this->returnValue($this->_attribute)); + $helper = $this->getMockBuilder('Mage_Core_Helper_String') + ->setMethods(array('__')) + ->disableOriginalConstructor() + ->getMock(); + $helper->expects($this->any()) + ->method('__') + ->will($this->returnArgument(0)); + Mage::register('_helper/Mage_Eav_Helper_Data', $helper); + Mage::register('_helper/Mage_Core_Helper_String', $helper); + + + } + + protected function tearDown() + { + $this->_model = null; + Mage::unregister('_helper/Mage_Eav_Helper_Data'); + Mage::unregister('_helper/Mage_Core_Helper_String'); + } + + /** + * This test is to check the change made to validateValue. + * A bug was found where a text attribute that has is_required==1 + * would not accept the string value of "0" (zero) as an input. + * That bug was fixed. + * @covers Mage_Eav_Model_Attribute_Data_Text::validateValue + * @param string|int|float|array $value + * @param string|int|float|array $expectedResult + * @dataProvider dataGetValuesAndResults + */ + public function testValidateValue($value, $expectedResult) + { + $this->assertEquals($expectedResult, $this->_model->validateValue($value)); + } + + public static function dataGetValuesAndResults() + { + return array( + array("0",true), //The string value of zero should be a valid input + array(0, array('"%s" is a required value.')) //Integer value of zero remains invalid + ); + } +} \ No newline at end of file From f0f7857014010c435a45c435ecd62e50dc2e5fe7 Mon Sep 17 00:00:00 2001 From: Tim Reynolds Date: Sun, 12 Aug 2012 16:59:57 -0400 Subject: [PATCH 3/3] Removed commented out line. --- .../unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php b/dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php index 33bcc1971c9de..e7f438cf5a5ab 100644 --- a/dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php +++ b/dev/tests/unit/testsuite/Mage/Eav/Model/Attribute/Data/TextTest.php @@ -52,7 +52,7 @@ protected function setUp() /** @var $model Mage_Core_Model_Abstract */ $attribute = $this->getMock('Mage_Core_Model_Abstract', null, array($attributeData)); - //$this->_model->_attribute = $attribute; + $this->_attribute = $attribute; $this->_model->expects($this->any()) ->method('getAttribute') @@ -81,7 +81,7 @@ protected function tearDown() * This test is to check the change made to validateValue. * A bug was found where a text attribute that has is_required==1 * would not accept the string value of "0" (zero) as an input. - * That bug was fixed. + * That bug was fixed. * @covers Mage_Eav_Model_Attribute_Data_Text::validateValue * @param string|int|float|array $value * @param string|int|float|array $expectedResult