예제 #1
0
    def test_get_details(self):
        # make fake new game 12345
        # TODO: mock out HR / DR construction as well?
        hr = HistoryResponse({
            'status': 1,
            'results_remaining': 0,
            'num_results': 1,
            'total_results': 1,
            'matches': [{
                'match_id': 12345
            }]
        })
        dr = DetailsResponse({
            'radiant_win': 1,
            'match_id': 12345,
            'players': [],
            'negative_votes': 1,
            'positive_votes': 1,
            'lobby_type': 1,
            'duration': 1,
            'first_blood_time': 1,
            'leagueid': 1,
            'start_time': 1,
            'dire_name': 1,
            'radiant_name': 1,
            'dire_team_id': 1,
            'radiant_team_id': 1
        })

        with patch.object(API, 'get_match_history', return_value=hr):
            with patch.object(API, 'get_match_details', return_value=dr):
                get_details_by_id.get_details(steam_id=1,
                                              key='fake',
                                              data_dir=pathlib.Path('.'))

        new = pathlib.Path('12345.json')
        self.assertTrue(new.exists())
예제 #2
0
 def setUp(self):
     self.dr = DetailsResponse.from_json('details_response.json')
예제 #3
0
 def setUp(self):
     self.dr = DetailsResponse.from_json('details_response.json')
예제 #4
0
 def setUp(self):
     with open('details_response.json') as f:
         self.dr = DetailsResponse(json.load(f))
