Source code for q2_cores.FiservCleartouch.queries.demographic_info_query

import logging
from enum import Enum
from pathlib import Path
from typing import Optional

from q2_cores.query_helpers import JinjaBasedQuery
from q2_sdk.hq.models.online_user import OnlineUser
from q2_sdk.models.cores.queries.base_query import BaseQuery


[docs] class SearchMethod(Enum): """ Class designed to determine the search method to use when retrieving demographic information from the core """ DEMOGRAPHIC_INFO = "DEMOGRAPHIC_INFO" ACCOUNT_RELATION = "ACCOUNT_RELATION"
[docs] class DemographicInfoQuery(BaseQuery): """Base query for Fiserv Cleartouch""" def __init__( self, logger: logging.Logger, request_dict: dict, search_method=SearchMethod.DEMOGRAPHIC_INFO, configs=None, online_user: Optional[OnlineUser] = None, ): self.demographic_info_query = JinjaBasedQuery self.request_dict: dict = request_dict self.search_method = search_method self.configs = configs self.online_user = online_user super().__init__(logger)
[docs] def build(self) -> str: """Creates the query""" path = Path(__file__).parent template_name = self.search_method.value.lower() request_template = f"{template_name}_request.xml" mock_path = path / "mock_responses" mock_response_template = f"{template_name}_mock_response.xml" self.demographic_info_query = JinjaBasedQuery( logger=self.logger, templates_path=Path(__file__).parent / "templates", request_template=request_template, mock_response_template=mock_response_template, context=self.request_dict, mock_path=mock_path, ) self.logger.info(f"Created a {template_name} call with {request_template}") request = self.demographic_info_query.build() return request
[docs] def mock_response(self, response_type: str = None) -> str: """ Constructs and returns a mock core response used for testing queries and mappers. By default, mock response will return a successful cif core response. However, this can be changed to handle various responses via the response_type param. The response_type refers to the <expected_response>_mock_response.xml file located in q2_core.FiservCleartouch.mock_responses directory. ``response_type`` defaults to ``demographic_info`` if not provided. """ if response_type: self.demographic_info_query.mock_response_template = ( f"{response_type}_mock_response.xml" ) return self.demographic_info_query.mock_response()