def test_returns_correct_messages_given_two_items(): items = [ build_spine_item( time="2019-12-31T23:37:55.334+0000", conversation_id="convo_abc", guid="message_a", interaction_id="urn:nhs:names:services:gp2gp/MCCI_IN010000UK13", message_sender="123456789012", message_recipient="121212121212", message_ref="NotProvided", jdi_event="NONE", raw="", from_system="EMIS", to_system="Unknown", ), build_spine_item( time="2019-12-31T22:16:02.249+0000", conversation_id="convo_xyz", guid="message_b", interaction_id="urn:nhs:names:services:gp2gp/MCCI_IN010000UK13", message_sender="456456456456", message_recipient="343434343434", message_ref="convo_xyz", jdi_event="23", raw="", from_system="Vision", to_system="TPP", ), ] expected = [ Message( time=datetime(2019, 12, 31, 23, 37, 55, 334000, tzutc()), conversation_id="convo_abc", guid="message_a", interaction_id="urn:nhs:names:services:gp2gp/MCCI_IN010000UK13", from_party_asid="123456789012", to_party_asid="121212121212", message_ref=None, error_code=None, from_system="EMIS", to_system="Unknown", ), Message( time=datetime(2019, 12, 31, 22, 16, 2, 249000, tzutc()), conversation_id="convo_xyz", guid="message_b", interaction_id="urn:nhs:names:services:gp2gp/MCCI_IN010000UK13", from_party_asid="456456456456", to_party_asid="343434343434", message_ref="convo_xyz", error_code=23, from_system="Vision", to_system="TPP", ), ] actual = construct_messages_from_splunk_items(items) assert list(actual) == expected
def test_returns_correct_message_when_from_system_and_to_system_is_not_present( ): items = [ build_spine_item( time="2019-12-31T23:37:55.334+0000", conversation_id="convo_abc", guid="message_a", interaction_id="urn:nhs:names:services:gp2gp/MCCI_IN010000UK13", message_sender="123456789012", message_recipient="121212121212", message_ref="NotProvided", jdi_event="NONE", raw="", ), ] expected = [ Message( time=datetime(2019, 12, 31, 23, 37, 55, 334000, tzutc()), conversation_id="convo_abc", guid="message_a", interaction_id="urn:nhs:names:services:gp2gp/MCCI_IN010000UK13", from_party_asid="123456789012", to_party_asid="121212121212", message_ref=None, error_code=None, from_system=None, to_system=None, ) ] actual = construct_messages_from_splunk_items(items) assert list(actual) == expected
def test_read_spine_messages_reads_multiple_messages(): csv_rows = [build_spine_item(guid=f"guid{i}") for i in range(10)] mock_s3_conn = MockS3( objects=[ MockS3Object( bucket="test_bucket", key="data/1.csv.gz", contents=_spine_csv_gz(csv_rows[:4]), ), MockS3Object( bucket="test_bucket", key="data/2.csv.gz", contents=_spine_csv_gz(csv_rows[4:]), ), ] ) io = TransferClassifierIO(s3_data_manager=S3DataManager(mock_s3_conn)) expected_guids = [f"guid{i}" for i in range(10)] actual_messages = io.read_spine_messages( ["s3://test_bucket/data/1.csv.gz", "s3://test_bucket/data/2.csv.gz"] ) actual_guids = [message.guid for message in actual_messages] assert actual_guids == expected_guids
def test_returns_appropriate_time_given_time_with_british_timezones(time_input): items = [ build_spine_item( time=time_input, conversation_id="convo_abc", guid="message_a", interaction_id="urn:nhs:names:services:gp2gp/MCCI_IN010000UK13", message_sender="123456789012", message_recipient="121212121212", message_ref="NotProvided", jdi_event="NONE", raw="", ) ] expected_time = datetime(2019, 7, 1, 9, 10, 0, 334000, tzutc()) messages = construct_messages_from_splunk_items(items) actual_time = next(messages).time assert actual_time == expected_time
def test_read_spine_messages_reads_single_message_correctly(): csv_row = build_spine_item( time="2019-12-31T23:37:55.334+0000", conversation_id="abc", guid="message_a", interaction_id="an_interaction_id", message_sender="sender_x", message_recipient="recipient_y", message_ref="NotProvided", jdi_event="NONE", raw="", from_system="SupplierA", to_system="Unknown", ) mock_s3_conn = MockS3( objects=[ MockS3Object( bucket="test_bucket", key="data/1.csv.gz", contents=_spine_csv_gz([csv_row]) ) ] ) io = TransferClassifierIO(s3_data_manager=S3DataManager(mock_s3_conn)) expected_spine_message = Message( time=datetime(2019, 12, 31, 23, 37, 55, 334000, tzutc()), conversation_id="abc", guid="message_a", interaction_id="an_interaction_id", from_party_asid="sender_x", to_party_asid="recipient_y", message_ref=None, error_code=None, from_system="SupplierA", to_system="Unknown", ) actual = io.read_spine_messages(["s3://test_bucket/data/1.csv.gz"]) assert list(actual) == [expected_spine_message]