"""LedgerEntryQueue unit tests.""" from unittest.mock import patch from commit_royalties.ledger_entry_queue import LedgerEntryQueue def test_append_entries(): """Test append method appends entries.""" ledger_entry_queue = LedgerEntryQueue() assert not ledger_entry_queue._entries ledger_entry_queue.append({'foo': 'bar'}) assert ledger_entry_queue._entries @patch('commit_royalties.ledger_entry_queue.bulk_create_ledger_entries') def test_flush_entries(mock_bulk_create, mock_ledger_account, mock_ledger_deposit): """Test flush entries calls bulk_create_ledger_entries and empties queue.""" ledger_entry_queue = LedgerEntryQueue() assert not ledger_entry_queue._entries mock_ledger_entries = [mock_ledger_account, mock_ledger_deposit] mock_bulk_create.return_value = {'status': 201} for ledger_entry in mock_ledger_entries: ledger_entry_queue.append(ledger_entry) assert ledger_entry_queue._entries == mock_ledger_entries assert ledger_entry_queue.length == len(mock_ledger_entries) ledger_entry_queue.flush_entries() assert not ledger_entry_queue._entries mock_bulk_create.assert_called_once_with(mock_ledger_entries)