import asyncio from datetime import date, timedelta from functools import partial import pytest from src.backend.logic import queries from tests_backend.conftest import TEST_LABEL_ID @pytest.mark.asyncio @pytest.mark.parametrize( "label_id,type_expected", [ (0, type(None)), (TEST_LABEL_ID, str), ], ) async def test_get_label_name(label_id, type_expected): result = await queries.get_label_name(label_id) assert isinstance(result, type_expected) class TestGetTopLabelArtistsByRevenue: today = date.today() one_year_ago = today - timedelta(days=360) six_months_ago = today - timedelta(days=180) func = partial(queries.get_top_label_artists_by_revenue, TEST_LABEL_ID, limit=10) @pytest.mark.asyncio @pytest.mark.parametrize( "stores", [[453], None], ) async def test_get_top_label_artists_by_revenue(self, stores): result = await self.func(stores=stores) first_result = result[0] assert len(result) <= 10 assert first_result["id"] > 0, "Expected artist ID to be a positive integer" assert first_result["name"] and isinstance( first_result["name"], str ), "Expected artist name" assert ( first_result["net_revenue"] >= 0 ), "Expected net revenue to be a positive number" @pytest.mark.asyncio async def test_get_top_label_artists_by_revenue_start_date(self): """Test that the revenue is higher for a longer time period.""" results = await asyncio.gather( *[ self.func(start_date=start_date) for start_date in [self.one_year_ago, self.six_months_ago] ] ) revenue = [sum(r["net_revenue"] for r in result) for result in results] assert ( revenue[0] > revenue[1] ), "Expected more revenue in a longer time period than in a shorter one" @pytest.mark.asyncio async def test_get_top_label_artists_by_revenue_end_date(self): """Test that the revenue is higher for a longer time period.""" results = await asyncio.gather( *[ self.func(start_date=self.six_months_ago, end_date=dt) for dt in [self.six_months_ago, None] ] ) revenue = [sum(r["net_revenue"] for r in result) for result in results] assert ( revenue[0] < revenue[1] ), "Expected more revenue in a longer time period than in a shorter one"