Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
21.21% covered (danger)
21.21%
14 / 66
50.00% covered (danger)
50.00%
3 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_tests_tree_nestedset_forum_add_remove_test
21.21% covered (danger)
21.21%
14 / 66
50.00% covered (danger)
50.00%
3 / 6
23.61
0.00% covered (danger)
0.00%
0 / 1
 delete_data
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 1
2
 test_delete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 delete_throws_data
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 test_delete_throws
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 insert_data
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 1
2
 test_insert
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
1
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
14require_once __DIR__ . '/nestedset_forum_base.php';
15
16class phpbb_tests_tree_nestedset_forum_add_remove_test extends phpbb_tests_tree_nestedset_forum_base
17{
18    public static function delete_data()
19    {
20        return array(
21            array(1, array(1, 2, 3), array(
22                array('forum_id' => 4, 'parent_id' => 0, 'left_id' => 1, 'right_id' => 6),
23                array('forum_id' => 5, 'parent_id' => 4, 'left_id' => 2, 'right_id' => 5),
24                array('forum_id' => 6, 'parent_id' => 5, 'left_id' => 3, 'right_id' => 4),
25                array('forum_id' => 7, 'parent_id' => 0, 'left_id' => 7, 'right_id' => 16),
26                array('forum_id' => 8, 'parent_id' => 7, 'left_id' => 8, 'right_id' => 9),
27                array('forum_id' => 9, 'parent_id' => 7, 'left_id' => 10, 'right_id' => 13),
28                array('forum_id' => 10, 'parent_id' => 9, 'left_id' => 11, 'right_id' => 12),
29                array('forum_id' => 11, 'parent_id' => 7, 'left_id' => 14, 'right_id' => 15),
30            )),
31            array(2, array(2), array(
32                array('forum_id' => 1, 'parent_id' => 0, 'left_id' => 1, 'right_id' => 4),
33                array('forum_id' => 3, 'parent_id' => 1, 'left_id' => 2, 'right_id' => 3),
34                array('forum_id' => 4, 'parent_id' => 0, 'left_id' => 5, 'right_id' => 10),
35                array('forum_id' => 5, 'parent_id' => 4, 'left_id' => 6, 'right_id' => 9),
36                array('forum_id' => 6, 'parent_id' => 5, 'left_id' => 7, 'right_id' => 8),
37                array('forum_id' => 7, 'parent_id' => 0, 'left_id' => 11, 'right_id' => 20),
38                array('forum_id' => 8, 'parent_id' => 7, 'left_id' => 12, 'right_id' => 13),
39                array('forum_id' => 9, 'parent_id' => 7, 'left_id' => 14, 'right_id' => 17),
40                array('forum_id' => 10, 'parent_id' => 9, 'left_id' => 15, 'right_id' => 16),
41                array('forum_id' => 11, 'parent_id' => 7, 'left_id' => 18, 'right_id' => 19),
42            )),
43        );
44    }
45
46    /**
47    * @dataProvider delete_data
48    */
49    public function test_delete($forum_id, $expected_deleted, $expected)
50    {
51        $this->assertEquals($expected_deleted, $this->set->delete($forum_id));
52
53        $result = $this->db->sql_query("SELECT forum_id, parent_id, left_id, right_id
54            FROM phpbb_forums
55            ORDER BY left_id, forum_id ASC");
56        $this->assertEquals($expected, $this->db->sql_fetchrowset($result));
57    }
58
59    public static function delete_throws_data()
60    {
61        return array(
62            array('Not an item', 0),
63            array('Item does not exist', 200),
64        );
65    }
66
67    /**
68    * @dataProvider delete_throws_data
69    */
70    public function test_delete_throws($explain, $forum_id)
71    {
72        $this->expectException('OutOfBoundsException');
73        $this->expectExceptionMessage('FORUM_NESTEDSET_INVALID_ITEM');
74        $this->set->delete($forum_id);
75    }
76
77    public static function insert_data()
78    {
79        return array(
80            array(array(
81                'forum_desc'    => '',
82                'forum_rules'    => '',
83                'forum_id'        => 12,
84                'parent_id'        => 0,
85                'left_id'        => 23,
86                'right_id'        => 24,
87                'forum_parents'    => '',
88            ), array(
89                array('forum_id' => 1, 'parent_id' => 0, 'left_id' => 1, 'right_id' => 6),
90                array('forum_id' => 2, 'parent_id' => 1, 'left_id' => 2, 'right_id' => 3),
91                array('forum_id' => 3, 'parent_id' => 1, 'left_id' => 4, 'right_id' => 5),
92
93                array('forum_id' => 4, 'parent_id' => 0, 'left_id' => 7, 'right_id' => 12),
94                array('forum_id' => 5, 'parent_id' => 4, 'left_id' => 8, 'right_id' => 11),
95                array('forum_id' => 6, 'parent_id' => 5, 'left_id' => 9, 'right_id' => 10),
96
97                array('forum_id' => 7, 'parent_id' => 0, 'left_id' => 13, 'right_id' => 22),
98                array('forum_id' => 8, 'parent_id' => 7, 'left_id' => 14, 'right_id' => 15),
99                array('forum_id' => 9, 'parent_id' => 7, 'left_id' => 16, 'right_id' => 19),
100                array('forum_id' => 10, 'parent_id' => 9, 'left_id' => 17, 'right_id' => 18),
101                array('forum_id' => 11, 'parent_id' => 7, 'left_id' => 20, 'right_id' => 21),
102
103                array('forum_id' => 12, 'parent_id' => 0, 'left_id' => 23, 'right_id' => 24),
104            )),
105        );
106    }
107
108    /**
109    * @dataProvider insert_data
110    */
111    public function test_insert($expected_data, $expected)
112    {
113        $this->assertEquals($expected_data, $this->set->insert(array(
114            'forum_desc'    => '',
115            'forum_rules'    => '',
116        )));
117
118        $result = $this->db->sql_query('SELECT forum_id, parent_id, left_id, right_id
119            FROM phpbb_forums
120            ORDER BY left_id, forum_id ASC');
121        $this->assertEquals($expected, $this->db->sql_fetchrowset($result));
122    }
123}