Kaynağa Gözat

Fixes #103 - Zend_Application - add Log to Translate, Cachemanager

Thanks for the PR to @croensch!
I fixed only an unit test.
Frank Brückner 12 yıl önce
ebeveyn
işleme
6d442edd30

+ 9 - 0
library/Zend/Application/Resource/Cachemanager.php

@@ -60,6 +60,15 @@ class Zend_Application_Resource_Cachemanager extends Zend_Application_Resource_R
 
             $options = $this->getOptions();
             foreach ($options as $key => $value) {
+                // Logger
+                if (isset($value['frontend']['options']['logger'])) {
+                    $logger = $value['frontend']['options']['logger'];
+                    if (is_array($logger)) {
+                        $value['frontend']['options']['logger'] = Zend_Log::factory($logger);
+                    }
+                }
+
+                // Cache templates
                 if ($this->_manager->hasCacheTemplate($key)) {
                     $this->_manager->setTemplateOptions($key, $value);
                 } else {

+ 9 - 0
library/Zend/Application/Resource/Translate.php

@@ -86,6 +86,15 @@ class Zend_Application_Resource_Translate extends Zend_Application_Resource_Reso
                 unset($options['data']);
             }
 
+            if (isset($options['log'])) {
+                if (is_array($options['log'])) {
+                    $log = Zend_Log::factory($options['log']);
+                }
+                if ($log instanceof Zend_Log) {
+                    $options['log'] = $log;
+                }
+            }
+
             if (isset($options['options'])) {
                 foreach($options['options'] as $key => $value) {
                     $options[$key] = $value;

+ 32 - 0
tests/Zend/Application/Resource/CacheManagerTest.php

@@ -237,6 +237,38 @@ class Zend_Application_Resource_CacheManagerTest extends PHPUnit_Framework_TestC
         $this->assertTrue($cache->getBackend() instanceof Zend_Cache_Backend_Custom_Naming);
         $this->assertTrue($cache instanceof Zend_Cache_Frontend_CustomNaming);
     }
+
+    /**
+     * @group GH-103
+     */
+    public function testLoggerFactory()
+    {
+        $options = array(
+            'page' => array(
+                'frontend' => array(
+                    'options' => array(
+                        'logging' => true,
+                        'logger'  => array(
+                            new Zend_Log_Writer_Mock()
+                        )
+                    )
+                )
+            )
+        );
+
+        $resource = new Zend_Application_Resource_Cachemanager($options);
+        $resource->setBootstrap($this->bootstrap);
+        $resource->init();
+
+        $page = $resource->getCacheManager()->getCache('page');
+        $page->getBackend()->clean(Zend_Cache::CLEANING_MODE_OLD);
+
+        $event = current($options['page']['frontend']['options']['logger'][0]->events);
+
+        $this->assertTrue(is_array($event));
+        $this->assertTrue(array_key_exists('message', $event));
+        $this->assertContains('Zend_Cache_Backend_Static', $event['message']);
+    }
 }
 
 

+ 49 - 5
tests/Zend/Application/Resource/TranslateTest.php

@@ -39,11 +39,31 @@ require_once 'Zend/Loader/Autoloader.php';
  */
 class Zend_Application_Resource_TranslateTest extends PHPUnit_Framework_TestCase
 {
-    private $_translationOptions = array('data' => array(
-        'message1' => 'message1',
-        'message2' => 'message2',
-        'message3' => 'message3'
-    ));
+    /**
+     * @var array
+     */
+    protected $_translationOptions = array(
+        'data' => array(
+            'message1' => 'message1',
+            'message2' => 'message2',
+            'message3' => 'message3'
+        )
+    );
+
+    /**
+     * @var Zend_Loader_Autoloader
+     */
+    protected $autoloader;
+
+    /**
+     * @var Zend_Application
+     */
+    protected $application;
+
+    /**
+     * @var Zend_Application_Bootstrap_Bootstrap
+     */
+    protected $bootstrap;
 
     public static function main()
     {
@@ -218,6 +238,30 @@ class Zend_Application_Resource_TranslateTest extends PHPUnit_Framework_TestCase
         $resource = new Zend_Application_Resource_Translate($options);
         $translator = $resource->init();
     }
+
+    /**
+     * @group GH-103
+     */
+    public function testLogFactory()
+    {
+        $options                    = $this->_translationOptions;
+        $options['log'][0]          = new Zend_Log_Writer_Mock();
+        $options['logUntranslated'] = true;
+        $options['locale']          = 'en';
+
+        $resource = new Zend_Application_Resource_Translate($options);
+        $resource->setBootstrap($this->bootstrap);
+
+        $resource->init()->translate('untranslated');
+        $event = current($options['log'][0]->events);
+
+        $this->assertTrue(is_array($event));
+        $this->assertTrue(array_key_exists('message', $event));
+        $this->assertEquals(
+            "Untranslated message within 'en': untranslated",
+            $event['message']
+        );
+    }
 }
 
 if (PHPUnit_MAIN_METHOD == 'Zend_Application_Resource_TranslateTest::main') {