"""Payment Minimum model tests.""" from decimal import Decimal from unittest.mock import patch from payment.models.payment_minimum import PaymentMinimum from tests.utils.factories import PaymentMinimumFactory @patch('payment.models.payment_minimum.g') def test_bulk_update(mock_g): """Test updating one or more payment minimums.""" user_id = '123' mock_g.user_details = {'id': user_id} usd_mins = PaymentMinimumFactory.create() cad_mins = PaymentMinimumFactory.create( currency_code='CAD', western_union_amount=None ) minimums = [ {'payment_minimum_id': usd_mins.payment_minimum_id, 'check_amount': '100.00'}, { 'payment_minimum_id': cad_mins.payment_minimum_id, 'wire_transfer_amount': '100.00', }, ] PaymentMinimum.bulk_update(minimums) assert usd_mins.check_amount == float(100) assert usd_mins.last_modified_by == user_id assert cad_mins.wire_transfer_amount == float(100) assert cad_mins.last_modified_by == user_id def test_get_all(): """Test get_all classmethod returns all payment minimums.""" minimums = PaymentMinimumFactory.create_batch(5) all_mins = PaymentMinimum.get_all() assert len(all_mins) == len(minimums) def test_get_by_currency_code(): """Test get payment minimum by currency code success.""" usd_mins = PaymentMinimumFactory.create() PaymentMinimumFactory.create(currency_code='CAD') minimum = PaymentMinimum.get_by_currency_code(currency_code='USD') assert minimum.payment_minimum_id == usd_mins.payment_minimum_id def test_get_by_currency_code(): """Test get payment minimum by currency code raises error.""" PaymentMinimumFactory.create_batch(4) res = PaymentMinimum.get_by_currency_code(currency_code='NOT') assert not res def test_get_all_by_currency(): """Tests get_all_by_currency method.""" PaymentMinimumFactory.create(currency_code='USD') PaymentMinimumFactory.create(currency_code='CAD') PaymentMinimumFactory.create(currency_code='GBP') currency_amounts = PaymentMinimum.get_all_by_currency() assert currency_amounts == { 'USD': { 'Check': Decimal('35.00'), 'Western Union': Decimal('100.00'), 'Wire Transfer': Decimal('35.00'), }, 'CAD': { 'Check': Decimal('35.00'), 'Western Union': Decimal('100.00'), 'Wire Transfer': Decimal('35.00'), }, 'GBP': { 'Check': Decimal('35.00'), 'Western Union': Decimal('100.00'), 'Wire Transfer': Decimal('35.00'), }, }