4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Translation\Tests\DataCollector;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Translation\DataCollectorTranslator;
16 use Symfony\Component\Translation\DataCollector\TranslationDataCollector;
18 class TranslationDataCollectorTest extends TestCase
20 protected function setUp()
22 if (!class_exists('Symfony\Component\HttpKernel\DataCollector\DataCollector')) {
23 $this->markTestSkipped('The "DataCollector" is not available');
27 public function testCollectEmptyMessages()
29 $translator = $this->getTranslator();
30 $translator->expects($this->any())->method('getCollectedMessages')->will($this->returnValue(array()));
32 $dataCollector = new TranslationDataCollector($translator);
33 $dataCollector->lateCollect();
35 $this->assertEquals(0, $dataCollector->getCountMissings());
36 $this->assertEquals(0, $dataCollector->getCountFallbacks());
37 $this->assertEquals(0, $dataCollector->getCountDefines());
38 $this->assertEquals(array(), $dataCollector->getMessages());
41 public function testCollect()
43 $collectedMessages = array(
46 'translation' => 'foo (en)',
48 'domain' => 'messages',
49 'state' => DataCollectorTranslator::MESSAGE_DEFINED,
50 'parameters' => array(),
51 'transChoiceNumber' => null,
55 'translation' => 'bar (fr)',
57 'domain' => 'messages',
58 'state' => DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK,
59 'parameters' => array(),
60 'transChoiceNumber' => null,
64 'translation' => 'choice',
66 'domain' => 'messages',
67 'state' => DataCollectorTranslator::MESSAGE_MISSING,
68 'parameters' => array('%count%' => 3),
69 'transChoiceNumber' => 3,
73 'translation' => 'choice',
75 'domain' => 'messages',
76 'state' => DataCollectorTranslator::MESSAGE_MISSING,
77 'parameters' => array('%count%' => 3),
78 'transChoiceNumber' => 3,
82 'translation' => 'choice',
84 'domain' => 'messages',
85 'state' => DataCollectorTranslator::MESSAGE_MISSING,
86 'parameters' => array('%count%' => 4, '%foo%' => 'bar'),
87 'transChoiceNumber' => 4,
90 $expectedMessages = array(
93 'translation' => 'foo (en)',
95 'domain' => 'messages',
96 'state' => DataCollectorTranslator::MESSAGE_DEFINED,
98 'parameters' => array(),
99 'transChoiceNumber' => null,
103 'translation' => 'bar (fr)',
105 'domain' => 'messages',
106 'state' => DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK,
108 'parameters' => array(),
109 'transChoiceNumber' => null,
113 'translation' => 'choice',
115 'domain' => 'messages',
116 'state' => DataCollectorTranslator::MESSAGE_MISSING,
118 'parameters' => array(
119 array('%count%' => 3),
120 array('%count%' => 3),
121 array('%count%' => 4, '%foo%' => 'bar'),
123 'transChoiceNumber' => 3,
127 $translator = $this->getTranslator();
128 $translator->expects($this->any())->method('getCollectedMessages')->will($this->returnValue($collectedMessages));
130 $dataCollector = new TranslationDataCollector($translator);
131 $dataCollector->lateCollect();
133 $this->assertEquals(1, $dataCollector->getCountMissings());
134 $this->assertEquals(1, $dataCollector->getCountFallbacks());
135 $this->assertEquals(1, $dataCollector->getCountDefines());
136 $this->assertEquals($expectedMessages, array_values($dataCollector->getMessages()));
139 private function getTranslator()
142 ->getMockBuilder('Symfony\Component\Translation\DataCollectorTranslator')
143 ->disableOriginalConstructor()