tests: leverage pytest in utils_test
[git-cola.git] / test / branch_test.py
blob243b462f43337bb4fb0ca6f503d9851005080eb6
1 """Tests related to the branches widget"""
2 from __future__ import absolute_import, division, unicode_literals
4 try:
5 from unittest.mock import Mock
6 except ImportError:
7 from mock import Mock
9 from cola.widgets import branch
12 def test_create_tree_entries():
13 names = [
14 'abc',
15 'cat/abc',
16 'cat/def',
17 'xyz/xyz',
19 root = branch.create_tree_entries(names)
20 expect = 3
21 actual = len(root.children)
22 assert expect == actual
24 # 'abc'
25 abc = root.children[0]
26 expect = 'abc'
27 actual = abc.basename
28 assert expect == actual
29 expect = 'abc'
30 actual = abc.refname
31 assert expect == actual
32 expect = []
33 actual = abc.children
34 assert expect == actual
36 # 'cat'
37 cat = root.children[1]
38 expect = 'cat'
39 actual = 'cat'
40 assert expect == actual
41 assert cat.refname is None
42 expect = 2
43 actual = len(cat.children)
44 assert expect == actual
46 # 'cat/abc'
47 cat_abc = cat.children[0]
48 expect = 'abc'
49 actual = cat_abc.basename
50 assert expect == actual
51 expect = 'cat/abc'
52 actual = cat_abc.refname
53 assert expect == actual
54 expect = []
55 actual = cat_abc.children
56 assert expect == actual
58 # 'cat/def'
59 cat_def = cat.children[1]
60 expect = 'def'
61 actual = cat_def.basename
62 assert expect == actual
63 expect = 'cat/def'
64 actual = cat_def.refname
65 assert expect == actual
66 expect = []
67 actual = cat_def.children
68 assert expect == actual
70 # 'xyz'
71 xyz = root.children[2]
72 expect = 'xyz'
73 actual = xyz.basename
74 assert expect == actual
75 assert xyz.refname is None
76 expect = 1
77 actual = len(xyz.children)
78 assert expect == actual
80 # 'xyz/xyz'
81 xyz_xyz = xyz.children[0]
82 expect = 'xyz'
83 actual = xyz_xyz.basename
84 assert expect == actual
86 expect = 'xyz/xyz'
87 actual = xyz_xyz.refname
88 assert expect == actual
90 expect = []
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"""
97 branches = [
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': {}}
104 expect = {
105 'top_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():
115 names = [
116 'child_1',
117 'child_2/child_2_1',
118 'child_2/child_2_2',
120 tree = branch.create_tree_entries(names)
121 tree.basename = 'top'
122 top = branch.create_toplevel_item(tree)
124 expect = 'top'
125 actual = top.name
126 assert expect == actual
128 expect = 2
129 actual = top.childCount()
130 assert expect == actual
132 expect = 'child_1'
133 actual = top.child(0).name
134 assert expect == actual
136 expect = 'child_1'
137 actual = top.child(0).refname
138 assert expect == actual
140 expect = 'child_2'
141 actual = top.child(1).name
142 assert expect == actual
144 assert top.child(1).refname is None
146 expect = 2
147 actual = top.child(1).childCount()
148 assert expect == actual
150 expect = 'child_2_1'
151 actual = top.child(1).child(0).name
152 assert expect == actual
154 expect = 'child_2_2'
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
180 expect = 'child_1'
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'])
211 expect = {
212 'top': {
213 'child_1': {},
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])
230 return {
231 'top': top,
232 'child_1': child_1,
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 = Mock(return_value=expanded)
241 return item