ソースを参照

Fix ZF-9275: Zend_Form_Element overrides Zend_Validate DefaultTranslator

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21724 44c647ce-9c0f-0410-b52a-842ac1e357ba
rob 16 年 前
コミット
a0dd347f20
1 ファイル変更85 行追加0 行削除
  1. 85 0
      tests/Zend/Form/ElementTest.php

+ 85 - 0
tests/Zend/Form/ElementTest.php

@@ -2049,6 +2049,91 @@ class Zend_Form_ElementTest extends PHPUnit_Framework_TestCase
         $this->assertEquals(1, count($messages));
         $this->assertEquals('foo', array_shift($messages));
     }
+    
+    /**
+     * @group ZF-9275
+     */
+    public function testElementDoesntOverrideDefaultValidatorTranslatorWithDefaultRegistryTranslator()
+    {
+        $registryTranslations = array('alphaInvalid' => 'Registry message');
+        $registryTranslate = new Zend_Translate('array', $registryTranslations);
+        Zend_Registry::set('Zend_Translate', $registryTranslate);
+        
+        $validatorTranslations = array('alphaInvalid' => 'Validator message');
+        $validatorTranslate = new Zend_Translate('array', $validatorTranslations);
+        Zend_Validate_Abstract::setDefaultTranslator($validatorTranslate);
+        
+        $elementTranslations = array('alphaInvalid' => 'Element message');
+        $elementTranslate = new Zend_Translate('array', $elementTranslations);
+       
+        // the default validate translator should beat the registry one
+        $this->element->addValidator('Alpha');
+        $this->assertFalse($this->element->isValid(123));
+        $messages = $this->element->getMessages();
+        $this->assertEquals('Validator message', $messages['alphaInvalid']);
+    }
+    
+    /**
+     * @group ZF-9275
+     */
+    public function testDefaultTranslatorDoesntOverrideElementTranslatorOnValdiation()
+    {
+        $registryTranslations = array('alphaInvalid' => 'Registry message');
+        $registryTranslate = new Zend_Translate('array', $registryTranslations);
+        Zend_Registry::set('Zend_Translate', $registryTranslate);
+        
+        $validatorTranslations = array('alphaInvalid' => 'Validator message');
+        $validatorTranslate = new Zend_Translate('array', $validatorTranslations);
+        Zend_Validate_Abstract::setDefaultTranslator($validatorTranslate);
+        
+        $elementTranslations = array('alphaInvalid' => 'Element message');
+        $elementTranslate = new Zend_Translate('array', $elementTranslations);
+        
+        $this->element->addValidator('Alpha');
+        $this->element->setTranslator($elementTranslate);
+        $this->assertFalse($this->element->isValid(123));
+        $messages = $this->element->getMessages();
+        $this->assertEquals('Element message', $messages['alphaInvalid']);
+    }
+
+    /**
+     * @group ZF-9275
+     */
+    public function testValidatorsDefaultTranslatorDoesntOverrideFormsDefaultTranslator()
+    {
+        $formTranslations = array('alphaInvalid' => 'Form message');
+        $formTranslate = new Zend_Translate('array', $formTranslations);
+        Zend_Form::setDefaultTranslator($formTranslate);
+        
+        $validatorTranslations = array('alphaInvalid' => 'Validator message');
+        $validatorTranslate = new Zend_Translate('array', $validatorTranslations);
+        Zend_Validate_Abstract::setDefaultTranslator($validatorTranslate);
+        
+        // the default validate translator should beat the registry one
+        $this->element->addValidator('Alpha');
+        $this->assertFalse($this->element->isValid(123));
+        $messages = $this->element->getMessages();
+        $this->assertEquals('Form message', $messages['alphaInvalid']);
+    }
+    
+    /**
+     * @group ZF-9275
+     */
+    public function testElementsTranslatorDoesntOverrideValidatorsDirectlyAttachedTranslator()
+    {
+        $elementTranslations = array('alphaInvalid' => 'Element message');
+        $elementTranslate = new Zend_Translate('array', $elementTranslations);
+        
+        $validatorTranslations = array('alphaInvalid' => 'Direct validator message');
+        $validatorTranslate = new Zend_Translate('array', $validatorTranslations);
+        
+        $validator = new Zend_Validate_Alpha();
+        $validator->setTranslator($validatorTranslate);
+        $this->element->addValidator($validator);
+        $this->assertFalse($this->element->isValid(123));
+        $messages = $this->element->getMessages();
+        $this->assertEquals('Direct validator message', $messages['alphaInvalid']);
+    }    
 }
 
 class Zend_Form_ElementTest_Decorator extends Zend_Form_Decorator_Abstract