@@ -424,6 +424,83 @@ public function testPullMessagesWithDefaultLocale()
424
424
, file_get_contents ($ filenameFr ));
425
425
}
426
426
427
+ public function testPullMessagesMultipleDomains ()
428
+ {
429
+ $ arrayLoader = new ArrayLoader ();
430
+ $ filenameMessages = $ this ->createFile (['note ' => 'NOTE ' ]);
431
+ $ filenameDomain = $ this ->createFile (['note ' => 'NOTE ' ], 'en ' , 'domain.%locale%.xlf ' );
432
+ $ locales = ['en ' ];
433
+ $ domains = ['messages ' , 'domain ' ];
434
+
435
+ $ providerReadTranslatorBag = new TranslatorBag ();
436
+ $ providerReadTranslatorBag ->addCatalogue ($ arrayLoader ->load ([
437
+ 'new.foo ' => 'newFoo ' ,
438
+ ], 'en ' ));
439
+
440
+ $ providerReadTranslatorBag ->addCatalogue ($ arrayLoader ->load ([
441
+ 'new.foo ' => 'newFoo ' ,
442
+ ], 'en ' ,
443
+ 'domain '
444
+ ));
445
+
446
+ $ provider = $ this ->createMock (ProviderInterface::class);
447
+ $ provider ->expects ($ this ->once ())
448
+ ->method ('read ' )
449
+ ->with ($ domains , $ locales )
450
+ ->willReturn ($ providerReadTranslatorBag );
451
+
452
+ $ provider ->expects ($ this ->once ())
453
+ ->method ('__toString ' )
454
+ ->willReturn ('null://default ' );
455
+
456
+ $ tester = $ this ->createCommandTester ($ provider , $ locales , $ domains , 'en ' );
457
+ $ tester ->execute (['--locales ' => ['en ' ], '--domains ' => ['messages ' , 'domain ' ]]);
458
+
459
+ $ this ->assertStringContainsString ('[OK] New translations from "null" has been written locally (for "en" locale(s), and "messages, domain" domain(s)). ' , trim ($ tester ->getDisplay ()));
460
+ $ this ->assertXmlStringEqualsXmlString (<<<XLIFF
461
+ <?xml version="1.0"?>
462
+ <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
463
+ <file source-language="en" target-language="en" datatype="plaintext" original="file.ext">
464
+ <header>
465
+ <tool tool-id="symfony" tool-name="Symfony"/>
466
+ </header>
467
+ <body>
468
+ <trans-unit id="994ixRL" resname="new.foo">
469
+ <source>new.foo</source>
470
+ <target>newFoo</target>
471
+ </trans-unit>
472
+ <trans-unit id="7bRlYkK" resname="note">
473
+ <source>note</source>
474
+ <target>NOTE</target>
475
+ </trans-unit>
476
+ </body>
477
+ </file>
478
+ </xliff>
479
+ XLIFF
480
+ , file_get_contents ($ filenameMessages ));
481
+ $ this ->assertXmlStringEqualsXmlString (<<<XLIFF
482
+ <?xml version="1.0"?>
483
+ <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
484
+ <file source-language="en" target-language="en" datatype="plaintext" original="file.ext">
485
+ <header>
486
+ <tool tool-id="symfony" tool-name="Symfony"/>
487
+ </header>
488
+ <body>
489
+ <trans-unit id="994ixRL" resname="new.foo">
490
+ <source>new.foo</source>
491
+ <target>newFoo</target>
492
+ </trans-unit>
493
+ <trans-unit id="7bRlYkK" resname="note">
494
+ <source>note</source>
495
+ <target>NOTE</target>
496
+ </trans-unit>
497
+ </body>
498
+ </file>
499
+ </xliff>
500
+ XLIFF
501
+ , file_get_contents ($ filenameDomain ));
502
+ }
503
+
427
504
private function createCommandTester (ProviderInterface $ provider , array $ locales = ['en ' ], array $ domains = ['messages ' ], $ defaultLocale = 'en ' ): CommandTester
428
505
{
429
506
$ writer = new TranslationWriter ();
0 commit comments