Mercurial > kallithea
comparison rhodecode/tests/models/test_repos_groups.py @ 3647:8a86836fad64 beta
more usage of fixture tools
in tests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 01 Apr 2013 23:45:25 +0200 |
parents | 94f251fda314 |
children | 3563bb7b4b82 5067d6e826a5 |
comparison
equal
deleted
inserted
replaced
3646:63e49418a4cc | 3647:8a86836fad64 |
---|---|
1 import os | 1 import os |
2 import unittest | 2 import unittest |
3 from sqlalchemy.exc import IntegrityError | |
4 | |
3 from rhodecode.tests import * | 5 from rhodecode.tests import * |
6 from rhodecode.tests.fixture import Fixture | |
4 | 7 |
5 from rhodecode.model.repos_group import ReposGroupModel | 8 from rhodecode.model.repos_group import ReposGroupModel |
6 from rhodecode.model.repo import RepoModel | 9 from rhodecode.model.repo import RepoModel |
7 from rhodecode.model.db import RepoGroup, User | 10 from rhodecode.model.db import RepoGroup |
8 from rhodecode.model.meta import Session | 11 from rhodecode.model.meta import Session |
9 from sqlalchemy.exc import IntegrityError | 12 |
10 | 13 |
11 | 14 fixture = Fixture() |
12 def _make_group(path, desc='desc', parent_id=None, | |
13 skip_if_exists=False): | |
14 | |
15 gr = RepoGroup.get_by_group_name(path) | |
16 if gr and skip_if_exists: | |
17 return gr | |
18 if isinstance(parent_id, RepoGroup): | |
19 parent_id = parent_id.group_id | |
20 gr = ReposGroupModel().create(path, desc, TEST_USER_ADMIN_LOGIN, parent_id) | |
21 return gr | |
22 | 15 |
23 | 16 |
24 def _update_group(id_, group_name, desc='desc', parent_id=None): | 17 def _update_group(id_, group_name, desc='desc', parent_id=None): |
25 form_data = _get_group_create_params(group_name=group_name, | 18 form_data = fixture._get_group_create_params(group_name=group_name, |
26 group_desc=desc, | 19 group_desc=desc, |
27 group_parent_id=parent_id) | 20 group_parent_id=parent_id) |
28 gr = ReposGroupModel().update(id_, form_data) | 21 gr = ReposGroupModel().update(id_, form_data) |
29 return gr | 22 return gr |
30 | 23 |
31 | 24 |
32 def _make_repo(name, **kwargs): | |
33 form_data = _get_repo_create_params(repo_name=name, **kwargs) | |
34 cur_user = User.get_by_username(TEST_USER_ADMIN_LOGIN) | |
35 r = RepoModel().create(form_data, cur_user) | |
36 return r | |
37 | |
38 | |
39 def _update_repo(name, **kwargs): | 25 def _update_repo(name, **kwargs): |
40 form_data = _get_repo_create_params(**kwargs) | 26 form_data = fixture._get_repo_create_params(**kwargs) |
41 if not 'repo_name' in kwargs: | 27 if not 'repo_name' in kwargs: |
42 form_data['repo_name'] = name | 28 form_data['repo_name'] = name |
43 if not 'perms_new' in kwargs: | 29 if not 'perms_new' in kwargs: |
44 form_data['perms_new'] = [] | 30 form_data['perms_new'] = [] |
45 if not 'perms_updates' in kwargs: | 31 if not 'perms_updates' in kwargs: |
49 | 35 |
50 | 36 |
51 class TestReposGroups(unittest.TestCase): | 37 class TestReposGroups(unittest.TestCase): |
52 | 38 |
53 def setUp(self): | 39 def setUp(self): |
54 self.g1 = _make_group('test1', skip_if_exists=True) | 40 self.g1 = fixture.create_group('test1', skip_if_exists=True) |
55 Session().commit() | 41 self.g2 = fixture.create_group('test2', skip_if_exists=True) |
56 self.g2 = _make_group('test2', skip_if_exists=True) | 42 self.g3 = fixture.create_group('test3', skip_if_exists=True) |
57 Session().commit() | |
58 self.g3 = _make_group('test3', skip_if_exists=True) | |
59 Session().commit() | |
60 | 43 |
61 def tearDown(self): | 44 def tearDown(self): |
62 Session.remove() | 45 Session.remove() |
63 | 46 |
64 def __check_path(self, *path): | 47 def __check_path(self, *path): |
74 | 57 |
75 def __delete_group(self, id_): | 58 def __delete_group(self, id_): |
76 ReposGroupModel().delete(id_) | 59 ReposGroupModel().delete(id_) |
77 | 60 |
78 def test_create_group(self): | 61 def test_create_group(self): |
79 g = _make_group('newGroup') | 62 g = fixture.create_group('newGroup') |
80 Session().commit() | 63 Session().commit() |
81 self.assertEqual(g.full_path, 'newGroup') | 64 self.assertEqual(g.full_path, 'newGroup') |
82 | 65 |
83 self.assertTrue(self.__check_path('newGroup')) | 66 self.assertTrue(self.__check_path('newGroup')) |
84 | 67 |
85 def test_create_same_name_group(self): | 68 def test_create_same_name_group(self): |
86 self.assertRaises(IntegrityError, lambda: _make_group('newGroup')) | 69 self.assertRaises(IntegrityError, lambda: fixture.create_group('newGroup')) |
87 Session().rollback() | 70 Session().rollback() |
88 | 71 |
89 def test_same_subgroup(self): | 72 def test_same_subgroup(self): |
90 sg1 = _make_group('sub1', parent_id=self.g1.group_id) | 73 sg1 = fixture.create_group('sub1', group_parent_id=self.g1.group_id) |
91 Session().commit() | |
92 self.assertEqual(sg1.parent_group, self.g1) | 74 self.assertEqual(sg1.parent_group, self.g1) |
93 self.assertEqual(sg1.full_path, 'test1/sub1') | 75 self.assertEqual(sg1.full_path, 'test1/sub1') |
94 self.assertTrue(self.__check_path('test1', 'sub1')) | 76 self.assertTrue(self.__check_path('test1', 'sub1')) |
95 | 77 |
96 ssg1 = _make_group('subsub1', parent_id=sg1.group_id) | 78 ssg1 = fixture.create_group('subsub1', group_parent_id=sg1.group_id) |
97 Session().commit() | |
98 self.assertEqual(ssg1.parent_group, sg1) | 79 self.assertEqual(ssg1.parent_group, sg1) |
99 self.assertEqual(ssg1.full_path, 'test1/sub1/subsub1') | 80 self.assertEqual(ssg1.full_path, 'test1/sub1/subsub1') |
100 self.assertTrue(self.__check_path('test1', 'sub1', 'subsub1')) | 81 self.assertTrue(self.__check_path('test1', 'sub1', 'subsub1')) |
101 | 82 |
102 def test_remove_group(self): | 83 def test_remove_group(self): |
103 sg1 = _make_group('deleteme') | 84 sg1 = fixture.create_group('deleteme') |
104 Session().commit() | |
105 self.__delete_group(sg1.group_id) | 85 self.__delete_group(sg1.group_id) |
106 | 86 |
107 self.assertEqual(RepoGroup.get(sg1.group_id), None) | 87 self.assertEqual(RepoGroup.get(sg1.group_id), None) |
108 self.assertFalse(self.__check_path('deteteme')) | 88 self.assertFalse(self.__check_path('deteteme')) |
109 | 89 |
110 sg1 = _make_group('deleteme', parent_id=self.g1.group_id) | 90 sg1 = fixture.create_group('deleteme', group_parent_id=self.g1.group_id) |
111 Session().commit() | |
112 self.__delete_group(sg1.group_id) | 91 self.__delete_group(sg1.group_id) |
113 | 92 |
114 self.assertEqual(RepoGroup.get(sg1.group_id), None) | 93 self.assertEqual(RepoGroup.get(sg1.group_id), None) |
115 self.assertFalse(self.__check_path('test1', 'deteteme')) | 94 self.assertFalse(self.__check_path('test1', 'deteteme')) |
116 | 95 |
117 def test_rename_single_group(self): | 96 def test_rename_single_group(self): |
118 sg1 = _make_group('initial') | 97 sg1 = fixture.create_group('initial') |
119 Session().commit() | |
120 | 98 |
121 new_sg1 = _update_group(sg1.group_id, 'after') | 99 new_sg1 = _update_group(sg1.group_id, 'after') |
122 self.assertTrue(self.__check_path('after')) | 100 self.assertTrue(self.__check_path('after')) |
123 self.assertEqual(RepoGroup.get_by_group_name('initial'), None) | 101 self.assertEqual(RepoGroup.get_by_group_name('initial'), None) |
124 | 102 |
125 def test_update_group_parent(self): | 103 def test_update_group_parent(self): |
126 | 104 |
127 sg1 = _make_group('initial', parent_id=self.g1.group_id) | 105 sg1 = fixture.create_group('initial', group_parent_id=self.g1.group_id) |
128 Session().commit() | |
129 | 106 |
130 new_sg1 = _update_group(sg1.group_id, 'after', parent_id=self.g1.group_id) | 107 new_sg1 = _update_group(sg1.group_id, 'after', parent_id=self.g1.group_id) |
131 self.assertTrue(self.__check_path('test1', 'after')) | 108 self.assertTrue(self.__check_path('test1', 'after')) |
132 self.assertEqual(RepoGroup.get_by_group_name('test1/initial'), None) | 109 self.assertEqual(RepoGroup.get_by_group_name('test1/initial'), None) |
133 | 110 |
140 | 117 |
141 self.assertEqual(RepoGroup.get_by_group_name('hello'), new_sg1) | 118 self.assertEqual(RepoGroup.get_by_group_name('hello'), new_sg1) |
142 | 119 |
143 def test_subgrouping_with_repo(self): | 120 def test_subgrouping_with_repo(self): |
144 | 121 |
145 g1 = _make_group('g1') | 122 g1 = fixture.create_group('g1') |
146 g2 = _make_group('g2') | 123 g2 = fixture.create_group('g2') |
147 Session().commit() | |
148 # create new repo | 124 # create new repo |
149 r = _make_repo('john') | 125 r = fixture.create_repo('john') |
150 Session().commit() | 126 |
151 self.assertEqual(r.repo_name, 'john') | 127 self.assertEqual(r.repo_name, 'john') |
152 # put repo into group | 128 # put repo into group |
153 r = _update_repo('john', repo_group=g1.group_id) | 129 r = _update_repo('john', repo_group=g1.group_id) |
154 Session().commit() | 130 Session().commit() |
155 self.assertEqual(r.repo_name, 'g1/john') | 131 self.assertEqual(r.repo_name, 'g1/john') |
160 # test repo | 136 # test repo |
161 self.assertEqual(r.repo_name, RepoGroup.url_sep().join(['g2', 'g1', | 137 self.assertEqual(r.repo_name, RepoGroup.url_sep().join(['g2', 'g1', |
162 r.just_name])) | 138 r.just_name])) |
163 | 139 |
164 def test_move_to_root(self): | 140 def test_move_to_root(self): |
165 g1 = _make_group('t11') | 141 g1 = fixture.create_group('t11') |
166 Session().commit() | 142 g2 = fixture.create_group('t22', group_parent_id=g1.group_id) |
167 g2 = _make_group('t22', parent_id=g1.group_id) | |
168 Session().commit() | |
169 | 143 |
170 self.assertEqual(g2.full_path, 't11/t22') | 144 self.assertEqual(g2.full_path, 't11/t22') |
171 self.assertTrue(self.__check_path('t11', 't22')) | 145 self.assertTrue(self.__check_path('t11', 't22')) |
172 | 146 |
173 g2 = _update_group(g2.group_id, 'g22', parent_id=None) | 147 g2 = _update_group(g2.group_id, 'g22', parent_id=None) |
178 self.assertEqual(g2.full_path, 'g22') | 152 self.assertEqual(g2.full_path, 'g22') |
179 self.assertFalse(self.__check_path('t11', 't22')) | 153 self.assertFalse(self.__check_path('t11', 't22')) |
180 self.assertTrue(self.__check_path('g22')) | 154 self.assertTrue(self.__check_path('g22')) |
181 | 155 |
182 def test_rename_top_level_group_in_nested_setup(self): | 156 def test_rename_top_level_group_in_nested_setup(self): |
183 g1 = _make_group('L1') | 157 g1 = fixture.create_group('L1') |
184 Session().commit() | 158 g2 = fixture.create_group('L2', group_parent_id=g1.group_id) |
185 g2 = _make_group('L2', parent_id=g1.group_id) | 159 g3 = fixture.create_group('L3', group_parent_id=g2.group_id) |
186 Session().commit() | 160 |
187 g3 = _make_group('L3', parent_id=g2.group_id) | 161 r = fixture.create_repo('L1/L2/L3/L3_REPO', repo_group=g3.group_id) |
188 Session().commit() | |
189 | |
190 r = _make_repo('L1/L2/L3/L3_REPO', repo_group=g3.group_id) | |
191 Session().commit() | |
192 | 162 |
193 ##rename L1 all groups should be now changed | 163 ##rename L1 all groups should be now changed |
194 _update_group(g1.group_id, 'L1_NEW') | 164 _update_group(g1.group_id, 'L1_NEW') |
195 Session().commit() | 165 Session().commit() |
196 self.assertEqual(g1.full_path, 'L1_NEW') | 166 self.assertEqual(g1.full_path, 'L1_NEW') |
197 self.assertEqual(g2.full_path, 'L1_NEW/L2') | 167 self.assertEqual(g2.full_path, 'L1_NEW/L2') |
198 self.assertEqual(g3.full_path, 'L1_NEW/L2/L3') | 168 self.assertEqual(g3.full_path, 'L1_NEW/L2/L3') |
199 self.assertEqual(r.repo_name, 'L1_NEW/L2/L3/L3_REPO') | 169 self.assertEqual(r.repo_name, 'L1_NEW/L2/L3/L3_REPO') |
200 | 170 |
201 def test_change_parent_of_top_level_group_in_nested_setup(self): | 171 def test_change_parent_of_top_level_group_in_nested_setup(self): |
202 g1 = _make_group('R1') | 172 g1 = fixture.create_group('R1') |
203 Session().commit() | 173 g2 = fixture.create_group('R2', group_parent_id=g1.group_id) |
204 g2 = _make_group('R2', parent_id=g1.group_id) | 174 g3 = fixture.create_group('R3', group_parent_id=g2.group_id) |
205 Session().commit() | 175 g4 = fixture.create_group('R1_NEW') |
206 g3 = _make_group('R3', parent_id=g2.group_id) | 176 |
207 Session().commit() | 177 r = fixture.create_repo('R1/R2/R3/R3_REPO', repo_group=g3.group_id) |
208 | |
209 g4 = _make_group('R1_NEW') | |
210 Session().commit() | |
211 | |
212 r = _make_repo('R1/R2/R3/R3_REPO', repo_group=g3.group_id) | |
213 Session().commit() | |
214 ##rename L1 all groups should be now changed | 178 ##rename L1 all groups should be now changed |
215 _update_group(g1.group_id, 'R1', parent_id=g4.group_id) | 179 _update_group(g1.group_id, 'R1', parent_id=g4.group_id) |
216 Session().commit() | 180 Session().commit() |
217 self.assertEqual(g1.full_path, 'R1_NEW/R1') | 181 self.assertEqual(g1.full_path, 'R1_NEW/R1') |
218 self.assertEqual(g2.full_path, 'R1_NEW/R1/R2') | 182 self.assertEqual(g2.full_path, 'R1_NEW/R1/R2') |
219 self.assertEqual(g3.full_path, 'R1_NEW/R1/R2/R3') | 183 self.assertEqual(g3.full_path, 'R1_NEW/R1/R2/R3') |
220 self.assertEqual(r.repo_name, 'R1_NEW/R1/R2/R3/R3_REPO') | 184 self.assertEqual(r.repo_name, 'R1_NEW/R1/R2/R3/R3_REPO') |
221 | 185 |
222 def test_change_parent_of_top_level_group_in_nested_setup_with_rename(self): | 186 def test_change_parent_of_top_level_group_in_nested_setup_with_rename(self): |
223 g1 = _make_group('X1') | 187 g1 = fixture.create_group('X1') |
224 Session().commit() | 188 g2 = fixture.create_group('X2', group_parent_id=g1.group_id) |
225 g2 = _make_group('X2', parent_id=g1.group_id) | 189 g3 = fixture.create_group('X3', group_parent_id=g2.group_id) |
226 Session().commit() | 190 g4 = fixture.create_group('X1_NEW') |
227 g3 = _make_group('X3', parent_id=g2.group_id) | 191 |
228 Session().commit() | 192 r = fixture.create_repo('X1/X2/X3/X3_REPO', repo_group=g3.group_id) |
229 | |
230 g4 = _make_group('X1_NEW') | |
231 Session().commit() | |
232 | |
233 r = _make_repo('X1/X2/X3/X3_REPO', repo_group=g3.group_id) | |
234 Session().commit() | |
235 | 193 |
236 ##rename L1 all groups should be now changed | 194 ##rename L1 all groups should be now changed |
237 _update_group(g1.group_id, 'X1_PRIM', parent_id=g4.group_id) | 195 _update_group(g1.group_id, 'X1_PRIM', parent_id=g4.group_id) |
238 Session().commit() | 196 Session().commit() |
239 self.assertEqual(g1.full_path, 'X1_NEW/X1_PRIM') | 197 self.assertEqual(g1.full_path, 'X1_NEW/X1_PRIM') |