WordPress.org

Make WordPress Core

Ticket #4596: test_walker_category.php

File test_walker_category.php, 7.2 KB (added by darkdragon, 6 years ago)

Automattic Automated Tests for Walker Category

Line 
1<?php
2/**
3 * Test Walker_Category Class
4 *
5 * @internal Dual license under BSD and GPLv2, pick one.
6 *
7 * @license BSD
8 * @license GPL version 2
9 * @author Jacob Santos
10 */
11
12class WPTestWalkerCategory extends WPTestCase {
13
14        function test_start_lvl_should_just_return() {
15                $obj = new Walker_Category();
16
17                $expected = '';
18
19                $actual = $obj->start_lvl($expected, 0, array('style' => ''));
20
21                $this->assertEquals( $expected, $actual );
22        }
23
24        function test_start_lvl_should_return_two_tabs() {
25                $obj = new Walker_Category();
26
27                $expected = "testing\n\t\t<ul class='children'>\n";
28                $output = "testing\n";
29
30                $actual = $obj->start_lvl( $output, 2, array('style' => 'list') );
31                $this->assertEquals( $expected, $actual );
32        }
33
34        function test_end_lvl_should_just_return() {
35                $obj = new Walker_Category();
36
37                $expected = '';
38
39                $actual = $obj->end_lvl($expected, 0, array('style' => ''));
40
41                $this->assertEquals( $expected, $actual );
42        }
43
44        function test_end_lvl_should_return_two_tabs() {
45                $obj = new Walker_Category();
46
47                $expected = "testing\n\t\t</ul>\n";
48                $output = "testing\n";
49
50                $actual = $obj->end_lvl( $output, 2, array('style' => 'list') );
51                $this->assertEquals( $expected, $actual );
52        }
53
54        function test_end_el_should_just_return() {
55                $obj = new Walker_Category();
56
57                $expected = '';
58
59                $actual = $obj->end_el($expected, null, 0, array('style' => ''));
60
61                $this->assertEquals( $expected, $actual );
62        }
63
64        function test_end_el_does_output_not_prepend_two_tabs() {
65                $obj = new Walker_Category();
66
67                $expected = "testing\n\t\t</li>\n";
68                $output = "testing\n";
69
70                $actual = $obj->end_el( $output, null, 2, array('style' => 'list') );
71                $this->assertNotEquals( $expected, $actual, "This test is supposed to fail when fix has been applied. Change to assertEquals when failure." );
72        }
73
74        function test_end_el_does_not_prepend_two_tabs() {
75                $obj = new Walker_Category();
76
77                $expected = "testing\n</li>\n";
78                $output = "testing\n";
79
80                $actual = $obj->end_el( $output, null, 2, array('style' => 'list') );
81                $this->assertEquals( $expected, $actual, "This test is supposed to fail when fix has been applied. Change to assertNotEquals when failure.");
82        }
83
84        // Covers Defect #4596
85        function test_start_lvl_should_use_description_as_title__control_test() {
86                global $wp_filters;
87
88                // Remove the hook to test just the single item.
89                $list_cats_hook = isset($wp_filters['list_cats']) ? $wp_filters['list_cats'] : null;
90                $category_description_hook = isset($wp_filters['category_description']) ? $wp_filters['category_description'] : null;
91                unset($wp_filters['list_cats'], $wp_filters['category_description']);
92
93                add_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
94
95                $obj = new Walker_Category();
96                $category = (object) array( 'name' => 'test1', 'term_id' => 0, 'description' => 'testing just a test' );
97                $expected = "\t".'<a href="" title="testing just a test">test1</a>'."<br />\n";
98                $actual = $obj->start_el( '', $category, 0, array('use_desc_for_title' => 1) );
99
100                remove_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
101
102                // Restore broken list cats, in case another test makes use of it.
103                if( !is_null( $list_cats_hook ) )
104                        $wp_filters['list_cats'] = $list_cats_hook;
105
106                if( !is_null( $category_description_hook ) )
107                        $wp_filters['category_description'] = $category_description_hook;
108
109                $this->assertEquals( $expected, $actual, "$actual" );
110        }
111
112        // Covers Defect #4596
113        function test_start_lvl_should_not_use_description_as_title__lacking_description_and_control_test() {
114                global $wp_filters;
115
116                // Remove the hook to test just the single item.
117                $list_cats_hook = isset($wp_filters['list_cats']) ? $wp_filters['list_cats'] : null;
118                $category_description_hook = isset($wp_filters['category_description']) ? $wp_filters['category_description'] : null;
119                unset($wp_filters['list_cats'], $wp_filters['category_description']);
120
121                add_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
122
123                $obj = new Walker_Category();
124                $category = (object) array( 'name' => 'test1', 'term_id' => 0, 'description' => '' );
125                $expected = "\t".'<a href="" title="View all posts filed under test1">test1</a>'."<br />\n";
126                $actual = $obj->start_el( '', $category, 0, array('use_desc_for_title' => 1) );
127
128                remove_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
129
130                // Restore broken list cats, in case another test makes use of it.
131                if( !is_null( $list_cats_hook ) )
132                        $wp_filters['list_cats'] = $list_cats_hook;
133
134                if( !is_null( $category_description_hook ) )
135                        $wp_filters['category_description'] = $category_description_hook;
136
137                $this->assertEquals( $expected, $actual, "$actual" );
138        }
139
140        // Covers Defect #4596
141        function test_start_lvl_should_use_description_as_title() {
142                global $wp_filters;
143
144                // Remove the hook to test just the single item.
145                $list_cats_hook = isset($wp_filters['list_cats']) ? $wp_filters['list_cats'] : null;
146                $category_description_hook = isset($wp_filters['category_description']) ? $wp_filters['category_description'] : null;
147                unset($wp_filters['list_cats'], $wp_filters['category_description']);
148
149                add_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
150
151                $obj = new Walker_Category();
152                $category = (object) array( 'name' => 'test1', 'term_id' => 0, 'description' => 'asdf' );
153                $expected = "\t".'<a href="" title="asdf">test1</a>'."<br />\n";
154                $actual = $obj->start_el( '', $category, 0, array('use_desc_for_title' => true) );
155
156                remove_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
157
158                // Restore broken list cats, in case another test makes use of it.
159                if( !is_null( $list_cats_hook ) )
160                        $wp_filters['list_cats'] = $list_cats_hook;
161
162                if( !is_null( $category_description_hook ) )
163                        $wp_filters['category_description'] = $category_description_hook;
164
165                $this->assertEquals( $expected, $actual, "$actual" );
166        }
167
168        // Covers Defect #4596
169        function test_start_lvl_should_not_use_description_as_title__lacking_description() {
170                global $wp_filters;
171
172                // Remove the hook to test just the single item.
173                $list_cats_hook = isset($wp_filters['list_cats']) ? $wp_filters['list_cats'] : null;
174                $category_description_hook = isset($wp_filters['category_description']) ? $wp_filters['category_description'] : null;
175                unset($wp_filters['list_cats'], $wp_filters['category_description']);
176
177                add_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
178
179                $obj = new Walker_Category();
180                $category = (object) array( 'name' => 'test1', 'term_id' => 0, 'description' => '' );
181                $expected = "\t".'<a href="" title="View all posts filed under test1">test1</a>'."<br />\n";
182                $actual = $obj->start_el( '', $category, 0, array('use_desc_for_title' => true) );
183
184                remove_filter('category_link', array(__CLASS__, '_clear_category_link'), 0);
185
186                // Restore broken list cats, in case another test makes use of it.
187                if( !is_null( $list_cats_hook ) )
188                        $wp_filters['list_cats'] = $list_cats_hook;
189
190                if( !is_null( $category_description_hook ) )
191                        $wp_filters['category_description'] = $category_description_hook;
192
193                $this->assertEquals( $expected, $actual, "$actual" );
194        }
195       
196        function _clear_category_link($link, $id=0) {
197                return '';
198        }
199}
200
201?>