def METHOD_NAME(self):
    disable_component_obj = DisabledComponent.objects.create(
        component_code=random.choice(self.components).code,
        action=DisabledComponent.ACTION_TYPE_RETRIEVE,
        scope=DisabledComponent.SCOPE_TYPE_FLOW,
    )
    cases = [
        {
            "action": DisabledComponent.ACTION_TYPE_RETRIEVE,
            "scope": DisabledComponent.SCOPE_TYPE_FLOW,
            "query_scope": DisabledComponent.SCOPE_TYPE_FLOW,
            "not_found": True,
        },
        {
            "action": DisabledComponent.ACTION_TYPE_RETRIEVE,
            "scope": DisabledComponent.SCOPE_TYPE_FLOW,
            "query_scope": DisabledComponent.SCOPE_TYPE_TASK,
            "not_found": False,
        },
        {
            "action": DisabledComponent.ACTION_TYPE_RETRIEVE,
            "scope": DisabledComponent.SCOPE_TYPE_ALL,
            "query_scope": DisabledComponent.SCOPE_TYPE_FLOW,
            "not_found": True,
        },
        {
            "action": DisabledComponent.ACTION_TYPE_LIST,
            "scope": DisabledComponent.SCOPE_TYPE_FLOW,
            "query_scope": DisabledComponent.SCOPE_TYPE_FLOW,
            "not_found": False,
        },
    ]
    for case in cases:
        disable_component_obj.scope = case["scope"]
        disable_component_obj.action = case["action"]
        disable_component_obj.save()
        try:
            code = self.call_by_action(
                "detail", query_params={"scope": case["query_scope"]}, code=disable_component_obj.component_code
            )["data"]["code"]
        except AssertionError:
            self.assertTrue(case["not_found"], True)
            continue
        self.assertEqual(code, disable_component_obj.component_code)