xref: /dokuwiki/_test/tests/inc/events_nested.test.php (revision cbb44eabe033d70affb048ec0daf4e579e09dd20)
1772c9249SMichael Hamann<?php
2772c9249SMichael Hamann
3*cbb44eabSAndreas Gohruse dokuwiki\Extension\Event;
4*cbb44eabSAndreas Gohr
5772c9249SMichael Hamann/**
6772c9249SMichael Hamann * This tests if event handlers can trigger the same event again.
7772c9249SMichael Hamann * This is used by plugins that modify cache handling and use metadata
8772c9249SMichael Hamann * for checking cache validity which triggers another cache use event.
9772c9249SMichael Hamann */
10772c9249SMichael Hamannclass events_nested_test extends DokuWikiTest {
11772c9249SMichael Hamann    function test_nested_events() {
12772c9249SMichael Hamann        global $EVENT_HANDLER;
13772c9249SMichael Hamann        $firstcount = 0;
14772c9249SMichael Hamann        $secondcount = 0;
15772c9249SMichael Hamann
16772c9249SMichael Hamann        $EVENT_HANDLER->register_hook('NESTED_EVENT', 'BEFORE', null,
17772c9249SMichael Hamann            function() use (&$firstcount) {
18772c9249SMichael Hamann                $firstcount++;
19772c9249SMichael Hamann                if ($firstcount == 1) {
20772c9249SMichael Hamann                    $param = array();
21*cbb44eabSAndreas Gohr                    Event::createAndTrigger('NESTED_EVENT', $param);
22772c9249SMichael Hamann                }
23772c9249SMichael Hamann            }
24772c9249SMichael Hamann        );
25772c9249SMichael Hamann
26772c9249SMichael Hamann        $EVENT_HANDLER->register_hook('NESTED_EVENT', 'BEFORE', null,
27772c9249SMichael Hamann            function() use (&$secondcount) {
28772c9249SMichael Hamann                $secondcount++;
29772c9249SMichael Hamann            }
30772c9249SMichael Hamann        );
31772c9249SMichael Hamann
32772c9249SMichael Hamann        $param = array();
33*cbb44eabSAndreas Gohr        Event::createAndTrigger('NESTED_EVENT', $param);
34772c9249SMichael Hamann
35772c9249SMichael Hamann        $this->assertEquals(2, $firstcount);
36772c9249SMichael Hamann        $this->assertEquals(2, $secondcount);
37772c9249SMichael Hamann    }
38772c9249SMichael Hamann}
39