def start_timer(request): worker = Worker.objects.get(user=request.user) try: if request.method == 'POST': time_entry_data = load_encoded_json(request.body) assignment_id = None if 'assignment' in time_entry_data: assignment_id = time_entry_data['assignment'] timer = time_tracking.start_timer(worker, assignment_id=assignment_id) serializer = TaskTimerSerializer(timer) return serializer.data except TaskAssignment.DoesNotExist: raise BadRequest('Worker is not assigned to this task id.') except TimerError as e: raise BadRequest(e) except Exception as e: logger.exception(e) raise e
def test_start_timer_worker_not_assigned(self): # Find task assignment that worker is not assigned to. assignment = (TaskAssignment.objects.exclude( worker=self.worker).first()) with self.assertRaises(TaskAssignment.DoesNotExist): start_timer(self.worker, assignment_id=assignment.id)
def test_start_timer_with_assignment(self): start_timer(self.worker, assignment_id=self.assignment.id) timer = self.worker.timer self.assertEqual(timer.assignment, self.assignment)
def test_start_timer_already_running(self): timer = TaskTimer(worker=self.worker, start_time=self.time) timer.save() with self.assertRaisesRegex(TimerError, 'Timer has already started'): start_timer(self.worker)
def test_start_timer(self): start_timer(self.worker) timer = self.worker.timer self.assertEqual(timer.start_time, self.time)
def test_start_timer_worker_not_assigned(self): # Find task assignment that worker is not assigned to. assignment = (TaskAssignment.objects.exclude(worker=self.worker) .first()) with self.assertRaises(TaskAssignment.DoesNotExist): start_timer(self.worker, assignment_id=assignment.id)