''], '/^
getContent());
        if (!empty($regexp)) {
            $this->assertRegExp($regexp, $response->getContent());
        }
    }
    public function test_CallNotProvided() {
        $request = new TestRequest();
        $response = $request->post([], '/lib/exe/ajax.php');
        $this->assertEquals('', $response->getContent());
    }
    public function test_UnknownCall() {
        $call = 'unknownCALL';
        $request = new TestRequest();
        $response = $request->post(['call'=> $call], '/lib/exe/ajax.php');
        $this->assertEquals("AJAX call '$call' unknown!\n", $response->getContent());
    }
    public function test_EventOnUnknownCall() {
        global $EVENT_HANDLER;
        $call = 'unknownCALL';
        $request = new TestRequest();
        // referenced data from event hook
        $hookTriggered = false;
        $eventDataTriggered = '';
        $dataTriggered = '';
        $postTriggered = '';
        $hookTriggered_AFTER = false;
        $eventDataTriggered_AFTER  = '';
        $dataTriggered_AFTER  = '';
        $postTriggered_AFTER  = '';
        $EVENT_HANDLER->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', null,
            function($event, $data) use (&$hookTriggered, &$dataTriggered, &$eventDataTriggered, &$postTriggered) {
                /** @var Doku_Event $event */
                $hookTriggered = true;
                $dataTriggered = $data;
                $eventDataTriggered = $event->data;
                $postTriggered = $GLOBALS['INPUT']->post->str('q');
                $event->preventDefault();
                $event->stopPropagation();
                echo "captured event BEFORE\n";
            }, 'some passed data'
        );
        $EVENT_HANDLER->register_hook('AJAX_CALL_UNKNOWN', 'AFTER', null,
            function($event, $data) use (&$hookTriggered_AFTER , &$dataTriggered_AFTER , &$eventDataTriggered_AFTER , &$postTriggered_AFTER ) {
                /** @var Doku_Event $event */
                $hookTriggered_AFTER  = true;
                $dataTriggered_AFTER  = $data;
                $eventDataTriggered_AFTER  = $event->data;
                $postTriggered_AFTER  = $GLOBALS['INPUT']->post->str('q');
                $event->preventDefault();
                $event->stopPropagation();
                echo "captured event AFTER";
            }, 'some passed data AFTER'
        );
        $response = $request->post(['call'=> $call, 'q' => 'some-post-param'], '/lib/exe/ajax.php');
        // BEFORE
        $this->assertEquals(true, $hookTriggered, 'Testing plugin did not trigger!');
        $this->assertEquals('some passed data', $dataTriggered);
        $this->assertEquals($call, $eventDataTriggered, 'Must pass call name as event data');
        $this->assertEquals('some-post-param', $postTriggered);
        // AFTER
        $this->assertEquals(true, $hookTriggered_AFTER, 'Testing plugin did not trigger!');
        $this->assertEquals('some passed data AFTER', $dataTriggered_AFTER);
        $this->assertEquals($call, $eventDataTriggered_AFTER, 'Must pass call name as event data');
        $this->assertEquals('some-post-param', $postTriggered_AFTER);
        //output
        $this->assertEquals("captured event BEFORE\ncaptured event AFTER", $response->getContent());
    }
}