1 """Tests related to the branches widget"""
2 from __future__
import absolute_import
, division
, unicode_literals
5 from unittest
.mock
import MagicMock
7 from mock
import MagicMock
9 from cola
.widgets
import branch
12 def test_create_tree_entries():
19 root
= branch
.create_tree_entries(names
)
21 actual
= len(root
.children
)
22 assert expect
== actual
25 abc
= root
.children
[0]
28 assert expect
== actual
31 assert expect
== actual
34 assert expect
== actual
37 cat
= root
.children
[1]
40 assert expect
== actual
41 assert cat
.refname
is None
43 actual
= len(cat
.children
)
44 assert expect
== actual
47 cat_abc
= cat
.children
[0]
49 actual
= cat_abc
.basename
50 assert expect
== actual
52 actual
= cat_abc
.refname
53 assert expect
== actual
55 actual
= cat_abc
.children
56 assert expect
== actual
59 cat_def
= cat
.children
[1]
61 actual
= cat_def
.basename
62 assert expect
== actual
64 actual
= cat_def
.refname
65 assert expect
== actual
67 actual
= cat_def
.children
68 assert expect
== actual
71 xyz
= root
.children
[2]
74 assert expect
== actual
75 assert xyz
.refname
is None
77 actual
= len(xyz
.children
)
78 assert expect
== actual
81 xyz_xyz
= xyz
.children
[0]
83 actual
= xyz_xyz
.basename
84 assert expect
== actual
87 actual
= xyz_xyz
.refname
88 assert expect
== actual
91 actual
= xyz_xyz
.children
92 assert expect
== actual
95 def test_create_name_dict():
96 """Test transforming unix path-like names into a nested dict"""
98 'top_1/child_1/child_1_1',
99 'top_1/child_1/child_1_2',
100 'top_1/child_2/child_2_1/child_2_1_1',
101 'top_1/child_2/child_2_1/child_2_1_2',
103 inner_child
= {'child_2_1_2': {}, 'child_2_1_1': {}}
106 'child_1': {'child_1_2': {}, 'child_1_1': {}},
107 'child_2': {'child_2_1': inner_child
},
110 actual
= branch
.create_name_dict(branches
)
111 assert expect
== actual
114 def test_create_toplevel_item():
120 tree
= branch
.create_tree_entries(names
)
121 tree
.basename
= 'top'
122 top
= branch
.create_toplevel_item(tree
)
126 assert expect
== actual
129 actual
= top
.childCount()
130 assert expect
== actual
133 actual
= top
.child(0).name
134 assert expect
== actual
137 actual
= top
.child(0).refname
138 assert expect
== actual
141 actual
= top
.child(1).name
142 assert expect
== actual
144 assert top
.child(1).refname
is None
147 actual
= top
.child(1).childCount()
148 assert expect
== actual
151 actual
= top
.child(1).child(0).name
152 assert expect
== actual
155 actual
= top
.child(1).child(1).name
156 assert expect
== actual
158 expect
= 'child_2/child_2_1'
159 actual
= top
.child(1).child(0).refname
160 assert expect
== actual
162 expect
= 'child_2/child_2_2'
163 actual
= top
.child(1).child(1).refname
164 assert expect
== actual
167 def test_get_toplevel_item():
168 items
= _create_top_item()
169 actual
= branch
.get_toplevel_item(items
['child_1'])
170 assert items
['top'] is actual
172 actual
= branch
.get_toplevel_item(items
['sub_child_2_1'])
173 assert items
['top'] is actual
176 def test_refname_attribute():
177 items
= _create_top_item()
179 actual
= items
['child_1'].refname
181 assert expect
== actual
183 actual
= items
['sub_child_2_2'].refname
184 expect
= 'child_2/sub_child_2_2'
185 assert expect
== actual
188 def test_should_return_a_valid_child_on_find_child():
189 """Test the find_child function."""
190 items
= _create_top_item()
191 child
= branch
.find_by_refname(items
['top'], 'child_1')
192 assert child
.refname
== 'child_1'
194 child
= branch
.find_by_refname(items
['top'], 'child_2/sub_child_2_2')
195 assert child
.name
== 'sub_child_2_2'
198 def test_should_return_empty_state_on_save_state():
199 """Test the save_state function."""
200 top
= _create_item('top', None, False)
201 tree_helper
= branch
.BranchesTreeHelper()
202 actual
= tree_helper
.save_state(top
)
203 assert {'top': {}} == actual
206 def test_should_return_a_valid_state_on_save_state():
207 """Test the save_state function."""
208 items
= _create_top_item()
209 tree_helper
= branch
.BranchesTreeHelper()
210 actual
= tree_helper
.save_state(items
['top'])
214 'child_2': {'sub_child_2_1': {}, 'sub_child_2_2': {}},
217 assert expect
== actual
220 def _create_top_item():
221 top
= _create_item('top', None, True)
222 child_1
= _create_item('child_1', 'child_1', False)
223 child_2
= _create_item('child_2', None, True)
224 sub_child_2_1
= _create_item('sub_child_2_1', 'child_2/sub_child_2_1', False)
225 sub_child_2_2
= _create_item('sub_child_2_2', 'child_2/sub_child_2_2', False)
227 child_2
.addChildren([sub_child_2_1
, sub_child_2_2
])
228 top
.addChildren([child_1
, child_2
])
233 'sub_child_2_1': sub_child_2_1
,
234 'sub_child_2_2': sub_child_2_2
,
238 def _create_item(name
, refname
, expanded
):
239 item
= branch
.BranchTreeWidgetItem(name
, refname
=refname
)
240 item
.isExpanded
= MagicMock(return_value
=expanded
)