Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 58
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_functional_subforum_test
0.00% covered (danger)
0.00%
0 / 58
0.00% covered (danger)
0.00%
0 / 4
42
0.00% covered (danger)
0.00%
0 / 1
 test_setup_forums
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 1
2
 test_display_subforums
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 test_display_subforums_limit
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
2
 get_forum_id
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 *
4 * This file is part of the phpBB Forum Software package.
5 *
6 * @copyright (c) phpBB Limited <https://www.phpbb.com>
7 * @license GNU General Public License, version 2 (GPL-2.0)
8 *
9 * For full copyright and license information, please see
10 * the docs/CREDITS.txt file.
11 *
12 */
13
14/**
15 * @group functional
16 */
17class phpbb_functional_subforum_test extends phpbb_functional_test_case
18{
19    public function test_setup_forums()
20    {
21        $this->login();
22        $this->admin_login();
23
24        $forum_name = 'Subforum Test #1';
25        $crawler = self::request('GET', "adm/index.php?i=acp_forums&mode=manage&sid={$this->sid}");
26        $form = $crawler->selectButton('addforum')->form([
27            'forum_name'    => $forum_name,
28        ]);
29        $crawler = self::submit($form);
30        $form = $crawler->selectButton('update')->form([
31            'forum_perm_from'    => 2,
32        ]);
33        self::submit($form);
34        $forum_id = self::get_forum_id($forum_name);
35
36        // 'Feeds #1.1' is a sub-forum of 'Feeds #1'
37        $forum_name = 'Subforum Test #1.1';
38        $crawler = self::request('GET', "adm/index.php?i=acp_forums&sid={$this->sid}&icat=6&mode=manage&parent_id={$forum_id}");
39        $form = $crawler->selectButton('addforum')->form([
40            'forum_name'    => $forum_name,
41        ]);
42        $crawler = self::submit($form);
43        $form = $crawler->selectButton('update')->form([
44            'forum_perm_from'    => 2,
45        ]);
46        self::submit($form);
47        $forum_id = self::get_forum_id('Subforum Test #1.1');
48
49        // 'Feeds #news' will be used for feed.php?mode=news
50        $crawler = self::request('GET', "adm/index.php?i=acp_forums&sid={$this->sid}&icat=6&mode=manage&parent_id={$forum_id}");
51        $form = $crawler->selectButton('addforum')->form([
52            'forum_name'    => 'Subforum Test #1.1.1',
53        ]);
54        $crawler = self::submit($form);
55        $form = $crawler->selectButton('update')->form([
56            'forum_perm_from'    => 2,
57        ]);
58        self::submit($form);
59    }
60
61    /**
62     * @depends test_setup_forums
63     */
64    public function test_display_subforums()
65    {
66        $crawler = self::request('GET', "index.php?sid={$this->sid}");
67        $this->assertStringContainsString('Subforum Test #1.1', $crawler->html());
68        $this->assertStringContainsString('Subforum Test #1.1.1', $crawler->html());
69    }
70
71    /**
72     * @depends test_display_subforums
73     */
74    public function test_display_subforums_limit()
75    {
76        $this->login();
77        $this->admin_login();
78
79        // Disable listing subforums
80        $forum_id = $this->get_forum_id('Subforum Test #1');
81        $crawler = self::request('GET', "adm/index.php?i=acp_forums&sid={$this->sid}&icat=7&mode=manage&parent_id=0&f={$forum_id}&action=edit");
82        $form = $crawler->selectButton('submit')->form([
83            'display_subforum_limit' => 1,
84        ]);
85        self::submit($form);
86
87        $crawler = self::request('GET', "index.php?sid={$this->sid}");
88        $this->assertStringContainsString('Subforum Test #1.1', $crawler->html());
89        $this->assertStringNotContainsString('Subforum Test #1.1.1', $crawler->html());
90    }
91
92    protected function get_forum_id($forum_name)
93    {
94        $forum_id = 0;
95
96        $sql = 'SELECT *
97                FROM ' . FORUMS_TABLE . '
98                WHERE ' . $this->db->sql_in_set('forum_name', $forum_name);
99        $result = $this->db->sql_query($sql);
100        while ($row = $this->db->sql_fetchrow($result))
101        {
102            if ($row['forum_name'] == $forum_name)
103            {
104                $forum_id = (int) $row['forum_id'];
105                break;
106            }
107        }
108        $this->db->sql_freeresult($result);
109
110        return $forum_id;
111    }
112}