Skip to content

Commit ce71a93

Browse files
committed
Add tests for \Jfcherng\Diff\Renderer\AbstractRenderer::renderArray
Signed-off-by: Jack Cherng <[email protected]>
1 parent f497539 commit ce71a93

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

tests/Renderer/RendererTest.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
namespace Jfcherng\Diff\Test\Renderer;
66

77
use Jfcherng\Diff\DiffHelper;
8+
use Jfcherng\Diff\Exception\UnsupportedFunctionException;
9+
use Jfcherng\Diff\Factory\RendererFactory;
810
use Jfcherng\Diff\Renderer\AbstractRenderer;
911
use Jfcherng\Diff\Utility\Language;
1012
use PHPUnit\Framework\TestCase;
@@ -86,4 +88,64 @@ public function testSetOptionsWithInvalidResultForIdenticals(): void
8688
['resultForIdenticals' => 50]
8789
);
8890
}
91+
92+
/**
93+
* Test HTML renderers should be able to render with JSON renderer's result.
94+
*
95+
* @covers \Jfcherng\Diff\Renderer\AbstractRenderer::renderArray
96+
*/
97+
public function testHtmlRendererRenderWithResultFromJsonRenderer(): void
98+
{
99+
$htmlRenderer = RendererFactory::make('Inline');
100+
101+
// test "outputTagAsString" is false
102+
$jsonResult = DiffHelper::calculate(
103+
'old marker',
104+
'new marker',
105+
'Json',
106+
[],
107+
['outputTagAsString' => false]
108+
);
109+
$jsonArray = \json_decode($jsonResult, true);
110+
$inlineResult = $htmlRenderer->renderArray($jsonArray);
111+
112+
static::assertStringContainsString(
113+
'><del>old</del> marker<',
114+
$inlineResult,
115+
"HTML renderers should be able to render with JSON result. ('outputTagAsString' => false)"
116+
);
117+
118+
// test "outputTagAsString" is true
119+
$jsonResult = DiffHelper::calculate(
120+
'old marker',
121+
'new marker',
122+
'Json',
123+
[],
124+
['outputTagAsString' => true]
125+
);
126+
$jsonArray = \json_decode($jsonResult, true);
127+
$inlineResult = $htmlRenderer->renderArray($jsonArray);
128+
129+
static::assertStringContainsString(
130+
'><del>old</del> marker<',
131+
$inlineResult,
132+
"HTML renderers should be able to render with JSON result. ('outputTagAsString' => true)"
133+
);
134+
}
135+
136+
/**
137+
* Test text renderers are not able to render with JSON renderer's result.
138+
*
139+
* @covers \Jfcherng\Diff\Renderer\AbstractRenderer::renderArray
140+
*/
141+
public function testTextRendererRenderWithResultFromJsonRenderer(): void
142+
{
143+
static::expectException(UnsupportedFunctionException::class);
144+
145+
$jsonResult = DiffHelper::calculate('old marker', 'new marker', 'Json');
146+
$jsonArray = \json_decode($jsonResult, true);
147+
148+
$textRenderer = RendererFactory::make('Unified');
149+
$UnifiedResult = $textRenderer->renderArray($jsonArray);
150+
}
89151
}

0 commit comments

Comments
 (0)