8000 TwigBridge] added translation extractor's node visitors tests · symfony/symfony@11b7dbc · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 11b7dbc

Browse files
committed
TwigBridge] added translation extractor's node visitors tests
1 parent 94364da commit 11b7dbc

File tree

3 files changed

+139
-0
lines changed

3 files changed

+139
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
namespace Symfony\Bridge\Twig\Tests\NodeVisitor;
4+
5+
use Symfony\Bridge\Twig\NodeVisitor\TranslationDefaultDomainNodeVisitor;
6+
use Symfony\Bridge\Twig\NodeVisitor\TranslationNodeVisitor;
7+
use Symfony\Bridge\Twig\Tests\TestCase;
8+
9+
class TranslationDefaultDomainNodeVisitorTest extends TestCase
10+
{
11+
private static $message = 'message';
12+
private static $domain = 'domain';
13+
14+
/** @dataProvider getDefaultDomainAssignmentTestData */
15+
public function testDefaultDomainAssignment(\Twig_Node $node)
16+
{
17+
$env = new \Twig_Environment(new \Twig_Loader_String(), array('cache' => false, 'autoescape' => false, 'optimizations' => 0));
18+
19+
$visitor = new TranslationDefaultDomainNodeVisitor();
20+
21+
// visit trans_default_domain tag
22+
$defaultDomain = TwigNodeProvider::getTransDefaultDomainTag('domain');
23+
$visitor->enterNode($defaultDomain, $env);
24+
$visitor->leaveNode($defaultDomain, $env);
25+
26+
// visit tested node
27+
$enteredNode = $visitor->enterNode($node, $env);
28+
$leavedNode = $visitor->leaveNode($node, $env);
29+
$this->assertSame($node, $enteredNode);
30+
$this->assertSame($node, $leavedNode);
31+
32+
// extracting tested node messages
33+
$visitor = new TranslationNodeVisitor();
34+
$visitor->enable();
35+
$visitor->enterNode($node, $env);
36+
$visitor->leaveNode($node, $env);
37+
38+
$this->assertEquals(array(array(self::$message, self::$domain)), $visitor->getMessages());
39+
}
40+
41+
public function getDefaultDomainAssignmentTestData()
42+
{
43+
return array(
44+
array(TwigNodeProvider::getTransFilter(self::$message, self::$domain)),
45+
array(TwigNodeProvider::getTransChoiceFilter(self::$message, self::$domain)),
46+
array(TwigNodeProvider::getTransTag(self::$message, self::$domain)),
47+
);
48+
}
49+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace Symfony\Bridge\Twig\Tests\NodeVisitor;
4+
5+
use Symfony\Bridge\Twig\NodeVisitor\TranslationNodeVisitor;
6+
use Symfony\Bridge\Twig\Tests\TestCase;
7+
8+
class TranslationNodeVisitorTest extends TestCase
9+
{
10+
/** @dataProvider getMessagesExtractionTestData */
11+
public function testMessagesExtraction(\Twig_Node $node, array $expectedMessages)
12+
{
13+
$env = new \Twig_Environment(new \Twig_Loader_String(), array('cache' => false, 'autoescape' => false, 'optimizations' => 0));
14+
$visitor = new TranslationNodeVisitor();
15+
$visitor->enable();
16+
$visitor->enterNode($node, $env);
17+
$visitor->leaveNode($node, $env);
18+
$this->assertEquals($expectedMessages, $visitor->getMessages());
19+
}
20+
21+
public function getMessagesExtractionTestData()
22+
{
23+
$message = 'new key';
24+
$domain = 'domain';
25+
26+
return array(
27+
array(TwigNodeProvider::getTransFilter($message), array(array($message, null))),
28+
array(TwigNodeProvider::getTransChoiceFilter($message), array(array($message, null))),
29+
array(TwigNodeProvider::getTransTag($message), array(array($message, 'messages'))),
30+
array(TwigNodeProvider::getTransFilter($message, $domain), array(array($message, $domain))),
31+
array(TwigNodeProvider::getTransChoiceFilter($message, $domain), array(array($message, $domain))),
32+
array(TwigNodeProvider::getTransTag($message, $domain), array(array($message, $domain))),
33+
);
34+
}
35+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
namespace Symfony\Bridge\Twig\Tests\NodeVisitor;
4+
5+
use Symfony\Bridge\Twig\Node\TransDefaultDomainNode;
6+
use Symfony\Bridge\Twig\Node\TransNode;
7+
8+
class TwigNodeProvider
9+
{
10+
public static function getTransFilter($message, $domain = null)
11+
{
12+
$arguments = $domain ? array(
13+
new \Twig_Node_Expression_Array(array(), 0),
14+
new \Twig_Node_Expression_Constant($domain, 0),
15+
) : array();
16+
17+
return new \Twig_Node_Expression_Filter(
18+
new \Twig_Node_Expression_Constant($message, 0),
19+
new \Twig_Node_Expression_Constant('trans', 0),
20+
new \Twig_Node($arguments),
21+
0
22+
);
23+
}
24+
25+
public static function getTransChoiceFilter($message, $domain = null)
26+
{
27+
$arguments = $domain ? array(
28+
new \Twig_Node_Expression_Constant(0, 0),
29+
new \Twig_Node_Expression_Array(array(), 0),
30+
new \Twig_Node_Expression_Constant($domain, 0),
31+
) : array();
32+
33+
return new \Twig_Node_Expression_Filter(
34+
new \Twig_Node_Expression_Constant($message, 0),
35+
new \Twig_Node_Expression_Constant('transchoice', 0),
36+
new \Twig_Node($arguments),
37+
0
38+
);
39+
}
40+
41+
public static function getTransTag($message, $domain = null)
42+
{
43+
return new TransNode(
44+
new \Twig_Node_Body(array(), array('data' => $message)),
45+
$domain ? new \Twig_Node_Expression_Constant($domain, 0) : null
46+
);
47+
}
48+
49+
public static function getTransDefaultDomainTag($domain)
50+
{
51+
return new TransDefaultDomainNode(
52+
new \Twig_Node_Expression_Constant($domain, 0)
53+
);
54+
}
55+
}

0 commit comments

Comments
 (0)
0