Source code for pact_testgen.generator

from typing import Tuple

from .dialects.base import BaseDialect as Dialect
from .models import TestFile


[docs]def generate_tests(test_file: TestFile, dialect: Dialect) -> Tuple[str, str]: cases = [] provider_state_setup_functions = [] consumer_name = test_file.consumer.name provider_name = test_file.provider.name for test_case in test_file.test_cases: methods = dialect.method_template.render( test_case=test_case, consumer_name=consumer_name, provider_name=provider_name, pact_version=test_file.pact_version, ) assert methods, "Failed to generate test methods" if test_case.requires_provider_state: setup_function_name = dialect.get_setup_function_name(test_case) else: setup_function_name = None case = dialect.test_case_template.render( ps_names=test_case.combined_provider_state_names, file=test_file, methods=methods, setup_function_name=setup_function_name, ) cases.append(case) if test_case.requires_provider_state: provider_state_setup_functions.append( { "method_name": setup_function_name, "provider_states": test_case.provider_state_names, } ) all_tests = dialect.test_file_template.render( file=test_file, cases=cases, setup_functions=provider_state_setup_functions ) provider_states = dialect.provider_state_template.render( setup_functions=provider_state_setup_functions ) return all_tests, provider_states