예제 #5
0
class TestDetailsResponse(unittest.TestCase):

    def setUp(self):
        with open('details_response.json') as f:
            self.dr = DetailsResponse(json.load(f))

    def test_match_report(self):
        result = self.dr.match_report().iloc[:2]
        d = {'gold': {(547519680, 'Dire', 'bounty_hunter'): 16, (547519680, 'Dire', 'crystal_maiden'): 1626},
             'item_0': {(547519680, 'Dire', 'bounty_hunter'): 36, (547519680, 'Dire', 'crystal_maiden'): 36},
             'item_2': {(547519680, 'Dire', 'bounty_hunter'): 168, (547519680, 'Dire', 'crystal_maiden'): 37},
             'player_slot': {(547519680, 'Dire', 'bounty_hunter'): 128, (547519680, 'Dire', 'crystal_maiden'): 131},
             'item_4': {(547519680, 'Dire', 'bounty_hunter'): 67, (547519680, 'Dire', 'crystal_maiden'): 102},
             'hero_damage': {(547519680, 'Dire', 'bounty_hunter'): 6141, (547519680, 'Dire', 'crystal_maiden'): 8204},
             'last_hits': {(547519680, 'Dire', 'bounty_hunter'): 56, (547519680, 'Dire', 'crystal_maiden'): 64},
             'item_1': {(547519680, 'Dire', 'bounty_hunter'): 50, (547519680, 'Dire', 'crystal_maiden'): 42},
             'kills': {(547519680, 'Dire', 'bounty_hunter'): 4, (547519680, 'Dire', 'crystal_maiden'): 6},
             'denies': {(547519680, 'Dire', 'bounty_hunter'): 1, (547519680, 'Dire', 'crystal_maiden'): 6},
             'hero_healing': {(547519680, 'Dire', 'bounty_hunter'): 0, (547519680, 'Dire', 'crystal_maiden'): 0},
             'level': {(547519680, 'Dire', 'bounty_hunter'): 16, (547519680, 'Dire', 'crystal_maiden'): 17},
             'item_3': {(547519680, 'Dire', 'bounty_hunter'): 185, (547519680, 'Dire', 'crystal_maiden'): 214},
             'win': {(547519680, 'Dire', 'bounty_hunter'): False, (547519680, 'Dire', 'crystal_maiden'): False},
             'deaths': {(547519680, 'Dire', 'bounty_hunter'): 10, (547519680, 'Dire', 'crystal_maiden'): 10},
             'gold_spent': {(547519680, 'Dire', 'bounty_hunter'): 12185, (547519680, 'Dire', 'crystal_maiden'): 8505},
             'account_id': {(547519680, 'Dire', 'bounty_hunter'): 82787032.0, (547519680, 'Dire', 'crystal_maiden'): nan},
             'assists': {(547519680, 'Dire', 'bounty_hunter'): 5, (547519680, 'Dire', 'crystal_maiden'): 7},
             'item_5': {(547519680, 'Dire', 'bounty_hunter'): 46, (547519680, 'Dire', 'crystal_maiden'): 0}}
        expected = pd.DataFrame(d)
        expected.index = pd.MultiIndex.from_tuples(expected.index)
        expected = expected.sort_index()
        expected = result.reindex_axis(result.columns, axis=1)
        tm.assert_frame_equal(result, expected)

    def test_format_df(self):
        data = [{'hero_damage': 26610,
                 'denies': 20,
                 'player_slot': 128,
                 'last_hits': 342,
                 'item_3': 63,
                 'item_2': 0,
                 'item_1': 123,
                 'item_0': 135,
                 'account_id': 26316691,
                 'item_5': 141,
                 'hero_healing': 0,
                 'hero_id': 63,
                 'deaths': 4,
                 'item_4': 168,
                 'level': 23,
                 'kills': 16,
                 'gold_spent': 27186,
                 'assists': 6,
                 'gold': 3663},
                {'hero_damage': 5382,
                 'denies': 2,
                 'player_slot': 132,
                 'last_hits': 72,
                 'item_3': 30,
                 'item_2': 100,
                 'item_1': 34,
                 'item_0': 214,
                 'account_id': 36547811,
                 'item_5': 0,
                 'hero_healing': 7899,
                 'hero_id': 102,
                 'deaths': 2,
                 'item_4': 102,
                 'level': 19,
                 'kills': 1,
                 'gold_spent': 8535,
                 'assists': 11,
                 'gold': 5096}]
        df = pd.DataFrame(data)
        result = DetailsResponse.format_df(df, 'Dire', 1)
        expected = pd.DataFrame({'hero_damage': {(1, 'Dire', 'abaddon'): 5382, (1, 'Dire', 'weaver'): 26610},
                                 'denies': {(1, 'Dire', 'abaddon'): 2, (1, 'Dire', 'weaver'): 20},
                                 'item_5': {(1, 'Dire', 'abaddon'): 0, (1, 'Dire', 'weaver'): 141},
                                 'item_4': {(1, 'Dire', 'abaddon'): 102, (1, 'Dire', 'weaver'): 168},
                                 'item_3': {(1, 'Dire', 'abaddon'): 30, (1, 'Dire', 'weaver'): 63},
                                 'item_2': {(1, 'Dire', 'abaddon'): 100, (1, 'Dire', 'weaver'): 0},
                                 'item_1': {(1, 'Dire', 'abaddon'): 34, (1, 'Dire', 'weaver'): 123},
                                 'item_0': {(1, 'Dire', 'abaddon'): 214, (1, 'Dire', 'weaver'): 135},
                                 'account_id': {(1, 'Dire', 'abaddon'): 36547811, (1, 'Dire', 'weaver'): 26316691},
                                 'win': {(1, 'Dire', 'abaddon'): True, (1, 'Dire', 'weaver'): True},
                                 'player_slot': {(1, 'Dire', 'abaddon'): 132, (1, 'Dire', 'weaver'): 128},
                                 'hero_healing': {(1, 'Dire', 'abaddon'): 7899, (1, 'Dire', 'weaver'): 0},
                                 'deaths': {(1, 'Dire', 'abaddon'): 2, (1, 'Dire', 'weaver'): 4},
                                 'last_hits': {(1, 'Dire', 'abaddon'): 72, (1, 'Dire', 'weaver'): 342},
                                 'level': {(1, 'Dire', 'abaddon'): 19, (1, 'Dire', 'weaver'): 23},
                                 'kills': {(1, 'Dire', 'abaddon'): 1, (1, 'Dire', 'weaver'): 16},
                                 'gold_spent': {(1, 'Dire', 'abaddon'): 8535, (1, 'Dire', 'weaver'): 27186},
                                 'assists': {(1, 'Dire', 'abaddon'): 11, (1, 'Dire', 'weaver'): 6},
                                 'gold': {(1, 'Dire', 'abaddon'): 5096, (1, 'Dire', 'weaver'): 3663}})
        expected.index = pd.MultiIndex.from_tuples(expected.index,
                                                   names=['match_id', 'team',
                                                          'hero'])
        expected = expected.sort_index()
        tm.assert_frame_equal(result, expected)
