"""Functional tests for reference_mechanical_rate.""" from datetime import datetime from abacus_common_logic.utils import dates from abacus_contract.tests.utils.factories import ReferenceMechanicalRateFactory def test_get_reference_mechanical_rate_by_id(fixture_client): """Test to get reference_mechanical_rate by ID.""" mock_reference_mechanical_rate = ReferenceMechanicalRateFactory.create() reference_mechanical_rate_id = ( mock_reference_mechanical_rate.reference_mechanical_rate_id ) res = fixture_client.get( f'/reference-mechanical-rate/{reference_mechanical_rate_id}' ) assert res.status_code == 200 assert res.json == { 'reference_mechanical_rate_id': mock_reference_mechanical_rate.reference_mechanical_rate_id, 'country_code': mock_reference_mechanical_rate.country_code, 'base_rate': str(mock_reference_mechanical_rate.base_rate), 'minute_rate': str(mock_reference_mechanical_rate.minute_rate), 'ringtone_rate': str(mock_reference_mechanical_rate.ringtone_rate), 'effective_start_date': dates.safe_format_datetime( mock_reference_mechanical_rate.effective_start_date ), } def test_get_reference_mechanical_rate_list(fixture_client): """Test to get a list of reference_mechanical_rate.""" mock_reference_mechanical_rates = [ ReferenceMechanicalRateFactory.create( country_code='USA', base_rate='0.1240', minute_rate='0.0238', ringtone_rate='0.24', effective_start_date=datetime(2004, 1, 1, 0, 0), ), ReferenceMechanicalRateFactory.create( country_code='USA', base_rate='0.0910', minute_rate='0.0175', ringtone_rate='0.24', effective_start_date=datetime(2006, 1, 1, 0, 0), ), ReferenceMechanicalRateFactory.create( country_code='USA', base_rate='0.12', minute_rate='0.0231', ringtone_rate='0.24', effective_start_date=datetime(2004, 1, 1, 0, 0), ), ] res = fixture_client.get('/reference-mechanical-rates/') assert res.status_code == 200 assert res.json.get('total_count') == len(mock_reference_mechanical_rates) assert res.json.get('items') == [ { 'reference_mechanical_rate_id': 3, 'country_code': 'USA', 'base_rate': '0.1200', 'minute_rate': '0.0231', 'ringtone_rate': '0.2400', 'effective_start_date': '2004-01-01T00:00:00.000000', }, { 'reference_mechanical_rate_id': 2, 'country_code': 'USA', 'base_rate': '0.0910', 'minute_rate': '0.0175', 'ringtone_rate': '0.2400', 'effective_start_date': '2006-01-01T00:00:00.000000', }, { 'reference_mechanical_rate_id': 1, 'country_code': 'USA', 'base_rate': '0.1240', 'minute_rate': '0.0238', 'ringtone_rate': '0.2400', 'effective_start_date': '2004-01-01T00:00:00.000000', }, ]