import pytest from slz_apple_music_charts_scrapper.const import StatusEnum from slz_apple_music_charts_scrapper.entities import JobExecutionResult from slz_apple_music_charts_scrapper.utils import ( get_response_from_results, load_playlists_storefronts_map, ) def test_load_playlists_storefronts_map(): mapping = load_playlists_storefronts_map() assert len(mapping) == 116 @pytest.mark.parametrize( 'results, expected', [ # One True 'success', one True 'is_hash_updated' (( JobExecutionResult(success=True, is_hash_updated=False, market='us'), JobExecutionResult(success=False, is_hash_updated=True, market='gb'), JobExecutionResult(success=False, is_hash_updated=False, market='it'), ), { 'meta': { 'status': StatusEnum.OK, 'has_changed': True, }, 'context': { 'us': False, 'gb': True, 'it': False, } }), # All False 'success', one True 'is_hash_updated' (( JobExecutionResult(success=False, is_hash_updated=False, market='us'), JobExecutionResult(success=False, is_hash_updated=True, market='gb'), JobExecutionResult(success=False, is_hash_updated=False, market='it'), ), { 'meta': { 'status': StatusEnum.FAILURE, 'has_changed': True, }, 'context': { 'us': False, 'gb': True, 'it': False, } }), # One True success, all False is_hash_updated (( JobExecutionResult(success=False, is_hash_updated=False, market='us'), JobExecutionResult(success=True, is_hash_updated=False, market='gb'), JobExecutionResult(success=False, is_hash_updated=False, market='it'), ), { 'meta': { 'status': StatusEnum.OK, 'has_changed': False, }, 'context': { 'us': False, 'gb': False, 'it': False, } }), # All False (( JobExecutionResult(success=False, is_hash_updated=False, market='us'), JobExecutionResult(success=False, is_hash_updated=False, market='gb'), JobExecutionResult(success=False, is_hash_updated=False, market='it'), ), { 'meta': { 'status': StatusEnum.FAILURE, 'has_changed': False, }, 'context': { 'us': False, 'gb': False, 'it': False, } }), # Make sure "is_hash_updated" having None is treated as False value (( JobExecutionResult(success=False, is_hash_updated=False, market='us'), JobExecutionResult(success=False, is_hash_updated=None, market='gb'), JobExecutionResult(success=False, is_hash_updated=False, market='it'), ), { 'meta': { 'status': StatusEnum.FAILURE, 'has_changed': False, }, 'context': { 'us': False, 'gb': None, 'it': False, } }), ] ) def test_get_response_from_results(results, expected): response = get_response_from_results(results) assert response == expected