"""Functional tests for dataloader endpoints.""" from royalties.constants import error from royalties.tests.utils.factories import StatementPeriodFactory def test_get_statement_periods_by_ids(fixture_client): """Get statement periods by a list of IDs.""" statement_periods = [ StatementPeriodFactory.create( statement_period_id=123, statement_period_name='Month 1', statement_period_status='closed', statement_month=1, statement_year=2023, closed_date='2023-01-01', closed_by='admin', ), StatementPeriodFactory.create( statement_period_id=124, statement_period_name='Month 2', statement_period_status='closed', statement_month=2, statement_year=2023, closed_date='2023-02-01', closed_by='admin', ), StatementPeriodFactory.create( statement_period_id=125, statement_period_name='Month 3', statement_period_status='open', statement_month=1, statement_year=2024, closed_date=None, closed_by=None, ), ] result = fixture_client.post('/dataloader/statement-periods', json=[122, 123, 124]) assert result.status_code == 200 assert result.json == [ {'data': None}, { 'data': { 'statement_period_id': statement_periods[0].statement_period_id, 'statement_period_name': statement_periods[0].statement_period_name, 'statement_month': statement_periods[0].statement_month, 'statement_year': statement_periods[0].statement_year, 'closed_date': statement_periods[0].closed_date.date().isoformat(), 'statement_period_status': statement_periods[0].statement_period_status, 'exchange_rates_delivered': statement_periods[ 0 ].exchange_rates_delivered, } }, { 'data': { 'statement_period_id': statement_periods[1].statement_period_id, 'statement_period_name': statement_periods[1].statement_period_name, 'statement_month': statement_periods[1].statement_month, 'statement_year': statement_periods[1].statement_year, 'closed_date': statement_periods[1].closed_date.date().isoformat(), 'statement_period_status': statement_periods[1].statement_period_status, 'exchange_rates_delivered': statement_periods[ 1 ].exchange_rates_delivered, } }, ] def test_get_statement_periods_by_ids_error(fixture_client): """Test getting statement periods when a parameter is incorrect.""" result = fixture_client.post('/statement-periods/', json=[123, 124, 125, 'Test']) assert result.status_code == 400 assert result.json['message'] == error.ERROR_INVALID_STATEMENT_YEARS