Source code for q2_cores.FiservCommunicatorSignature.queries.demographic_info_query

import logging
import uuid
from datetime import datetime, timezone
from pathlib import Path

from q2_sdk.models.cores.queries.base_query import BaseQuery

from ...query_helpers import JinjaBasedQuery


[docs] class DemographicInfoQuery(BaseQuery): """ Handles the construction of demographic core requests and mock responses for testing for FiservCommunicatorSignature core. """ def __init__(self, logger: logging.Logger, config, req_dict: dict): """ :param logger: reference to calling request's logger (self.logger in your extension) :param req_dict: Required data dictionary for queries. Dictionary will contain requested information, using the SSN as the identifier """ self.demographic_info_query: JinjaBasedQuery self.config = config self.req_dict = req_dict self.context = {} super().__init__(logger)
[docs] def build(self) -> str: """ Constructs and returns the core request from a template and provided parameters. """ request_type = "demographic_info" path = Path(__file__).parent templates_path = path / "templates" request_template = f"{request_type}_request.xml" mock_path = path / "mock_responses" mock_response_template = f"{request_type}_mock_response.xml" self.context = { "configs": self.config, "date": datetime.now(timezone.utc), "cif": self.req_dict["cif"], "guid1": uuid.uuid4(), "guid2": uuid.uuid4(), } self.demographic_info_query = JinjaBasedQuery( logger=self.logger, templates_path=templates_path, request_template=request_template, mock_path=mock_path, mock_response_template=mock_response_template, context=self.context, ) request = self.demographic_info_query.build() self.logger.info(f"Created a {request_type} call with {request_template}") 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.FiservCommunicatorSignature.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()