Skip to content

Commit

Permalink
[bug] Fixing the member tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rossjones committed Mar 14, 2012
1 parent 1f2035f commit 0c07d3b
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 26 deletions.
19 changes: 11 additions & 8 deletions ckan/logic/action/create.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,31 +174,34 @@ def member_create(context, data_dict=None):
"""
model = context['model']
user = context['user']
group = context['group']

rev = model.repo.new_revision()
rev.author = user
if 'message' in context:
rev.message = context['message']
else:
rev.message = _(u'REST API: Create member object %s') % data_dict.get("name", "")

group_id = data_dict['group']
obj_id = data_dict['object']
obj_type = data_dict['object_type']
capacity = data_dict['capacity']

if 'group' not in context:
context['group'] = group_id

# User must be able to update the group to add a member to it
check_access('group_update', context, data_dict)

# Look up existing, in case it exists
member = model.Session.query(model.Member).\
filter(model.Member.table_name == obj_type).\
filter(model.Member.table_id == obj_id).\
filter(model.Member.group_id == group_id).\
filter(model.Member.state == "active").\
filter(model.Member.capacity == capacity).first()
filter(model.Member.group_id == group.id).\
filter(model.Member.state == "active").first()
if member:
member.capacity = capacity
else:
member = model.Member(table_name = obj_type,
table_id = obj_id,
group_id = group_id,
group_id = group.id,
capacity=capacity)

model.Session.add(member)
Expand Down
6 changes: 2 additions & 4 deletions ckan/logic/action/delete.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,21 +82,19 @@ def member_delete(context, data_dict=None):
"""
model = context['model']
user = context['user']
group = context['group']

group_id = data_dict['group']
obj_id = data_dict['object']
obj_type = data_dict['object_type']

if 'group' not in context:
context['group'] = group_id

# User must be able to update the group to remove a member from it
check_access('group_update', context, data_dict)

member = model.Session.query(model.Member).\
filter(model.Member.table_name == obj_type).\
filter(model.Member.table_id == obj_id).\
filter(model.Member.group_id == group_id).\
filter(model.Member.group_id == group.id).\
filter(model.Member.state == "active").first()
if member:
member.delete()
Expand Down
5 changes: 2 additions & 3 deletions ckan/logic/action/get.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,18 +117,17 @@ def member_list(context, data_dict=None):
"""
model = context['model']
user = context['user']
group = context['group']

group_id = data_dict['group']
obj_type = data_dict.get('object_type', None)
capacity = data_dict.get('capacity', None)

# User must be able to update the group to remove a member from it
if 'group' not in context:
context['group'] = model.Group.get( group_id )
check_access('group_show', context, data_dict)

q = model.Session.query(model.Member).\
filter(model.Member.group_id == group_id).\
filter(model.Member.group_id == group.id).\
filter(model.Member.state == "active")

if obj_type:
Expand Down
25 changes: 14 additions & 11 deletions ckan/tests/logic/test_member.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,26 @@ def setup_class(cls):
cls.username = 'testsysadmin'
cls.groupname = 'david'

model.Session.remove()
CreateTestData.create()
model.Session.remove()
model.repo.new_revision()
CreateTestData.create()
cls.pkgs = [
model.Package.by_name('warandpeace'),
model.Package.by_name('annakarenina'),
]

@classmethod
def teardown_class(cls):
model.repo.rebuild_db()

def _build_context( self, obj, obj_type, capacity='member'):
grp = model.Group.by_name(self.groupname)
ctx = { 'model': model,
'session': model.Session,
'user':self.username}
'user':self.username,
'group': grp,
}
dd = {
'group': self.groupname,
'group': grp,
'object': obj,
'object_type': obj_type,
'capacity': capacity }
Expand All @@ -34,17 +39,15 @@ def _add_member( self, obj, obj_type, capacity):
return get_action('member_create')(ctx,dd)

def test_member_add(self):
res = self._add_member( 'warandpeace', 'package', 'member')
res = self._add_member( self.pkgs[0].id, 'package', 'member')
assert 'capacity' in res and res['capacity'] == u'member'
assert 'group_id' in res and res['group_id'] == u'david'

def test_member_list(self):
_ = self._add_member( 'warandpeace', 'package', 'member')
_ = self._add_member( 'annakarenina', 'package', 'member')
_ = self._add_member( self.pkgs[0].id, 'package', 'member')
_ = self._add_member( self.pkgs[1].id, 'package', 'member')
ctx, dd = self._build_context('','package')
res = get_action('member_list')(ctx,dd)
assert res[0][0] == 'warandpeace', res
assert res[1][0] == 'annakarenina', res
assert len(res) == 2, res

ctx, dd = self._build_context('','user', 'admin')
res = get_action('member_list')(ctx,dd)
Expand Down

0 comments on commit 0c07d3b

Please sign in to comment.