def test_get_subsections_section_missing_from_response(mock_api, mocker): api_sections = ['media', 'equipment', 'reputations', {'achievements' : 'statistics'}, {'quests' : 'completed'}] profile = { 'summary' : { 'media' : {'href' : 'media'}, 'equipment' : {'href' : 'equipment'}, 'reputations' : {'href' : 'reputations'}, 'achievements' : {'href' : 'achievements'}, 'quests' : {'href' : 'quests'}}} expected_api_calls = [ mocker.call.get_data_resource('media', 'us', locale='en_US'), mocker.call.get_data_resource('equipment', 'us', locale='en_US'), mocker.call.get_data_resource('reputations', 'us', locale='en_US'), mocker.call.get_data_resource('achievements', 'us', locale='en_US'), mocker.call.get_data_resource('quests', 'us', locale='en_US'), mocker.call.get_data_resource('completed', 'us', locale='en_US')] _get_subsections('us', profile, mock_api, api_sections) mock_api.get_data_resource.assert_called() assert all([expected == actual for expected, actual in zip(expected_api_calls, mock_api.method_calls)]), "Expected {} got {}".format(expected_api_calls, mock_api.method_calls) assert profile['media'] == 'media' assert profile['equipment'] == 'equipment' assert profile['reputations'] == 'reputations' assert profile['quests'] == {'completed' : {'href' : 'completed'}} assert profile['quests_completed'] == 'completed' assert profile['achievements'] == 'achievements' assert profile['achievements_statistics'] == None
def test_get_subsections_nested_keys_api_error(mock_api, mocker): api_sections = ['media', 'equipment', 'covenant_progress|other_key|soulbinds'] profile = { 'summary' : { 'media' : {'href' : 'media'}, 'equipment' : {'href' : 'equipment'}, 'covenant_progress' : { 'other_key' : { 'soulbinds' : { 'href' : 'fail' }}}}} _get_subsections('us', profile, mock_api, api_sections) mock_api.get_data_resource.assert_called() assert profile['media'] == 'media' assert profile['equipment'] == 'equipment' assert profile['soulbinds'] == None
def test_get_subsections_list_of_strings(mock_api, mocker): api_sections = ['media', 'equipment', 'reputations'] profile = { 'summary' : { **{v : {'href' : v} for v in api_sections} } } expected_api_calls = [mocker.call.get_data_resource(v, 'us', locale='en_US') for v in api_sections] _get_subsections('us', profile, mock_api, api_sections) mock_api.get_data_resource.assert_called() assert all([expected == actual for expected, actual in zip(expected_api_calls, mock_api.method_calls)]), "Expected {} got {}".format(expected_api_calls, mock_api.method_calls) assert profile['media'] == 'media' assert profile['equipment'] == 'equipment' assert profile['reputations'] == 'reputations'
def test_get_subsections_handle_wowapi_error(mock_api, mocker): api_sections = ['media', 'equipment', {'fail' : 'missing'}, 'reputations'] profile = { 'summary' : { 'media' : {'href' : 'media'}, 'equipment' : {'href' : 'equipment'}, 'reputations' : {'href' : 'reputations'}, 'fail' : {'href' : 'fail'}}} _get_subsections('us', profile, mock_api, api_sections) mock_api.get_data_resource.assert_called() assert profile['media'] == 'media' assert profile['equipment'] == 'equipment' assert profile['reputations'] == 'reputations' assert profile['fail'] == None assert profile['fail_missing'] == None
def test_get_subsections_nested_keys_key_not_found(mock_api, mocker): api_sections = ['media', 'equipment', 'covenant_progress|other_key|soulbinds'] profile = { 'summary' : { 'media' : {'href' : 'media'}, 'equipment' : {'href' : 'equipment'}, 'covenant_progress' : {}}} expected_api_calls = [ mocker.call.get_data_resource('media', 'us', locale='en_US'), mocker.call.get_data_resource('equipment', 'us', locale='en_US')] _get_subsections('us', profile, mock_api, api_sections) mock_api.get_data_resource.assert_called() assert all([expected == actual for expected, actual in zip(expected_api_calls, mock_api.method_calls)]), "Expected {} got {}".format(expected_api_calls, mock_api.method_calls) assert profile['media'] == 'media' assert profile['equipment'] == 'equipment' assert profile['soulbinds'] == None