/** * Data provider for * * @return array */ public function createValidatorDataProvider() { $result = array(); /** @var Magento_Translate_AdapterAbstract $translator */ $translator = $this->getMockBuilder('Magento_Translate_AdapterAbstract')->getMockForAbstractClass(); Magento_Validator_ValidatorAbstract::setDefaultTranslator($translator); // Case 1. Check constructor with arguments $actualConstraints = array(array('alias' => 'name_alias', 'class' => 'Magento_Validator_Test_StringLength', 'options' => array('arguments' => array(1, new Magento_Validator_Constraint_Option(20))), 'property' => 'name', 'type' => 'property')); $expectedValidator = new Magento_Validator(); $expectedValidator->addValidator(new Magento_Validator_Constraint_Property(new Magento_Validator_Test_StringLength(1, 20), 'name', 'name_alias')); $result[] = array($actualConstraints, $expectedValidator); // Case 2. Check method calls $actualConstraints = array(array('alias' => 'description_alias', 'class' => 'Magento_Validator_Test_StringLength', 'options' => array('methods' => array(array('method' => 'setMin', 'arguments' => array(10)), array('method' => 'setMax', 'arguments' => array(1000)))), 'property' => 'description', 'type' => 'property')); $expectedValidator = new Magento_Validator(); $expectedValidator->addValidator(new Magento_Validator_Constraint_Property(new Magento_Validator_Test_StringLength(10, 1000), 'description', 'description_alias')); $result[] = array($actualConstraints, $expectedValidator); // Case 3. Check callback on validator $actualConstraints = array(array('alias' => 'sku_alias', 'class' => 'Magento_Validator_Test_StringLength', 'options' => array('callback' => array(new Magento_Validator_Constraint_Option_Callback(function ($validator) { $validator->setMin(20); $validator->setMax(100); }))), 'property' => 'sku', 'type' => 'property')); $expectedValidator = new Magento_Validator(); $expectedValidator->addValidator(new Magento_Validator_Constraint_Property(new Magento_Validator_Test_StringLength(20, 100), 'sku', 'sku_alias')); $result[] = array($actualConstraints, $expectedValidator); return $result; }
/** * Check that default translator returned if set and no translator set */ public function testGetTranslatorDefault() { /** @var Magento_Validator_ValidatorAbstract $validator */ $validator = $this->getMockBuilder('Magento_Validator_ValidatorAbstract')->getMockForAbstractClass(); $translator = $this->_getTranslator(); Magento_Validator_ValidatorAbstract::setDefaultTranslator($translator); $this->assertEquals($translator, $validator->getTranslator()); $this->assertFalse($validator->hasTranslator()); }
/** * Test getValidatorConfig created correct validator config. Check that validator translator was initialized. */ public function testGetValidatorConfig() { $this->_objectManager->expects($this->at(2))->method('create')->with('Mage_Core_Model_Translate_Expr')->will($this->returnValue(new Mage_Core_Model_Translate_Expr())); $factory = new Mage_Core_Model_Validator_Factory($this->_objectManager, $this->_config, $this->_translateAdapter); $actualConfig = $factory->getValidatorConfig(); $this->assertInstanceOf('Magento_Validator_Config', $actualConfig, 'Object of incorrect type was created'); // Check that validator translator was correctly instantiated $validatorTranslator = Magento_Validator_ValidatorAbstract::getDefaultTranslator(); $this->assertInstanceOf('Magento_Translate_Adapter', $validatorTranslator, 'Default validator translate adapter was not set correctly'); // Dive into callback /** @var Mage_Core_Model_Translate $translateAdapter */ $this->assertEquals('Test message', $validatorTranslator->translate('Test message'), 'Translator callback function was not initialized'); }
/** * Test creation of validator config * * @magentoAppIsolation enabled */ public function testGetValidatorConfig() { $objectManager = Mage::getObjectManager(); /** @var Mage_Core_Model_Validator_Factory $factory */ $factory = $objectManager->get('Mage_Core_Model_Validator_Factory'); $this->assertInstanceOf('Magento_Validator_Config', $factory->getValidatorConfig()); // Check that default translator was set $translator = Magento_Validator_ValidatorAbstract::getDefaultTranslator(); $this->assertInstanceOf('Magento_Translate_AdapterInterface', $translator); $this->assertEquals('Message', $translator->__('Message')); $this->assertEquals('Message', $translator->translate('Message')); $this->assertEquals('Message with "placeholder one" and "placeholder two"', $translator->__('Message with "%s" and "%s"', 'placeholder one', 'placeholder two')); }
/** * Create and set default translator to Magento_Validator_ValidatorAbstract. */ protected function _initializeDefaultTranslator() { $translateAdapter = $this->_translator; $objectManager = $this->_objectManager; // Pass translations to Mage_Core_Model_Translate from validators $translatorCallback = function () use($translateAdapter, $objectManager) { /** @var Mage_Core_Model_Translate $translateAdapter */ $args = func_get_args(); $expr = $objectManager->create('Mage_Core_Model_Translate_Expr'); $expr->setText($args[0]); array_unshift($args, $expr); return $translateAdapter->translate($args); }; /** @var Magento_Translate_Adapter $translator */ $translator = $this->_objectManager->create('Magento_Translate_Adapter'); $translator->setOptions(array('translator' => $translatorCallback)); Magento_Validator_ValidatorAbstract::setDefaultTranslator($translator); }
/** * Test addValidator */ public function testAddValidator() { $fooValidator = new Magento_Validator_Test_True(); $classConstraint = new Magento_Validator_Constraint($fooValidator, 'id'); $propertyValidator = new Magento_Validator_Constraint_Property($classConstraint, 'name', 'id'); /** @var Magento_Translate_AdapterAbstract $translator */ $translator = $this->getMockBuilder('Magento_Translate_AdapterAbstract')->getMockForAbstractClass(); Magento_Validator_ValidatorAbstract::setDefaultTranslator($translator); $this->_validator->addValidator($classConstraint); $this->_validator->addValidator($propertyValidator); $expected = array(array('instance' => $classConstraint, 'breakChainOnFailure' => false), array('instance' => $propertyValidator, 'breakChainOnFailure' => false)); $this->assertAttributeEquals($expected, '_validators', $this->_validator); $this->assertEquals($translator, $fooValidator->getTranslator(), 'Translator was not set'); }
/** * Set translator to chain. * * @param Magento_Translate_AdapterInterface|null $translator * @return Magento_Validator_ValidatorAbstract */ public function setTranslator($translator = null) { foreach ($this->_validators as $validator) { $validator['instance']->setTranslator($translator); } return parent::setTranslator($translator); }
/** * Set default translator instance * * @param Magento_Translate_AdapterInterface|null $translator */ public static function setDefaultTranslator(Magento_Translate_AdapterInterface $translator = null) { self::$_defaultTranslator = $translator; }