Exemplo n.º 1
0
    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')
Exemplo n.º 2
0
    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]))
Exemplo n.º 3
0
    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')
Exemplo n.º 4
0
    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)')
Exemplo n.º 5
0
    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))
Exemplo n.º 6
0
    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')
Exemplo n.º 7
0
    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')
Exemplo n.º 8
0
    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))