예제 #6
0
 def test_format_df(self):
     data = [{'hero_damage': 26610,
              'denies': 20,
              'player_slot': 128,
              'last_hits': 342,
              'item_3': 63,
              'item_2': 0,
              'item_1': 123,
              'item_0': 135,
              'account_id': 26316691,
              'item_5': 141,
              'hero_healing': 0,
              'hero_id': 63,
              'deaths': 4,
              'item_4': 168,
              'level': 23,
              'kills': 16,
              'gold_spent': 27186,
              'assists': 6,
              'gold': 3663},
             {'hero_damage': 5382,
              'denies': 2,
              'player_slot': 132,
              'last_hits': 72,
              'item_3': 30,
              'item_2': 100,
              'item_1': 34,
              'item_0': 214,
              'account_id': 36547811,
              'item_5': 0,
              'hero_healing': 7899,
              'hero_id': 102,
              'deaths': 2,
              'item_4': 102,
              'level': 19,
              'kills': 1,
              'gold_spent': 8535,
              'assists': 11,
              'gold': 5096}]
     df = pd.DataFrame(data)
     result = DetailsResponse.format_df(df, 'Dire', 1)
     expected = pd.DataFrame({'hero_damage': {(1, 'Dire', 'abaddon'): 5382, (1, 'Dire', 'weaver'): 26610},
                              'denies': {(1, 'Dire', 'abaddon'): 2, (1, 'Dire', 'weaver'): 20},
                              'item_5': {(1, 'Dire', 'abaddon'): 0, (1, 'Dire', 'weaver'): 141},
                              'item_4': {(1, 'Dire', 'abaddon'): 102, (1, 'Dire', 'weaver'): 168},
                              'item_3': {(1, 'Dire', 'abaddon'): 30, (1, 'Dire', 'weaver'): 63},
                              'item_2': {(1, 'Dire', 'abaddon'): 100, (1, 'Dire', 'weaver'): 0},
                              'item_1': {(1, 'Dire', 'abaddon'): 34, (1, 'Dire', 'weaver'): 123},
                              'item_0': {(1, 'Dire', 'abaddon'): 214, (1, 'Dire', 'weaver'): 135},
                              'account_id': {(1, 'Dire', 'abaddon'): 36547811, (1, 'Dire', 'weaver'): 26316691},
                              'win': {(1, 'Dire', 'abaddon'): True, (1, 'Dire', 'weaver'): True},
                              'player_slot': {(1, 'Dire', 'abaddon'): 132, (1, 'Dire', 'weaver'): 128},
                              'hero_healing': {(1, 'Dire', 'abaddon'): 7899, (1, 'Dire', 'weaver'): 0},
                              'deaths': {(1, 'Dire', 'abaddon'): 2, (1, 'Dire', 'weaver'): 4},
                              'last_hits': {(1, 'Dire', 'abaddon'): 72, (1, 'Dire', 'weaver'): 342},
                              'level': {(1, 'Dire', 'abaddon'): 19, (1, 'Dire', 'weaver'): 23},
                              'kills': {(1, 'Dire', 'abaddon'): 1, (1, 'Dire', 'weaver'): 16},
                              'gold_spent': {(1, 'Dire', 'abaddon'): 8535, (1, 'Dire', 'weaver'): 27186},
                              'assists': {(1, 'Dire', 'abaddon'): 11, (1, 'Dire', 'weaver'): 6},
                              'gold': {(1, 'Dire', 'abaddon'): 5096, (1, 'Dire', 'weaver'): 3663}})
     expected.index = pd.MultiIndex.from_tuples(expected.index,
                                                names=['match_id', 'team',
                                                       'hero'])
     expected = expected.sort_index()
     tm.assert_frame_equal(result, expected)