12
12
namespace Symfony \Bundle \FrameworkBundle \Tests \Translation ;
13
13
14
14
use Symfony \Bundle \FrameworkBundle \Translation \Translator ;
15
+ use Symfony \Component \Translation \Loader \ArrayLoader ;
15
16
use Symfony \Component \Translation \MessageCatalogue ;
16
17
use Symfony \Component \Filesystem \Filesystem ;
17
18
use Symfony \Component \Translation \MessageSelector ;
@@ -77,6 +78,8 @@ public function testTransWithCaching()
77
78
78
79
// do it another time as the cache is primed now
79
80
$ loader = $ this ->getMock ('Symfony\Component\Translation\Loader\LoaderInterface ' );
81
+ $ loader ->expects ($ this ->never ())->method ('load ' );
82
+
80
83
$ translator = $ this ->getTranslator ($ loader , array ('cache_dir ' => $ this ->tmpDir ));
81
84
$ translator ->setLocale ('fr ' );
82
85
$ translator ->setFallbackLocales (array ('en ' , 'es ' , 'pt-PT ' , 'pt_BR ' , 'fr.UTF-8 ' , 'sr@latin ' ));
@@ -90,6 +93,27 @@ public function testTransWithCaching()
90
93
$ this ->assertEquals ('other choice 1 (PT-BR) ' , $ translator ->transChoice ('other choice ' , 1 ));
91
94
$ this ->assertEquals ('foobarbaz (fr.UTF-8) ' , $ translator ->trans ('foobarbaz ' ));
92
95
$ this ->assertEquals ('foobarbax (sr@latin) ' , $ translator ->trans ('foobarbax ' ));
96
+
97
+ // refresh cache again when resource file resources file change
98
+ $ resource = $ this ->getMock ('Symfony\Component\Config\Resource\ResourceInterface ' );
99
+ $ resource
100
+ ->expects ($ this ->at (0 ))
101
+ ->method ('isFresh ' )
102
+ ->will ($ this ->returnValue (false ))
103
+ ;
104
+ $ catalogue = $ this ->getCatalogue ('fr ' , array ('foo ' => 'foo fresh ' ));
105
+ $ catalogue ->addResource ($ resource );
106
+
107
+ $ loader = $ this ->getMock ('Symfony\Component\Translation\Loader\LoaderInterface ' );
108
+ $ loader
109
+ ->expects ($ this ->at (0 ))
110
+ ->method ('load ' )
111
+ ->will ($ this ->returnValue ($ catalogue ))
112
+ ;
113
+
114
+ $ translator = $ this ->getTranslator ($ loader , array ('cache_dir ' => $ this ->tmpDir ));
115
+ $ translator ->setLocale ('fr ' );
116
+ $ this ->assertEquals ('foo fresh ' , $ translator ->trans ('foo ' ));
93
117
}
94
118
95
119
public function testTransWithCachingWithInvalidLocale ()
@@ -227,12 +251,7 @@ protected function getContainer($loader)
227
251
228
252
public function getTranslator ($ loader , $ options = array (), $ loaderFomat = 'loader ' , $ translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' )
229
253
{
230
- $ translator = new $ translatorClass (
231
- $ this ->getContainer ($ loader ),
232
- new MessageSelector (),
233
- array ($ loaderFomat => array ($ loaderFomat )),
234
- $ options
235
- );
254
+ $ translator = $ this ->createTranslator ($ loader , $ options , $ translatorClass , $ loaderFomat );
236
255
237
256
if ('loader ' === $ loaderFomat ) {
238
257
$ translator ->addResource ('loader ' , 'foo ' , 'fr ' );
@@ -267,6 +286,16 @@ public function testWarmup()
267
286
$ translator ->warmup ($ this ->tmpDir );
268
287
$ this ->assertTrue (file_exists ($ this ->tmpDir .'/catalogue.fr. ' .$ catalogueHash .'.php ' ));
269
288
}
289
+
290
+ private function createTranslator ($ loader , $ options , $ translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , $ loaderFomat = 'loader ' )
291
+ {
292
+ return new $ translatorClass (
293
+ $ this ->getContainer ($ loader ),
294
+ new MessageSelector (),
295
+ array ($ loaderFomat => array ($ loaderFomat )),
296
+ $ options
297
+ );
298
+ }
270
299
}
271
300
272
301
class TranslatorWithInvalidLocale extends Translator
0 commit comments