Skip to content

Commit

Permalink
Added subscriber test. Manage copy and delete.
Browse files Browse the repository at this point in the history
  • Loading branch information
sgeulette committed Mar 27, 2017
1 parent f91fbb1 commit 71b840d
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 6 deletions.
14 changes: 9 additions & 5 deletions src/collective/task/subscribers.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,22 @@ def afterTransitionITaskSubscriber(obj, event):
def taskContent_created(task, event):
"""
Update parents localrole fields.
Moving a tree will trigger events from children to parents !
Moving or copying a tree will trigger events from children to parents !
"""
#print "op:%s, on:%s, np:%s, nn:%s" % (event.oldParent, event.oldName, event.newParent, event.newName)
if event.oldParent is None or event.oldName is None:
status = 'creation'
status = 'create'
elif event.newParent is None or event.newName is None:
status = 'delete'
return
elif event.oldParent != event.newParent:
status = 'move'
elif event.oldName != event.newName:
status = 'rename'
return
#print "MOVED %s on %s" % (status, task.absolute_url_path())
adapted = TaskContentAdapter(task)
if status == 'move':
adapted.set_higher_parents_value('parents_assigned_groups', 'calculate_pag')

# update all higher tree: needed when moving or copying
adapted.set_higher_parents_value('parents_assigned_groups', 'calculate_pag')
# update current
adapted.set_parents_value('parents_assigned_groups', adapted.calculate_pag(), modified=False)
35 changes: 34 additions & 1 deletion src/collective/task/tests/test_subscribers.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,15 @@ def setUp(self):
self.portal = self.layer['portal']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
login(self.portal, TEST_USER_NAME)
self.task1 = api.content.create(container=self.portal, type='task', id='task1', title='Task1')
self.folder = api.content.create(container=self.portal, type='Folder', id='folder', title='Folder')
self.task1 = api.content.create(container=self.portal, type='task', id='task1', title='Task1',
assigned_group='Site Administrators')
self.task2 = api.content.create(container=self.folder, type='task', id='task2', title='Task2',
assigned_group='Administrators')
self.task3 = api.content.create(container=self.task2, type='task', id='task3', title='Task3',
assigned_group='Reviewers')
self.task4 = api.content.create(container=self.task3, type='task', id='task4', title='Task4',
assigned_group='')

def test_afterTransitionITaskSubscriber(self):
# assigned_user is None
Expand All @@ -35,3 +43,28 @@ def test_afterTransitionITaskSubscriber(self):
api.content.transition(obj=self.task1, transition='back_in_to_assign')
self.assertFalse(self.task1.auto_to_do_flag)
self.assertEqual(api.content.get_state(obj=self.task1), 'to_assign')

def test_taskContent_created(self):
# check creation
self.assertEqual(self.task1.parents_assigned_groups, None)
self.assertEqual(self.task2.parents_assigned_groups, None)
self.assertEqual(self.task3.parents_assigned_groups, ['Administrators'])
self.assertListEqual(self.task4.parents_assigned_groups, ['Administrators', 'Reviewers'])
# check copy
api.content.copy(source=self.task2, target=self.task1)
self.assertEqual(self.task1.parents_assigned_groups, None)
self.assertEqual(self.task1['task2'].parents_assigned_groups, ['Site Administrators'])
self.assertListEqual(self.task1['task2']['task3'].parents_assigned_groups,
['Site Administrators', 'Administrators'])
self.assertListEqual(self.task1['task2']['task3']['task4'].parents_assigned_groups,
['Site Administrators', 'Administrators', 'Reviewers'])
# check move
api.content.delete(obj=self.task1['task2'])
self.assertEqual(self.task1.objectIds(), [])
api.content.move(source=self.task2, target=self.task1)
self.assertEqual(self.task1.parents_assigned_groups, None)
self.assertEqual(self.task2.parents_assigned_groups, ['Site Administrators'])
self.assertListEqual(self.task3.parents_assigned_groups, ['Site Administrators', 'Administrators'])
self.assertListEqual(self.task4.parents_assigned_groups,
['Site Administrators', 'Administrators', 'Reviewers'])

0 comments on commit 71b840d

Please sign in to comment.