Ejemplo n.º 1
0
    def test_get_todo_list(self):
        user = UserNode(uid='test_get_todo_list').save()
        task1 = user.create_task('t1')
        task2 = user.create_task('t2')
        task3 = user.create_task('t3')

        self.assertEqual([], user.get_todo_list())
        task1.status = STATUS.IN_PROGRESS
        task2.status = STATUS.IN_PROGRESS
        task3.status = STATUS.COMPLETED
        task1.save()
        task2.save()
        task3.save()

        step1_1 = StepInst(name='s1_1', status=STATUS.COMPLETED).save()
        step1_2 = StepInst(name='s1_2', status=STATUS.IN_PROGRESS).save()
        step2_1 = StepInst(name='s2_1', status=STATUS.READY_FOR_REVIEW).save()
        step2_2 = StepInst(name='s2_2', status=STATUS.SKIPPED).save()
        step3_1 = StepInst(name='s3_1', status=STATUS.IN_PROGRESS).save()
        step3_2 = StepInst(name='s3_2', status=STATUS.READY_FOR_REVIEW).save()

        task1.steps.connect(step1_1)
        task1.steps.connect(step1_2)
        task2.steps.connect(step2_1)
        task2.steps.connect(step2_2)
        task3.steps.connect(step3_1)
        task3.steps.connect(step3_2)

        todo_list = user.get_todo_list()
        todo_set = set(todo['task']['tid'] + todo['step']['sid'] for todo in todo_list)
        self.assertEqual(2, len(todo_set))
        self.assertIn(task1.tid + step1_2.sid, todo_set)
        self.assertIn(task2.tid + step2_1.sid, todo_set)
Ejemplo n.º 2
0
    def test_get_todo_list_with_role(self):
        user = UserNode(uid='test_get_todo_list_with_role').save()
        task = user.create_task('task', {
            'status': STATUS.IN_PROGRESS,
            'roles': ['teacher', 'student', 'parent']
        })
        step1 = StepInst(name='s1',
                         status=STATUS.IN_PROGRESS,
                         assignees=['student', 'parent'],
                         reviewers=['student', 'teacher']).save()
        step2 = StepInst(name='s2',
                         status=STATUS.READY_FOR_REVIEW,
                         assignees=['student', 'parent'],
                         reviewers=['student', 'teacher']).save()
        step3 = StepInst(name='s3',
                         status=STATUS.IN_PROGRESS,
                         assignees=['parent'],
                         reviewers=['teacher']).save()
        step4 = StepInst(name='s4',
                         status=STATUS.IN_PROGRESS,
                         assignees=['parent'],
                         reviewers=['teacher']).save()
        task.steps.connect(step1)
        task.steps.connect(step2)
        task.steps.connect(step3)
        task.steps.connect(step4)
        user.change_role(task, user, 'student')

        todo_list = user.get_todo_list()
        todo_set = set(todo['step']['sid'] for todo in todo_list)
        self.assertEqual(2, len(todo_set))
        self.assertIn(step1.sid, todo_set)
        self.assertIn(step2.sid, todo_set)
Ejemplo n.º 3
0
 def test_has_higher_permission(self):
     user1 = UserNode(uid='user1').save()
     user2 = UserNode(uid='user2').save()
     task = user1.create_task('sample task')
     user2.tasks.connect(task, {'acceptance': ACCEPTANCE.ACCEPT})
     with self.assertRaises(BadRequest):
         user2.assert_has_higher_permission(task, user1)
Ejemplo n.º 4
0
    def test_assert_no_user(self):
        user = UserNode(uid='abc').save()
        task = user.create_task(name='name')
        with self.assertRaises(BadRequest):
            task.assert_no_user()

        task = TaskInst(name='name').save()
        task.assert_no_user()
