@@ -424,6 +424,83 @@ public function testPullMessagesWithDefaultLocale()
424424 , file_get_contents ($ filenameFr ));
425425 }
426426
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+
427504 private function createCommandTester (ProviderInterface $ provider , array $ locales = ['en ' ], array $ domains = ['messages ' ], $ defaultLocale = 'en ' ): CommandTester
428505 {
429506 $ writer = new TranslationWriter ();
0 commit comments