def run_hermetic_test()

in dialogflow-cx/utilities.py [0:0]


def run_hermetic_test(sample):
    """Drives a hermetic sample test suite by mocking out client interactions."""
    user_input = ["MOCK_USER_INPUT"]
    with ExitStack() as stack:
        patch_client(
            sample.agent_delegator.client,
            "create_agent",
            stack,
            return_value=cx.Agent(name="MOCK_AGENT_NAME"),
        )
        patch_client(
            sample.webhook_delegator.client,
            "create_webhook",
            stack,
            return_value=cx.Webhook(name="MOCK_WEBHOOK_NAME"),
        )
        patch_client(
            sample.intent_delegator.client,
            "create_intent",
            stack,
            return_value=cx.Intent(name="MOCK_INTENT_NAME"),
        )
        patch_client(
            sample.page_delegator.client,
            "create_page",
            stack,
            return_value=cx.Page(name="MOCK_PAGE_NAME"),
        )
        patch_client(
            sample.start_flow_delegator.client,
            "get_flow",
            stack,
            return_value=cx.Flow(name="MOCK_FLOW_NAME"),
        )
        patch_client(sample.page_delegator.client, "update_page", stack)
        patch_client(sample.start_flow_delegator.client, "update_flow", stack)
        lro = mock.create_autospec(Operation, instance=True, spec_set=True)
        lro.running = lambda: False
        patch_client(
            sample.start_flow_delegator.client, "train_flow", stack, return_value=lro
        )
        patch_client(sample.page_delegator.client, "delete_page", stack)
        patch_client(sample.intent_delegator.client, "delete_intent", stack)
        patch_client(sample.webhook_delegator.client, "delete_webhook", stack)
        patch_client(sample.agent_delegator.client, "delete_agent", stack)
        patch_client(
            sample.test_cases_client,
            "create_test_case",
            stack,
            return_value=cx.TestCase(
                name="MOCK_TEST_CASE_NAME",
                display_name="MOCK_TEST_CASE_DISPLAY_NAME",
            ),
        )
        patch_client(sample.test_cases_client, "batch_delete_test_cases", stack)
        patch_client(
            sample.session_delegator.client,
            "detect_intent",
            stack,
            return_value=cx.DetectIntentResponse(),
        )

        def result():
            return cx.RunTestCaseResponse(
                result=cx.TestCaseResult(
                    test_result=cx.TestResult.PASSED,
                    conversation_turns=[
                        cx.ConversationTurn(
                            virtual_agent_output=cx.ConversationTurn.VirtualAgentOutput(
                                differences=[],
                            )
                        )
                    ],
                )
            )

        lro = mock.create_autospec(Operation, instance=True, spec_set=True)
        lro.result = result
        patch_client(sample.test_cases_client, "run_test_case", stack, return_value=lro)
        sample.setup()
        sample.run(user_input, quiet=True)
        sample.tear_down()