def test_process_queryset_filter_by_flowcls_succeed(self): queryset = managers.ProcessQuerySet(model=Process).filter(flow_cls=ChildFlow) self.assertEqual(str(queryset.query).strip(), 'SELECT "viewflow_process"."id", "viewflow_process"."flow_cls", "viewflow_process"."status",' ' "viewflow_process"."created", "viewflow_process"."finished" FROM "viewflow_process"' ' WHERE "viewflow_process"."flow_cls" = tests/test_managers.ChildFlow')
def test_process_queryset_coerce_classes(self): process1 = Process.objects.create(flow_cls=Flow) process2 = ChildProcess.objects.create(flow_cls=ChildFlow) process3 = GrandChildProcess.objects.create(flow_cls=GrandChildFlow) with self.assertNumQueries(1): queryset = managers.ProcessQuerySet(model=Process).coerce_for([GrandChildFlow, ChildFlow, Flow]) self.assertEqual(set(queryset), set([process1, process2, process3]))
def _test_task_queryset_filter_by_flowcls_succeed(self): queryset = managers.ProcessQuerySet(model=Task).filter(flow_task=ChildFlow.start) self.assertEqual(str(queryset.query).strip(), 'SELECT "viewflow_task"."id", "viewflow_task"."flow_task", "viewflow_task"."flow_task_type",' ' "viewflow_task"."status", "viewflow_task"."created", "viewflow_task"."started",' ' "viewflow_task"."finished", "viewflow_task"."token", "viewflow_task"."process_id",' ' "viewflow_task"."owner_id", "viewflow_task"."external_task_id",' ' "viewflow_task"."owner_permission", "viewflow_task"."comments" FROM "viewflow_task"' ' WHERE "viewflow_task"."flow_task" = tests/test_managers.ChildFlow.start')
def test_process_queryset_cource_for_query(self): queryset = managers.ProcessQuerySet(model=Process).coerce_for([ChildFlow]) self.assertEqual(str(queryset.query), 'SELECT "viewflow_process"."id", "viewflow_process"."flow_cls", "viewflow_process"."status",' ' "viewflow_process"."created", "viewflow_process"."finished",' ' "tests_childprocess"."process_ptr_id", "tests_childprocess"."comment"' ' FROM "viewflow_process" LEFT OUTER JOIN "tests_childprocess"' ' ON ( "viewflow_process"."id" = "tests_childprocess"."process_ptr_id" )' ' WHERE "viewflow_process"."flow_cls" IN (tests/test_managers.ChildFlow)')
def test_process_queryset_prefetch_related(self): process = ChildProcess.objects.create(flow_class=ChildFlow) # process -> participatns queryset = (managers.ProcessQuerySet(model=Process).coerce_for( [ChildFlow]).prefetch_related( Prefetch('participants', queryset=User.objects.filter(is_staff=True)))) self.assertEqual([process], list(queryset)) self.assertEqual([], list(queryset[0].participants.filter(is_staff=True))) # participants -> processes queryset = (User.objects.filter(is_staff=True).prefetch_related( Prefetch('childprocess', queryset=ChildProcess.objects.all()))) self.assertEqual([], list(queryset))
def test_process_queryset_cource_for_query(self): queryset = managers.ProcessQuerySet(model=Process).coerce_for( [ChildFlow]) self.assertEqual( sqlparse.format(str(queryset.query), reindent=True), 'SELECT "viewflow_process"."id",\n' ' "viewflow_process"."flow_class",\n' ' "viewflow_process"."status",\n' ' "viewflow_process"."created",\n' ' "viewflow_process"."finished",\n' ' "tests_childprocess"."process_ptr_id",\n' ' "tests_childprocess"."comment"\n' 'FROM "viewflow_process"\n' 'LEFT OUTER JOIN "tests_childprocess" ON ("viewflow_process"."id" = "tests_childprocess"."process_ptr_id")\n' 'WHERE "viewflow_process"."flow_class" IN (tests/test_managers.ChildFlow)\n' 'ORDER BY "viewflow_process"."created" DESC')
def test_process_queryset_filter_by_flowcls_succeed(self): queryset = managers.ProcessQuerySet(model=Process).filter( flow_class=ChildFlow) self.assertEqual( str(queryset.query).strip(), 'SELECT "viewflow_process"."id", "viewflow_process"."flow_class",' ' "viewflow_process"."status",' ' "viewflow_process"."created",' ' "viewflow_process"."finished",' ' "viewflow_process"."artifact_content_type_id",' ' "viewflow_process"."artifact_object_id",' ' "viewflow_process"."data"' ' FROM "viewflow_process"' '' ' WHERE "viewflow_process"."flow_class" = tests/test_managers.ChildFlow' ' ORDER BY "viewflow_process"."created" DESC')
def test_process_queryset_cource_values_list(self): process = ChildProcess.objects.create(flow_class=ChildFlow) queryset = managers.ProcessQuerySet(model=Process).coerce_for( [ChildFlow]).values_list('id') self.assertEqual([(process.pk, )], list(queryset))