Ejemplo n.º 5
0
 def test_change_task_owner(self):
     user1 = UserNode(uid='test_change_task_owner_1').save()
     task = user1.create_task('task')
     user2 = UserNode(uid='test_change_task_owner_2').save()
     user2.tasks.connect(task)
     with self.assertRaises(NotAccept):
         user1.change_super_role(task, user2, SUPER_ROLE.OWNER)
     user2.respond_invitation(task, ACCEPTANCE.ACCEPT)
     user1.change_super_role(task, user2, SUPER_ROLE.OWNER)
     user1_has_task = user1.tasks.relationship(task)
     user2_has_task = user2.tasks.relationship(task)
     self.assertEqual(SUPER_ROLE.ADMIN, user1_has_task.super_role)
     self.assertEqual(SUPER_ROLE.OWNER, user2_has_task.super_role)
Ejemplo n.º 6
0
 def test_revoke_invitation(self,
                            mock_assert_has_task,
                            mock_assert_accept,
                            mock_assert_has_higher_permission):
     user1 = UserNode(uid='user3').save()
     user2 = UserNode(uid='user4').save()
     task = user1.create_task('sample task')
     user2.tasks.connect(task)
     user1.revoke_invitation(task, user2)
     self.assertEqual(mock_assert_has_task.call_count, 2)
     mock_assert_has_task.called_with(user1, task)
     mock_assert_has_task.called_with(user2, task)
     mock_assert_accept.assert_called_once_with(task)
     mock_assert_has_higher_permission.assert_called_once_with(task, user2)
Ejemplo n.º 7
0
 def test_change_role(self):
     user = UserNode(uid='test_change_role').save()
     task = user.create_task('task', {'roles': ['teacher', 'student']})
     user_has_task = user.tasks.relationship(task)
     user_has_task.super_role = SUPER_ROLE.STANDARD
     user_has_task.save()
     with self.assertRaises(NotAdmin):
         user.change_role(task, user, 'teacher')
     user_has_task.super_role = SUPER_ROLE.ADMIN
     user_has_task.save()
     user.change_role(task, user, 'teacher')
     user_has_task = user.tasks.relationship(task)
     self.assertEqual('teacher', user_has_task.role)
     with self.assertRaises(NoSuchRole):
         user.change_role(task, user, 'parent')
Ejemplo n.º 8
0
 def test_create_task(self):
     user = UserNode(uid='user node test uid').save()
     task = user.create_task('sample task')
     self.assertEqual('sample task', task.name)
     self.assertTrue(user.tasks.is_connected(task))
     has_task = user.tasks.relationship(task)
     self.assertEqual(SUPER_ROLE.OWNER, has_task.super_role)
     self.assertEqual(None, has_task.role)
     self.assertEqual(ACCEPTANCE.ACCEPT, has_task.acceptance)
     steps = task.steps
     self.assertEqual(2, len(steps))
     start = steps.get(name='Start')
     end = steps.get(name='End')
     self.assertEqual(NODE_TYPE.START, start.node_type)
     self.assertEqual(NODE_TYPE.END, end.node_type)
Ejemplo n.º 9
0
 def test_clone(self, mock_get_user):
     user = UserNode(uid='sample').save()
     task = user.create_task('task')
     task.status = STATUS.IN_PROGRESS
     step = StepInst(name='step', status=STATUS.IN_PROGRESS).save()
     start = task.steps.get(node_type=NODE_TYPE.START)
     end = task.steps.get(node_type=NODE_TYPE.END)
     start.nexts.connect(step)
     step.nexts.connect(end)
     task.steps.connect(step)
     new_task = task.clone()
     self.assertEqual(new_task.name, task.name)
     self.assertEqual(new_task.status, STATUS.NEW)
     new_start = new_task.steps.get(node_type=NODE_TYPE.START)
     new_step = new_task.steps.get(node_type=NODE_TYPE.NORMAL)
     new_end = new_task.steps.get(node_type=NODE_TYPE.END)
     self.assertEqual(new_step.name, 'step')
     self.assertEqual(new_step.status, STATUS.NEW)
     self.assertTrue(new_start.nexts.is_connected(new_step))
     self.assertTrue(new_step.nexts.is_connected(new_end))