diff --git a/src/Traits/TPresenter.php b/src/Traits/TPresenter.php index c60facf..2653e8c 100644 --- a/src/Traits/TPresenter.php +++ b/src/Traits/TPresenter.php @@ -149,6 +149,21 @@ protected function checkSignal($destination, $signal, $params = [], $post = []) ] + $params, $post); } + protected function checkAjaxSignal($destination, $signal, $params = [], $post = []) + { + $this->__testbench_ajaxMode = TRUE; + $response = $this->check($destination, [ + 'do' => $signal, + ] + $params, $post); + Assert::true($this->__testbench_presenter->isAjax()); + if (!$this->__testbench_exception) { + Assert::same(200, $this->getReturnCode()); + Assert::type('Nette\Application\Responses\JsonResponse', $response); + } + $this->__testbench_ajaxMode = FALSE; + return $response; + } + /** * @param string $destination fully qualified presenter name (module:module:presenter) * @param string $path diff --git a/tests/Scaffold/Presenter.expected b/tests/Scaffold/Presenter.expected index 9a87c79..c0b55ae 100644 --- a/tests/Scaffold/Presenter.expected +++ b/tests/Scaffold/Presenter.expected @@ -73,6 +73,12 @@ class PresenterPresenterTest extends \Tester\TestCase } + public function testHandleAjaxSignal() + { + $this->checkSignal('Presenter:', 'ajaxSignal'); + } + + public function testCreateComponentForm1() { $this->checkForm('Presenter:', 'form1', [ diff --git a/tests/Traits/TPresenterTest.phpt b/tests/Traits/TPresenterTest.phpt index f96cc26..6dec311 100644 --- a/tests/Traits/TPresenterTest.phpt +++ b/tests/Traits/TPresenterTest.phpt @@ -228,6 +228,13 @@ class TPresenterTest extends \Testbench\CustomPresenterTestCase $this->checkSignal('Presenter:default', 'signal'); } + public function testAjaxSignal() + { + /** @var \Nette\Application\Responses\JsonResponse $response */ + $response = $this->checkAjaxSignal('Presenter:default', 'ajaxSignal'); + Assert::same(['ok'], $response->getPayload()); + } + public function testFormEnhanced() { $this->checkForm('Presenter:default', 'form1', [ diff --git a/tests/_helpers/presenters/PresenterPresenter.php b/tests/_helpers/presenters/PresenterPresenter.php index 7230eb5..f079aba 100644 --- a/tests/_helpers/presenters/PresenterPresenter.php +++ b/tests/_helpers/presenters/PresenterPresenter.php @@ -144,4 +144,9 @@ public function handleSignal() $this->redirect('this'); } + public function handleAjaxSignal() + { + $this->sendJson(['ok']); + } + }