예제 #1
0
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
예제 #2
0
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
예제 #3
0
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'
예제 #4
0
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
예제 #5
0
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