def test__get_pmi__differ(client, faker, mock_pmi_engine): expected = PmiData(**faker.pmi_details(1)) mock_pmi_engine.return_value.__enter__.return_value.execute.return_value.fetchall.side_effect = [ [faker.pmi_details(1)], [faker.pmi_details(2)], [faker.pmi_details(3)] ] with pytest.raises(PmiException): get_pmi(nhs_number=expected.nhs_number, uhl_system_number=expected.uhl_system_number)
def test__get_pmi__nhs_found(client, faker, mock_pmi_engine): expected = PmiData(**faker.pmi_details(1)) mock_pmi_engine.return_value.__enter__.return_value.execute.return_value.fetchall.side_effect = [ [faker.pmi_details(1)], [faker.pmi_details(1)], [] ] actual = get_pmi(nhs_number=expected.nhs_number, uhl_system_number=expected.uhl_system_number) assert actual == expected
def get_pmi_details(drd): current_app.logger.info(f'get_pmi_details (Data request Data={drd.id})') try: error, v_nhs_number = convert_nhs_number(drd.nhs_number) if error is not None: drd.messages.append( DemographicsRequestDataMessage( type='warning', source='pmi_details', scope='nhs_number', message=error, )) error, v_s_number = convert_uhl_system_number(drd.uhl_system_number) if error is not None: drd.messages.append( DemographicsRequestDataMessage( type='warning', source='pmi_details', scope='uhl_system_number', message=error, )) pmi = get_pmi(nhs_number=v_nhs_number, uhl_system_number=v_s_number) if pmi is not None: pmi_details = DemographicsRequestPmiData(**pmi._asdict()) pmi_details.demographics_request_data_id = drd.id db.session.add(pmi_details) except PmiException as e: drd.messages.append( DemographicsRequestDataMessage( type='error', source='pmi_details', scope='pmi_details', message=e.message, )) except Exception as e: log_exception(e) drd.messages.append( DemographicsRequestDataMessage( type='error', source='pmi_details', scope='pmi_details', message=traceback.format_exc(), ))