|
1 | 1 | """Tests for audit_table functions""" |
2 | | - |
| 2 | +import unittest |
3 | 3 | from unittest import TestCase |
4 | 4 | from unittest.mock import patch |
5 | 5 | from boto3 import client as boto3_client |
|
10 | 10 | from tests.utils_for_recordprocessor_tests.generic_setup_and_teardown import GenericSetUp, GenericTearDown |
11 | 11 | from tests.utils_for_recordprocessor_tests.values_for_recordprocessor_tests import MockFileDetails, FileDetails |
12 | 12 | from tests.utils_for_recordprocessor_tests.utils_for_recordprocessor_tests import ( |
13 | | - deserialize_dynamodb_types, |
14 | 13 | add_entry_to_table, |
15 | 14 | ) |
16 | 15 |
|
|
21 | 20 | FileStatus, |
22 | 21 | ) |
23 | 22 |
|
24 | | - from audit_table import get_next_queued_file_details, change_audit_table_status_to_processed |
| 23 | + from audit_table import update_audit_table_status |
25 | 24 | from clients import REGION_NAME |
26 | 25 |
|
27 | 26 |
|
@@ -49,60 +48,32 @@ def get_table_items() -> list: |
49 | 48 |
|
50 | 49 | return dynamodb_client.scan(TableName=AUDIT_TABLE_NAME).get("Items", []) |
51 | 50 |
|
52 | | - def test_get_next_queued_file_details(self): |
53 | | - """Test that the get_next_queued_file_details function returns the correct file details""" |
54 | | - # NOTE: Throughout this test the assertions will be checking for the next queued RAVS_RSV file. |
55 | | - queue_to_check = "RAVS_RSV" |
56 | | - |
57 | | - # Test case 1: no files in audit table |
58 | | - self.assertIsNone(get_next_queued_file_details(queue_to_check)) |
59 | | - |
60 | | - # Test case 2: files in audit table, but none of the files are in the RAVS_RSV queue |
61 | | - add_entry_to_table(MockFileDetails.flu_emis, file_status=FileStatus.QUEUED) # different queue |
62 | | - add_entry_to_table(MockFileDetails.rsv_emis, file_status=FileStatus.QUEUED) # different queue |
63 | | - add_entry_to_table(MockFileDetails.ravs_flu, file_status=FileStatus.QUEUED) # different queue |
64 | | - add_entry_to_table(MockFileDetails.ravs_rsv_1, FileStatus.PROCESSED) # same queue but already processed |
65 | | - self.assertIsNone(get_next_queued_file_details(queue_to_check)) |
66 | | - |
67 | | - # Test case 3: one queued file in the ravs_rsv queue |
68 | | - add_entry_to_table(MockFileDetails.ravs_rsv_2, file_status=FileStatus.QUEUED) |
69 | | - expected_table_entry = {**MockFileDetails.ravs_rsv_2.audit_table_entry, "status": {"S": FileStatus.QUEUED}} |
70 | | - self.assertEqual(get_next_queued_file_details(queue_to_check), deserialize_dynamodb_types(expected_table_entry)) |
71 | | - |
72 | | - # # Test case 4: multiple queued files in the RAVS_RSV queue |
73 | | - # Note that ravs_rsv files 3 and 4 have later timestamps than file 2, so file 2 remains the first in the queue |
74 | | - add_entry_to_table(MockFileDetails.ravs_rsv_3, file_status=FileStatus.QUEUED) |
75 | | - add_entry_to_table(MockFileDetails.ravs_rsv_4, file_status=FileStatus.QUEUED) |
76 | | - self.assertEqual(get_next_queued_file_details(queue_to_check), deserialize_dynamodb_types(expected_table_entry)) |
77 | | - |
78 | | - def test_change_audit_table_status_to_processed(self): |
79 | | - """Checks audit table correctly updates a record as processed""" |
| 51 | + def test_update_audit_table_status(self): |
| 52 | + """Checks audit table correctly updates a record to the requested status""" |
80 | 53 | # Test case 1: file should be updated with status of 'Processed'. |
81 | 54 |
|
82 | | - add_entry_to_table(MockFileDetails.rsv_ravs, file_status=FileStatus.QUEUED) |
| 55 | + add_entry_to_table(MockFileDetails.rsv_ravs, file_status=FileStatus.PROCESSING) |
83 | 56 | add_entry_to_table(MockFileDetails.flu_emis, file_status=FileStatus.QUEUED) |
84 | | - table_items = dynamodb_client.scan(TableName=AUDIT_TABLE_NAME).get("Items", []) |
85 | 57 |
|
86 | | - expected_table_entry = {**MockFileDetails.rsv_ravs.audit_table_entry, "status": {"S": FileStatus.PROCESSED}} |
| 58 | + expected_table_entry = {**MockFileDetails.rsv_ravs.audit_table_entry, "status": {"S": FileStatus.PREPROCESSED}} |
87 | 59 | ravs_rsv_test_file = FileDetails("RSV", "RAVS", "X26") |
88 | 60 | file_key = ravs_rsv_test_file.file_key |
89 | | - message_id = ravs_rsv_test_file.message_id_order |
| 61 | + message_id = ravs_rsv_test_file.message_id |
90 | 62 |
|
91 | | - change_audit_table_status_to_processed(file_key, message_id) |
| 63 | + update_audit_table_status(file_key, message_id, FileStatus.PREPROCESSED) |
92 | 64 | table_items = dynamodb_client.scan(TableName=AUDIT_TABLE_NAME).get("Items", []) |
93 | 65 |
|
94 | 66 | self.assertIn(expected_table_entry, table_items) |
95 | 67 |
|
96 | | - # Test case 2: # Audit table status should not be updated. Error should be raised. |
| 68 | + def test_update_audit_table_status_throws_exception_with_invalid_id(self): |
97 | 69 | emis_flu_test_file_2 = FileDetails("FLU", "EMIS", "YGM41") |
98 | 70 |
|
99 | 71 | message_id = emis_flu_test_file_2.message_id |
100 | 72 | file_key = (emis_flu_test_file_2.file_key,) |
| 73 | + |
101 | 74 | with self.assertRaises(UnhandledAuditTableError): |
102 | | - change_audit_table_status_to_processed(file_key, message_id) |
| 75 | + update_audit_table_status(file_key, message_id, FileStatus.PROCESSED) |
103 | 76 |
|
104 | | - # Test case 3: # Audit table status should updated to processed for all values. |
105 | | - message_id = emis_flu_test_file_2.message_id_order |
106 | | - file_key = emis_flu_test_file_2.file_key |
107 | | - change_audit_table_status_to_processed(file_key, message_id) |
108 | | - table_items = dynamodb_client.scan(TableName=AUDIT_TABLE_NAME).get("Items", []) |
| 77 | + |
| 78 | +if __name__ == "__main__": |
| 79 | + unittest.main() |
0 commit comments