"""PaymentEntryQueue unit tests.""" from unittest.mock import patch from payoneer_payments_payout.payment_entry_queue import PaymentEntryQueue def test_append_payment_entries(): """Test append_payment method.""" payment_entry_queue = PaymentEntryQueue(False) assert not payment_entry_queue._payment_entries payment_entry_queue.append_payment({'foo': 'bar'}) assert payment_entry_queue._payment_entries def test_append_payment_entries_skip_payoneer(): """Test append_payment method.""" payment_entry_queue = PaymentEntryQueue(True) assert not payment_entry_queue._payment_entries payment_entry_queue.append_payment({'foo': 'bar'}) assert not payment_entry_queue._payment_entries @patch('payoneer_payments_payout.payment_entry_queue.post_payments_to_payoneer') def test_flush_entries( mock_post_payments, mock_payoneer_mass_payouts ): """Test flush entries calls post_payments_to_payoneer and empties queue.""" # noqa: E501 payment_entry_queue = PaymentEntryQueue(False) assert not payment_entry_queue._payment_entries program_id = 123 mock_payment_entries = mock_payoneer_mass_payouts for payment_entry in mock_payment_entries: payment_entry_queue.append_payment(payment_entry) assert payment_entry_queue._payment_entries == mock_payment_entries assert payment_entry_queue.length == len(mock_payment_entries) payment_entry_queue.flush_entries(program_id) assert not payment_entry_queue._payment_entries mock_post_payments.assert_called_once_with(program_id, mock_payment_entries) @patch('payoneer_payments_payout.payment_entry_queue.post_payments_to_payoneer') def test_flush_entries_skip_payoneer( mock_post_payments, mock_payoneer_mass_payouts ): """Test flush entries calls post_payments_to_payoneer and empties queue.""" # noqa: E501 payment_entry_queue = PaymentEntryQueue(True) assert not payment_entry_queue._payment_entries program_id = 123 mock_payment_entries = mock_payoneer_mass_payouts for payment_entry in mock_payment_entries: payment_entry_queue.append_payment(payment_entry) assert payment_entry_queue._payment_entries == [] payment_entry_queue.flush_entries(program_id) assert not payment_entry_queue._payment_entries mock_post_payments.assert_not_called()