xref: /dokuwiki/_test/tests/inc/events_nested.test.php (revision 772c924913365ea9be90e667f6d06cdcef3ab4ec)
1*772c9249SMichael Hamann<?php
2*772c9249SMichael Hamann
3*772c9249SMichael Hamann/**
4*772c9249SMichael Hamann * This tests if event handlers can trigger the same event again.
5*772c9249SMichael Hamann * This is used by plugins that modify cache handling and use metadata
6*772c9249SMichael Hamann * for checking cache validity which triggers another cache use event.
7*772c9249SMichael Hamann */
8*772c9249SMichael Hamannclass events_nested_test extends DokuWikiTest {
9*772c9249SMichael Hamann    function test_nested_events() {
10*772c9249SMichael Hamann        global $EVENT_HANDLER;
11*772c9249SMichael Hamann        $firstcount = 0;
12*772c9249SMichael Hamann        $secondcount = 0;
13*772c9249SMichael Hamann
14*772c9249SMichael Hamann        $EVENT_HANDLER->register_hook('NESTED_EVENT', 'BEFORE', null,
15*772c9249SMichael Hamann            function() use (&$firstcount) {
16*772c9249SMichael Hamann                $firstcount++;
17*772c9249SMichael Hamann                if ($firstcount == 1) {
18*772c9249SMichael Hamann                    $param = array();
19*772c9249SMichael Hamann                    trigger_event('NESTED_EVENT', $param);
20*772c9249SMichael Hamann                }
21*772c9249SMichael Hamann            }
22*772c9249SMichael Hamann        );
23*772c9249SMichael Hamann
24*772c9249SMichael Hamann        $EVENT_HANDLER->register_hook('NESTED_EVENT', 'BEFORE', null,
25*772c9249SMichael Hamann            function() use (&$secondcount) {
26*772c9249SMichael Hamann                $secondcount++;
27*772c9249SMichael Hamann            }
28*772c9249SMichael Hamann        );
29*772c9249SMichael Hamann
30*772c9249SMichael Hamann        $param = array();
31*772c9249SMichael Hamann        trigger_event('NESTED_EVENT', $param);
32*772c9249SMichael Hamann
33*772c9249SMichael Hamann        $this->assertEquals(2, $firstcount);
34*772c9249SMichael Hamann        $this->assertEquals(2, $secondcount);
35*772c9249SMichael Hamann    }
36*772c9249SMichael Hamann}
37