| 14 | | diff --git a/ckan/tests/models/test_user.py b/ckan/tests/models/test_user.py |
| 15 | | index a49759a..ffd3449 100644 |
| 16 | | --- a/ckan/tests/models/test_user.py |
| 17 | | +++ b/ckan/tests/models/test_user.py |
| 18 | | @@ -52,3 +52,50 @@ class TestUser: |
| 19 | | out = model.User.get(u'http:/sandra.owndomain.com/') |
| 20 | | assert out |
| 21 | | assert out.fullname == u'Sandra' |
| 22 | | + |
| 23 | | +def to_names(domain_obj_list): |
| 24 | | + '''Takes a list of domain objects and returns a corresponding list |
| 25 | | + of their names.''' |
| 26 | | + objs = [] |
| 27 | | + for obj in domain_obj_list: |
| 28 | | + objs.append(obj.name if obj else None) |
| 29 | | + return objs |
| 30 | | + |
| 31 | | +class TestUserGroups: |
| 32 | | + @classmethod |
| 33 | | + def setup_class(self): |
| 34 | | + CreateTestData.create_arbitrary([{'name': 'testpkg'}], |
| 35 | | + extra_user_names=['brian', 'sandra']) |
| 36 | | + CreateTestData.create_groups([ |
| 37 | | + {'name': 'grp1', |
| 38 | | + 'phone': '1234', |
| 39 | | + } |
| 40 | | + ]) |
| 41 | | + model.repo.new_revision() |
| 42 | | + grp1 = model.Group.by_name(u'grp1') |
| 43 | | + brian = model.User.by_name(u'brian') |
| 44 | | + model.Session.add(model.Member(group=grp1, |
| 45 | | + table_id=brian.id, |
| 46 | | + table_name='user', |
| 47 | | + capacity='admin') |
| 48 | | + ) |
| 49 | | + model.repo.commit_and_remove() |
| 50 | | + |
| 51 | | + @classmethod |
| 52 | | + def teardown_class(self): |
| 53 | | + model.repo.rebuild_db() |
| 54 | | + |
| 55 | | + def test_get_groups(self): |
| 56 | | + brian = model.User.by_name(u'brian') |
| 57 | | + groups = brian.get_groups() |
| 58 | | + assert_equal(to_names(groups), ['grp1']) |
| 59 | | + assert_equal(groups[0].extras, {'phone': '1234'}) |
| 60 | | + |
| 61 | | + # check cache works between sessions |
| 62 | | + model.Session.expunge_all() |
| 63 | | + #don't refresh brian user since this is how c.user works |
| 64 | | + # i.e. don't do this: brian = model.User.by_name(u'brian') |
| 65 | | + groups = brian.get_groups() |
| 66 | | + assert_equal(to_names(groups), ['grp1']) |
| 67 | | + assert_equal(groups[0].extras, {'phone': '1234'}) |
| 68 | | + |
| | 14 | diff at https://gist.github.com/3003117 |