def case_updated_msg_with_metadata_field(context, field, expected_field_value): start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_CASE_QUEUE, functools.partial(store_first_message_in_context, context=context)) test_helper.assertEqual( context.first_message['payload']['metadata'][field], expected_field_value)
def gather_welsh_reminder_uac_events(context, number_of_matching_cases): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=number_of_matching_cases * 2, collection_exercise_id=context.collection_exercise_id)) test_helper.assertEquals(len(context.messages_received), number_of_matching_cases * 2) context.reminder_uac_updated_events = context.messages_received.copy() qids = [ uac_updated['payload']['uac']['questionnaireId'] for uac_updated in context.reminder_uac_updated_events ] test_helper.assertEqual( len([qid for qid in qids if qid.startswith('02')]), number_of_matching_cases, (f'Expected to find an "02" questionnaire type QID ' f'for each of the {number_of_matching_cases} cases, found {qids}')) test_helper.assertEqual( len([qid for qid in qids if qid.startswith('03')]), number_of_matching_cases, (f'Expected to find an "03" questionnaire type QID ' f'for each of the {number_of_matching_cases} cases, found {qids}')) context.reminder_case_ids = { uac['payload']['uac']['caseId'] for uac in context.reminder_uac_updated_events } context.messages_received = []
def action_cancel_sent_to_fwm(context, address_type): context.messages_received = [] start_listening_to_rabbit_queue(Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial( field_work_cancel_callback, context=context)) test_helper.assertEqual(context.fwmt_emitted_case_id, context.first_case["id"]) test_helper.assertEqual(context.addressType, address_type) test_helper.assertEqual(context.field_action_cancel_message['surveyName'], context.first_case['survey'])
def listen_for_ad_hoc_uac_updated_message(context, questionnaire_type): context.messages_received = [] start_listening_to_rabbit_queue(Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial(store_all_uac_updated_msgs, context=context)) uac_updated_event = context.messages_received[0] context.requested_uac = uac_updated_event['payload']['uac']['uac'] context.requested_qid = uac_updated_event['payload']['uac']['questionnaireId']
def check_uac_message_is_received(context): context.messages_received = [] context.expected_message_received = False start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial(_uac_callback, context=context)) test_helper.assertTrue(context.expected_message_received)
def refusal_received(context): start_listening_to_rabbit_queue( Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(field_work_cancel_callback, context=context)) test_helper.assertEqual(context.fwmt_emitted_case_id, context.refused_case_id) test_helper.assertEqual(context.addressType, 'HH')
def send_supplementary_materials_fulfilment_requested_event( context, fulfilment_code): start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_CASE_QUEUE, functools.partial(store_first_message_in_context, context=context, type_filter='CASE_CREATED')) context.case_created_events = [context.first_message] send_print_fulfilment_request(context, fulfilment_code)
def _check_emitted_action_instructions(context, expected_value): context.expected_cases_for_action = context.case_created_events start_listening_to_rabbit_queue(Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(_fieldwork_message_callback, context=context, expected_value=expected_value)) test_helper.assertFalse(context.expected_cases_for_action, msg="Didn't find all expected fieldwork action instruction messages")
def check_case_created_message_is_emitted(context): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_CASE_QUEUE, functools.partial(store_first_message_in_context, context=context)) test_helper.assertEqual( context.first_message['payload']['collectionCase']['id'], context.case_id) context.case_created_events = [context.first_message]
def action_request_event_sent_to_fwm(context): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(_field_work_receipt_callback, context=context)) test_helper.assertEqual(context.fwmt_emitted_case_id, context.first_case["id"]) test_helper.assertEqual(context.addressType, 'HH') test_helper.assertEqual(context.fwmt_emitted_undelivered_flag, True)
def new_addresses_sent_to_field_secureType_false(context): context.messages_received = [] start_listening_to_rabbit_queue(Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial( store_all_msgs_in_context, context=context, expected_msg_count=1)) field_msg = context.messages_received[0] test_helper.assertEqual(field_msg['actionInstruction'], 'CREATE') test_helper.assertFalse(field_msg['secureEstablishment'])
def get_case_created_events(context, expected_number): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_CASE_QUEUE, functools.partial( store_all_case_created_msgs_by_collection_exercise_id, context=context, expected_msg_count=expected_number, collection_exercise_id=context.collection_exercise_id)) return context.messages_received.copy()
def get_last_uac_updated_event(context): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=1, collection_exercise_id=context.collection_exercise_id)) context.last_uac_updated_event = context.messages_received[0] context.messages_received = []
def _get_emitted_uac(context): context.messages_received = [] start_listening_to_rabbit_queue(Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_msgs_in_context, context=context, expected_msg_count=1, type_filter='UAC_UPDATED')) test_helper.assertEqual(len(context.messages_received), 1) return context.messages_received[0]['payload']['uac']
def check_message_to_field_for_ccs_case(context, action_instruction_type): context.messages_received = [] start_listening_to_rabbit_queue(Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial( store_all_msgs_in_context, context=context, expected_msg_count=1)) msg_to_field = context.messages_received[0] test_helper.assertEquals(msg_to_field['caseId'], context.ccs_case['id']) test_helper.assertEquals(msg_to_field['actionInstruction'], action_instruction_type) test_helper.assertEqual(msg_to_field['surveyName'], context.ccs_case['surveyType'])
def get_case_updated_events(context, expected_number): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_CASE_QUEUE, functools.partial(store_all_msgs_in_context, context=context, expected_msg_count=expected_number, type_filter='CASE_UPDATED')) case_updated_events = context.messages_received.copy() context.messages_received = [] return case_updated_events
def create_msg_sent_to_field(context): context.messages_received = [] start_listening_to_rabbit_queue(Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial( _field_work_create_callback, context=context)) test_helper.assertEqual(context.fwmt_emitted_case_id, context.case_id) test_helper.assertEqual(context.addressType, "SPG") test_helper.assertEqual(context.field_action_create_message['surveyName'], "CENSUS") test_helper.assertEqual(context.field_action_create_message['uprn'], f"999{context.field_action_create_message['caseRef']}") test_helper.assertEqual(context.field_action_create_message['estabUprn'], "77469066363") # original estabUprn should be retained
def get_qid_and_uac_from_emitted_child_uac(context): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=1, collection_exercise_id=context.collection_exercise_id)) return context.messages_received[0]['payload']['uac'][ 'uac'], context.messages_received[0]['payload']['uac'][ 'questionnaireId']
def check_survey_launched_case_updated_events(context, case_ids): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_CASE_QUEUE, functools.partial(store_all_msgs_in_context, context=context, expected_msg_count=len(case_ids), type_filter='CASE_UPDATED')) for message in context.messages_received: test_helper.assertTrue( message['payload']['collectionCase']['surveyLaunched'], (f'Expected to find {len(case_ids)} CASE_UPDATED events as a result of survey launches ' f'found event with "surveyLaunched"=False, cases expected={case_ids}' )) test_helper.assertIn(message['payload']['collectionCase']['id'], case_ids, 'Found event for unexpected case')
def check_receipt_to_field_msg(context, action_instruction_type): if action_instruction_type == 'NONE': check_no_msgs_sent_to_queue(context, Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial( store_all_msgs_in_context, context=context, expected_msg_count=0), timeout=1) return context.messages_received = [] start_listening_to_rabbit_queue(Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial( store_all_msgs_in_context, context=context, expected_msg_count=1)) msg_to_field = context.messages_received[0] test_helper.assertEquals(msg_to_field['caseId'], context.receipting_case['id']) test_helper.assertEquals(msg_to_field['actionInstruction'], action_instruction_type) test_helper.assertEqual(msg_to_field['surveyName'], context.receipting_case['survey'])
def get_and_test_case_and_uac_msgs_are_correct(context, questionnaire_types): get_and_check_sample_load_case_created_messages(context) context.expected_uacs_cases = get_extended_case_created_events_for_uacs( context, questionnaire_types) start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=len(context.expected_uacs_cases), collection_exercise_id=context.collection_exercise_id)) test_helper.assertEqual(len(context.messages_received), len(context.expected_uacs_cases)) context.uac_created_events = context.messages_received.copy() test_uacs_correct(context) context.messages_received = []
def check_correct_individual_uac_updated_message_is_emitted(context): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial(store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=1, collection_exercise_id=Config.CCS_COLLEX_ID)) uac_updated_payload = context.messages_received[0]['payload']['uac'] test_helper.assertEqual( uac_updated_payload['caseId'], context.ccs_case['id'], 'UAC updated event case ID does not match the case it was requested for' ) test_helper.assertEqual( uac_updated_payload['questionnaireId'], context.expected_questionnaire_id, 'The QID on the emitted UAC_UPDATED message does not match expected')
def only_unrefused_cases_are_sent_to_field(context): context.expected_cases_for_action = [ case_created['payload']['collectionCase'] for case_created in context.case_created_events if case_created['payload']['collectionCase']['id'] != context.refused_case_id ] context.fieldwork_case_ids = [ case['id'] for case in context.expected_cases_for_action ] start_listening_to_rabbit_queue( Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(fieldwork_create_message_callback, context=context)) test_helper.assertFalse( context.expected_cases_for_action, msg="Didn't find all expected fieldwork action instruction messages")
def check_correct_uac_updated_message_is_emitted_for_rops_link(context): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=1, collection_exercise_id=context.collection_exercise_id)) uac_updated_payload = context.messages_received[0]['payload']['uac'] test_helper.assertEqual( uac_updated_payload['caseId'], context.case_details['id'], 'UAC updated event case ID does not match the case it was requested for' ) test_helper.assertEqual( uac_updated_payload['questionnaireId'], context.requested_qid, 'UAC updated event QID does not match what was submitted to R-ops')
def listen_for_two_ad_hoc_uac_updated_messages(context, questionnaire_type): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=2, collection_exercise_id=context.collection_exercise_id)) uac_updated_events = context.messages_received test_helper.assertEqual( len(uac_updated_events), len(context.print_cases), 'UAC Updated Events does not match number of Case Created Events') context.requested_uac_and_qid = [] for uac in uac_updated_events: compare_case_and_uac(context, questionnaire_type, uac)
def check_correct_ccs_actioninstruction_sent_to_fwmt(context): context.messages_received = [] start_listening_to_rabbit_queue( Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(_field_callback, context=context)) action_instruction = context.emitted_action_instruction test_helper.assertEqual(context.ccs_case['id'], action_instruction['caseId']) test_helper.assertEqual(float(context.ccs_case['latitude']), action_instruction['latitude']) test_helper.assertEqual(float(context.ccs_case['longitude']), action_instruction['longitude']) test_helper.assertEqual(context.ccs_case['postcode'], action_instruction['postcode']) test_helper.assertEqual('CCS', action_instruction['surveyName']) test_helper.assertEqual(context.ccs_case['estabType'], action_instruction['estabType'])
def _check_emitted_action_instructions(context, filter_column, treatment_code, expected_ce1_complete): context.expected_cases_for_action = [ case_created['payload']['collectionCase'] for case_created in context.case_created_events if case_created['payload']['collectionCase'][filter_column] == treatment_code ] context.fieldwork_case_ids = [ case['id'] for case in context.expected_cases_for_action ] context.expected_ce1_complete = expected_ce1_complete start_listening_to_rabbit_queue( Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(fieldwork_create_message_callback, context=context)) test_helper.assertFalse( context.expected_cases_for_action, msg="Didn't find all expected fieldwork action instruction messages")
def gather_ce_estab_messages_emitted_with_qids(context, questionnaire_types): expected_number_of_uac_messages = 0 for case in context.case_created_events: expected_number_of_uac_messages += case['payload']['collectionCase'][ 'ceExpectedCapacity'] context.expected_uacs_cases = get_extended_case_created_events_for_uacs( context, questionnaire_types) start_listening_to_rabbit_queue( Config.RABBITMQ_RH_OUTBOUND_UAC_QUEUE, functools.partial( store_all_uac_updated_msgs_by_collection_exercise_id, context=context, expected_msg_count=expected_number_of_uac_messages, collection_exercise_id=context.collection_exercise_id)) test_helper.assertEqual(len(context.messages_received), expected_number_of_uac_messages) context.uac_created_events = context.messages_received.copy() test_uacs_correct_for_estab_units(context, expected_number_of_uac_messages, questionnaire_types) context.messages_received = []
def fwmt_update_message_sent_for_first_case(context): context.expected_cases_for_action = [ event['payload']['collectionCase'] for event in context.case_updated_events if (event['payload']['collectionCase']['address']['estabType'] != "TRANSIENT PERSONS" and (event['payload']['collectionCase']['address']['addressType'] != 'CE' or event['payload']['collectionCase']['address']['region'][0] != 'N') ) ] context.fieldwork_case_ids = [ case['id'] for case in context.expected_cases_for_action ] start_listening_to_rabbit_queue( Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(field_work_update_callback, context=context)) test_helper.assertFalse( context.expected_cases_for_action, msg="Didn't find all expected fieldwork action instruction messages")
def mark_cases_as_invalid(context): invalid_address_case_ids = [ case['payload']['collectionCase']['id'] for case in context.case_created_events ] for case_id in invalid_address_case_ids: send_invalid_address_message_to_rabbit(case_id, "CC") case_updated_events = get_case_updated_events( context, len(context.case_created_events)) for event in case_updated_events: test_helper.assertIn(event['payload']['collectionCase']['id'], invalid_address_case_ids, 'Unexpected case ID found on updated event') context.cancels_to_ignore = [] start_listening_to_rabbit_queue( Config.RABBITMQ_OUTBOUND_FIELD_QUEUE, functools.partial(ignore_field_cancel_msgs, context=context, expected_msg_count=len(case_updated_events)))