Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions batch_notification_processor/batch_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,19 @@ def get_routing_plan_id(batch_id):

def get_recipients(batch_id):
recipients = []
recipients_results = []

try:
recipients = oracle_database.get_recipients(batch_id)
if not recipients:
recipients_results = oracle_database.get_recipients(batch_id)
if not recipients_results:
logging.error("No recipients for batch ID: %s", batch_id)
except oracledb.Error as e:
logging.error("Error fetching recipients: %s", e)

for idx, recipient in enumerate(recipients):
for recipient in recipients_results:
recipient = recipient._replace(message_id=generate_message_reference())
oracle_database.update_message_id(recipient)
recipients[idx] = recipient
recipients.append(recipient)

return recipients

Expand Down
19 changes: 14 additions & 5 deletions tests/unit/batch_notification_processor/test_batch_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,24 @@ def recipients():
def test_next_batch(mock_oracle_database, recipients, batch_id, plan_id):
mock_oracle_database.get_routing_plan_id.return_value = plan_id
mock_oracle_database.get_recipients.return_value = recipients
with patch("batch_processor.generate_reference") as mock_generate_reference:
mock_generate_reference.return_value = batch_id
with patch("batch_processor.generate_batch_id") as mock_generate_batch_id:
mock_generate_batch_id.return_value = batch_id

result = batch_processor.next_batch()
with patch("batch_processor.generate_message_reference") as mock_generate_message_reference:
mock_generate_message_reference.side_effect = ["message_reference_0", "message_reference_1"]

result = batch_processor.next_batch()

recipients_with_message_ids = [
recipients[0]._replace(message_id="message_reference_0"),
recipients[1]._replace(message_id="message_reference_1"),
]

assert result == (batch_id, plan_id, recipients)
assert result == (batch_id, plan_id, recipients_with_message_ids)
assert mock_oracle_database.get_routing_plan_id.call_count == 1
assert mock_oracle_database.get_recipients.call_count == 1
assert mock_generate_reference.call_count == 3
assert mock_generate_batch_id.call_count == 1
assert mock_generate_message_reference.call_count == 2


@patch("batch_processor.oracle_database")
Expand Down