From a2c1e667e0b8cc46c4a1ec8921f56cceb729a0d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20V=C3=A1clav=C3=ADk?= Date: Mon, 7 Nov 2016 08:21:17 +0100 Subject: [PATCH] TComponent: add ability to send parameters to the render method --- src/Traits/TComponent.php | 4 ++-- tests/Traits/TComponentTest.phpt | 21 +++++++++++++++++++ .../components/ComponentWithParameters.php | 16 ++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 tests/_helpers/components/ComponentWithParameters.php diff --git a/src/Traits/TComponent.php b/src/Traits/TComponent.php index 1f72a3e..c06a2cc 100644 --- a/src/Traits/TComponent.php +++ b/src/Traits/TComponent.php @@ -34,13 +34,13 @@ protected function attachToPresenter(IComponent $component, $name = NULL) $this->__testbench_presenterMock->run(new Mocks\ApplicationRequestMock); } - protected function checkRenderOutput(IComponent $control, $expected) + protected function checkRenderOutput(IComponent $control, $expected, array $renderParameters = []) { if (!$control->getParent()) { $this->attachToPresenter($control); } ob_start(); - $control->render(); + $control->render(...$renderParameters); if (is_file($expected)) { \Tester\Assert::matchFile($expected, ob_get_clean()); } else { diff --git a/tests/Traits/TComponentTest.phpt b/tests/Traits/TComponentTest.phpt index cfdca77..6402f94 100644 --- a/tests/Traits/TComponentTest.phpt +++ b/tests/Traits/TComponentTest.phpt @@ -31,6 +31,27 @@ class TComponentTest extends \Tester\TestCase $this->checkRenderOutput($control, __DIR__ . '/Component.expected'); } + /** + * @see vendor/nette/application/tests/Bridges.Latte/UIMacros.control.2.phpt + */ + public function testRenderWithParametersNetteCompatibility() { + $latte = new \Latte\Engine; + $latte->setLoader(new \Latte\Loaders\StringLoader); + \Nette\Bridges\ApplicationLatte\UIMacros::install($latte->getCompiler()); + $latte->addProvider('uiControl', new \ComponentWithParameters); + + Assert::same('["var1"]', $latte->renderToString('{control cwp var1}')); + Assert::same('["var1",1,2]', $latte->renderToString('{control cwp var1, 1, 2}')); + Assert::same('[{"var1":5,"0":1,"1":2}]', $latte->renderToString('{control cwp var1 => 5, 1, 2}')); + } + + public function testRenderWithParameters() + { + $control = new \ComponentWithParameters; + $this->checkRenderOutput($control, '[1]', [1]); + $this->checkRenderOutput($control, '[1,"2"]', [1, '2']); + } + public function testRenderWithExplicitAttach() { $this->attachToPresenter($control = new \Component); diff --git a/tests/_helpers/components/ComponentWithParameters.php b/tests/_helpers/components/ComponentWithParameters.php new file mode 100644 index 0000000..4888ec6 --- /dev/null +++ b/tests/_helpers/components/ComponentWithParameters.php @@ -0,0 +1,16 @@ +