"""Functional tests for PaymentMinimum.""" from abacus_common_logic.constants import error from tests.utils.factories import PaymentMinimumFactory def test_get_payment_minimums_by_currency_code(fixture_client): """Tests that we get a set of payment minimums for a given currency code.""" PaymentMinimumFactory.create() response = fixture_client.get('/payment-minimums/usd') res_json = response.json assert response.status_code == 200 assert res_json['currency_code'] == 'USD' assert res_json['currency_name'] assert res_json['check_amount'] assert res_json['payment_minimum_id'] assert res_json['wire_transfer_amount'] assert res_json['western_union_amount'] def test_get_payment_minimums_error(fixture_client): """Tests that we get an error if an unrecognized currency code is passed in.""" PaymentMinimumFactory.create() response = fixture_client.get('/payment-minimums/aaa') assert response.status_code == 404 def test_get_list_payment_minimums(fixture_client): """Tests that we get a list of payment minimums.""" payment_minimums = PaymentMinimumFactory.create_batch(3) response = fixture_client.get('/payment-minimums') res_json = response.json assert response.status_code == 200 assert res_json['total_count'] == len(payment_minimums) first_min = res_json['items'][0] assert first_min['currency_code'] assert first_min['currency_name'] assert first_min['check_amount'] assert first_min['payment_minimum_id'] assert first_min['wire_transfer_amount'] assert first_min['western_union_amount'] def test_bulk_update_payment_minimums(fixture_client): """Test updating one or more payment minimums.""" usd_mins = PaymentMinimumFactory.create() cad_mins = PaymentMinimumFactory.create( currency_code='CAD', western_union_amount=None ) assert usd_mins.check_amount == float(35) assert cad_mins.wire_transfer_amount == float(35) put_body = [ {'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', }, ] response = fixture_client.put('/payment-minimums', json=put_body) res_json = response.json assert response.status_code == 201 assert res_json[0]['check_amount'] == put_body[0]['check_amount'] assert res_json[1]['wire_transfer_amount'] == put_body[1]['wire_transfer_amount'] def test_bulk_update_invalid_input(fixture_client): """Test updating one or more payment minimums.""" usd_mins = PaymentMinimumFactory.create() cad_mins = PaymentMinimumFactory.create( currency_code='CAD', western_union_amount=None ) assert usd_mins.check_amount == float(35) assert cad_mins.wire_transfer_amount == float(35) put_body = [{'payment_minimum_id': 'abc', 'check_amount': '100.00'}] response = fixture_client.put('/payment-minimums', json=put_body) assert response.status_code == 400 put_body = [ {'payment_minimum_id': usd_mins.payment_minimum_id, 'check_amount': '1/.00'} ] response = fixture_client.put('/payment-minimums', json=put_body) assert response.status_code == 400 put_body = [ { 'payment_minimum_id': usd_mins.payment_minimum_id, 'wire_transfer_amount': '1-fasdfas', } ] response = fixture_client.put('/payment-minimums', json=put_body) assert response.status_code == 400 put_body = [ { 'payment_minimum_id': usd_mins.payment_minimum_id, 'western_union_amount': '1-as.00', } ] response = fixture_client.put('/payment-minimums', json=put_body) assert response.status_code == 400 def test_bulk_update_payment_minimums_error(fixture_client): """Test bulk update fails when one if a minimum id is not found.""" put_body = [{'payment_minimum_id': 321, 'check_amount': '100.00'}] response = fixture_client.put('/payment-minimums', json=put_body) assert response.status_code == 400 assert response.json['message'] == error.ERROR_ENTITY_DOES_NOT_EXIST.format( object_type='PaymentMinimum', object_id=put_body[0]['payment_minimum_id'] )