Example #1
0
 def test_create_player_stat(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1))
     DatabaseUtils.recreate_database(DatabaseUtils.get_db_connection())
     conn = DatabaseUtils.get_db_connection()
     player_data = {
         'clan_id': 1,
         'account_id': 777,
         'account_name': 'test player',
         'total_resources_earned': 1200,
         'stronghold_skirmish_battles': 100,
         'stronghold_defense_battles': 10,
         'seven_day_resources_earned': 320,
         'thirty_day_resources_earned': 320,
         'last_update': AppTime.get_now(),
         'thirty_day_defense_battles': 0,
         'thirty_day_skirmish_battles': 0,
         'clan_battles': 10,
         'thirty_day_clan_battles': 5,
         'all_battles': 100,
         'thirty_day_all_battles': 50
     }
     controller = ClanController()
     controller.create_player_stat(conn, player_data)
     row = PlayerRepository.get_player(conn, player_data['clan_id'],
                                       player_data['account_id'])
     player_stat_dict = dict(zip(row.keys(), row))
     expected = {
         'clan_id': 1,
         'account_id': 777,
         'account_name': u'test player',
         'total_resources_earned': 1200,
         'stronghold_skirmish_battles': 100,
         'thirty_day_skirmish_battles': 0,
         'stronghold_defense_battles': 10,
         'thirty_day_defense_battles': 0,
         'seven_day_resources_earned': 320,
         'thirty_day_resources_earned': 320,
         'clan_battles': 10,
         'thirty_day_clan_battles': 5,
         'all_battles': 100,
         'thirty_day_all_battles': 50,
         'last_update': str(AppTime.get_now())
     }
     self.assertEqual(expected, player_stat_dict)
     from_date = AppTime.get_now()
     to_date = from_date - datetime.timedelta(days=30)
     rows = PlayerRepository.get_player_stats(conn, player_data['clan_id'],
                                              player_data['account_id'],
                                              from_date, to_date)
     self.assertEqual(1, len(rows))
     player_stat_snapshot_dict = dict(zip(rows[0].keys(), rows[0]))
     expected = {
         'stronghold_defense_battles': 10,
         'account_id': 777,
         'stronghold_skirmish_battles': 100,
         'clan_id': 1,
         'total_resources_earned': 1200,
         'created_date': str(AppTime.get_now())
     }
     self.assertEqual(expected, player_stat_snapshot_dict)
 def test_create_player_stat(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1))
     DatabaseUtils.recreate_database(DatabaseUtils.get_db_connection())
     conn = DatabaseUtils.get_db_connection()
     player_data = {'clan_id': 1,
                    'account_id': 777,
                    'account_name': 'test player',
                    'total_resources_earned': 1200,
                    'stronghold_skirmish_battles': 100,
                    'stronghold_defense_battles': 10,
                    'seven_day_resources_earned': 320,
                    'thirty_day_resources_earned': 320,
                    'last_update': AppTime.get_now(),
                    'thirty_day_defense_battles': 0,
                    'thirty_day_skirmish_battles': 0,
                    'clan_battles': 10,
                    'thirty_day_clan_battles': 5,
                    'all_battles': 100,
                    'thirty_day_all_battles': 50}
     controller = ClanController()
     controller.create_player_stat(conn, player_data)
     row = PlayerRepository.get_player(conn, player_data['clan_id'], player_data['account_id'])
     player_stat_dict = dict(zip(row.keys(), row))
     expected = {'clan_id': 1,
                 'account_id': 777,
                 'account_name': u'test player',
                 'total_resources_earned': 1200,
                 'stronghold_skirmish_battles': 100,
                 'thirty_day_skirmish_battles': 0,
                 'stronghold_defense_battles': 10,
                 'thirty_day_defense_battles': 0,
                 'seven_day_resources_earned': 320,
                 'thirty_day_resources_earned': 320,
                 'clan_battles': 10,
                 'thirty_day_clan_battles': 5,
                 'all_battles': 100,
                 'thirty_day_all_battles': 50,
                 'last_update': str(AppTime.get_now())}
     self.assertEqual(expected, player_stat_dict)
     from_date = AppTime.get_now()
     to_date = from_date - datetime.timedelta(days=30)
     rows = PlayerRepository.get_player_stats(conn, player_data['clan_id'], player_data['account_id'], from_date,
                                              to_date)
     self.assertEqual(1, len(rows))
     player_stat_snapshot_dict = dict(zip(rows[0].keys(), rows[0]))
     expected = {'stronghold_defense_battles': 10,
                 'account_id': 777,
                 'stronghold_skirmish_battles': 100,
                 'clan_id': 1,
                 'total_resources_earned': 1200,
                 'created_date': str(AppTime.get_now())}
     self.assertEqual(expected, player_stat_snapshot_dict)
Example #3
0
 def map(cls, accounts_stats, account_id, account_name):
     player_data = {}
     if accounts_stats is None or not accounts_stats:
         return player_data
     data = accounts_stats['data'][str(account_id)]
     player_data = {
         "clan_id":
         data['clan_id'],
         "account_id":
         data['account_id'],
         "account_name":
         account_name,
         "total_resources_earned":
         data['total_resources_earned'],
         "stronghold_defense_battles":
         data['stronghold_defense']['battles']
         if data['stronghold_defense'] else 0,
         "thirty_day_defense_battles":
         0,
         "stronghold_skirmish_battles":
         data['stronghold_skirmish']['battles']
         if data['stronghold_skirmish'] else 0,
         "thirty_day_skirmish_battles":
         0,
         "seven_day_resources_earned":
         data['week_resources_earned'],
         "thirty_day_resources_earned":
         data['week_resources_earned'],
         "last_update":
         AppTime.get_now()
     }
     return player_data
Example #4
0
 def get_players_data(self, connection, app_id, clan_id, members):
     players_data = []
     for member in members:
         account_id = member['account_id']
         account_name = member['account_name']
         try:
             player_data = self.get_player_data(connection, app_id, clan_id,
                                                account_id, account_name)
             if self.requires_recalculation(player_data):
                 # get accounts stat
                 account_stats = self._retrieve_account_stats(
                     account_id, app_id)
                 player_data = AccountStatsToPlayerDataMapper.map(
                     account_stats, account_id, account_name)
                 personal_stats = self._retrieve_personal_stats(
                     account_id, app_id)
                 player_data = AccountStatsToPlayerDataMapper.amend_player_data(
                     player_data, personal_stats, account_id)
                 # create snapshot
                 self.create_snapshot(connection, player_data)
                 # calculate 30 day
                 from_date = AppTime.get_now() - datetime.timedelta(days=30)
                 self._calculate_stats_at_date(connection, player_data,
                                               from_date)
                 # update player_stat
                 PlayerRepository.update_player_stats(
                     connection, player_data)
             players_data.append(player_data)
         except Exception as e:
             print(
                 'Failed on player: {account_name} - error: {error}'.format(
                     account_name=member['account_name'], error=str(e)))
     players_data.sort(key=lambda x: x['account_name'].lower())
     return players_data
Example #5
0
    def test_one_month_of_updates(self):
        """"
            Adds stats for a month
            Starts with:
            "total_resources_earned": 5002
            "week_resources_earned": 0
            "battles": 731

            It should end up with:
            "total_resources_earned": 5002 + 65 = 5067
            "week_resources_earned": 20
            30 day = 65
        """ ""
        TestTime.set_app_time(datetime.datetime(2015, 8, 1))
        account_stats = AccountStatsFixtures.standard_accounts_record()
        player_stats = AccountStatsFixtures.personal_data_response()
        conn = DatabaseUtils.get_db_connection()
        DatabaseUtils.recreate_database(conn)
        conn = DatabaseUtils.get_db_connection()
        controller = ClanController()
        controller._retrieve_account_stats = lambda account_id, app_id: account_stats
        controller._retrieve_personal_stats = lambda account_id, app_id: player_stats
        members = [{'account_id': 512841364, 'account_name': 'test_player'}]
        players_data = controller.get_players_data(conn, 123, 123, members)
        self.assertEqual(1, len(players_data))
        TestTime.set_app_time(datetime.datetime(2015, 8, 5))
        self._amend_accounts_stats(account_stats, 10, 1, 10)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 10))
        self._amend_accounts_stats(account_stats, 35, 2, 45)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 15))
        self._amend_accounts_stats(account_stats, 0, 2, 35)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 25))
        self._amend_accounts_stats(account_stats, 20, 1, 20, 10)
        self._amend_player_stats(player_stats, 21, 10)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 31))
        players_data = controller.get_players_data(conn, 123, 500050913,
                                                   members)
        expected = {
            "clan_id": 500050913,
            "account_id": 512841364,
            "account_name": 'test_player',
            'all_battles': 25367,
            'clan_battles': 46,
            "total_resources_earned": 5067,
            "stronghold_defense_battles": 19,
            "thirty_day_defense_battles": 10,
            "stronghold_skirmish_battles": 737,
            "thirty_day_skirmish_battles": 6,
            "seven_day_resources_earned": 20,
            "thirty_day_resources_earned": 65,
            'thirty_day_clan_battles': 0,
            'thirty_day_all_battles': 21,
            "last_update": AppTime.get_now()
        }
        self.maxDiff = None
        self.assertEqual(expected, players_data[0])
Example #6
0
 def get_players_data(self, connection, app_id, clan_id, members):
     players_data = []
     for member in members:
         account_id = member['account_id']
         account_name = member['account_name']
         try:
             player_data = self.get_player_data(connection, app_id, clan_id, account_id, account_name)
             if self.requires_recalculation(player_data):
                 # get accounts stat
                 account_stats = self._retrieve_account_stats(account_id, app_id)
                 player_data = AccountStatsToPlayerDataMapper.map(account_stats, account_id, account_name)
                 personal_stats = self._retrieve_personal_stats(account_id, app_id)
                 player_data = AccountStatsToPlayerDataMapper.amend_player_data(player_data, personal_stats, account_id)
                 # create snapshot
                 self.create_snapshot(connection, player_data)
                 # calculate 30 day
                 from_date = AppTime.get_now() - datetime.timedelta(days=30)
                 self._calculate_stats_at_date(connection, player_data, from_date)
                 # update player_stat
                 PlayerRepository.update_player_stats(connection, player_data)
             players_data.append(player_data)
         except Exception as e:
             print('Failed on player: {account_name} - error: {error}'
                   .format(account_name=member['account_name'], error=str(e)))
     players_data.sort(key=lambda x: x['account_name'].lower())
     return players_data
 def test_player_does_not_require_calculation(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1, 12, 0, 0))
     player_data = {'last_update': AppTime.get_now()}
     controller = ClanController()
     result = controller.requires_recalculation(player_data)
     expected = False
     self.assertEqual(expected, result)
Example #8
0
 def test_player_does_not_require_calculation(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1, 12, 0, 0))
     player_data = {'last_update': AppTime.get_now()}
     controller = ClanController()
     result = controller.requires_recalculation(player_data)
     expected = False
     self.assertEqual(expected, result)
Example #9
0
 def test_get_player_data_that_is_not_in_database(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1))
     conn = DatabaseUtils.get_db_connection()
     DatabaseUtils.recreate_database(conn)
     conn = DatabaseUtils.get_db_connection()
     controller = ClanController()
     controller._retrieve_account_stats = lambda account_id, app_id: AccountStatsFixtures.standard_accounts_record(
     )
     controller._retrieve_personal_stats = lambda account_id, app_id: AccountStatsFixtures.personal_data_response(
     )
     player_data = controller.get_player_data(conn, 'app_id', 500050913,
                                              512841364, 'test_player')
     expected = {
         "clan_id": 500050913,
         "account_id": 512841364,
         "account_name": 'test_player',
         "total_resources_earned": 5002,
         "stronghold_defense_battles": 9,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": 731,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": 0,
         "thirty_day_resources_earned": 0,
         'clan_battles': 46,
         'thirty_day_clan_battles': 0,
         'all_battles': 25346,
         'thirty_day_all_battles': 0,
         "last_update": AppTime.get_now()
     }
     self.maxDiff = None
     self.assertEqual(expected, player_data)
     from_date = AppTime.get_now()
     to_date = from_date - datetime.timedelta(days=30)
     rows = PlayerRepository.get_player_stats(conn, player_data['clan_id'],
                                              player_data['account_id'],
                                              from_date, to_date)
     self.assertEqual(1, len(rows))
     player_stat_snapshot_dict = dict(zip(rows[0].keys(), rows[0]))
     expected = {
         'stronghold_defense_battles': 9,
         'account_id': 512841364,
         'stronghold_skirmish_battles': 731,
         'clan_id': 500050913,
         'total_resources_earned': 5002,
         'created_date': str(AppTime.get_now())
     }
     self.assertEqual(expected, player_stat_snapshot_dict)
    def test_one_month_of_updates(self):
        """"
            Adds stats for a month
            Starts with:
            "total_resources_earned": 5002
            "week_resources_earned": 0
            "battles": 731

            It should end up with:
            "total_resources_earned": 5002 + 65 = 5067
            "week_resources_earned": 20
            30 day = 65
        """""
        TestTime.set_app_time(datetime.datetime(2015, 8, 1))
        account_stats = AccountStatsFixtures.standard_accounts_record()
        player_stats = AccountStatsFixtures.personal_data_response()
        conn = DatabaseUtils.get_db_connection()
        DatabaseUtils.recreate_database(conn)
        conn = DatabaseUtils.get_db_connection()
        controller = ClanController()
        controller._retrieve_account_stats = lambda account_id, app_id: account_stats
        controller._retrieve_personal_stats = lambda account_id, app_id: player_stats
        members = [{'account_id': 512841364, 'account_name': 'test_player'}]
        players_data = controller.get_players_data(conn, 123, 123, members)
        self.assertEqual(1, len(players_data))
        TestTime.set_app_time(datetime.datetime(2015, 8, 5))
        self._amend_accounts_stats(account_stats, 10, 1, 10)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 10))
        self._amend_accounts_stats(account_stats, 35, 2, 45)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 15))
        self._amend_accounts_stats(account_stats, 0, 2, 35)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 25))
        self._amend_accounts_stats(account_stats, 20, 1, 20, 10)
        self._amend_player_stats(player_stats, 21, 10)
        controller.get_players_data(conn, 123, 500050913, members)
        TestTime.set_app_time(datetime.datetime(2015, 8, 31))
        players_data = controller.get_players_data(conn, 123, 500050913, members)
        expected = {
            "clan_id": 500050913,
            "account_id": 512841364,
            "account_name": 'test_player',
            'all_battles':25367,
            'clan_battles': 46,
            "total_resources_earned": 5067,
            "stronghold_defense_battles": 19,
            "thirty_day_defense_battles": 10,
            "stronghold_skirmish_battles": 737,
            "thirty_day_skirmish_battles": 6,
            "seven_day_resources_earned": 20,
            "thirty_day_resources_earned": 65,
            'thirty_day_clan_battles': 0,
            'thirty_day_all_battles': 21,
            "last_update": AppTime.get_now()
        }
        self.maxDiff = None
        self.assertEqual(expected, players_data[0])
Example #11
0
 def requires_recalculation(self, player_data):
     last_update = player_data['last_update'] \
         if isinstance(player_data['last_update'], datetime.datetime) \
         else datetime.datetime.strptime(player_data['last_update'], '%Y-%m-%d %H:%M:%S')
     diff_time = AppTime.get_now() - last_update
     max_delta_time = datetime.timedelta(days=1)
     if diff_time < max_delta_time:
         return False
     return True
Example #12
0
 def requires_recalculation(self, player_data):
     last_update = player_data['last_update'] \
         if isinstance(player_data['last_update'], datetime.datetime) \
         else datetime.datetime.strptime(player_data['last_update'], '%Y-%m-%d %H:%M:%S')
     diff_time = AppTime.get_now() - last_update
     max_delta_time = datetime.timedelta(days=1)
     if diff_time < max_delta_time:
         return False
     return True
 def test_get_player_data_that_is_not_in_database(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1))
     conn = DatabaseUtils.get_db_connection()
     DatabaseUtils.recreate_database(conn)
     conn = DatabaseUtils.get_db_connection()
     controller = ClanController()
     controller._retrieve_account_stats = lambda account_id, app_id: AccountStatsFixtures.standard_accounts_record()
     controller._retrieve_personal_stats = lambda account_id, app_id: AccountStatsFixtures.personal_data_response()
     player_data = controller.get_player_data(conn, 'app_id', 500050913, 512841364, 'test_player')
     expected = {
         "clan_id": 500050913,
         "account_id": 512841364,
         "account_name": 'test_player',
         "total_resources_earned": 5002,
         "stronghold_defense_battles": 9,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": 731,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": 0,
         "thirty_day_resources_earned": 0,
         'clan_battles': 46,
         'thirty_day_clan_battles': 0,
         'all_battles': 25346,
         'thirty_day_all_battles': 0,
         "last_update": AppTime.get_now()
     }
     self.maxDiff = None
     self.assertEqual(expected, player_data)
     from_date = AppTime.get_now()
     to_date = from_date - datetime.timedelta(days=30)
     rows = PlayerRepository.get_player_stats(conn, player_data['clan_id'], player_data['account_id'], from_date,
                                              to_date)
     self.assertEqual(1, len(rows))
     player_stat_snapshot_dict = dict(zip(rows[0].keys(), rows[0]))
     expected = {'stronghold_defense_battles': 9,
                 'account_id': 512841364,
                 'stronghold_skirmish_battles': 731,
                 'clan_id': 500050913,
                 'total_resources_earned': 5002,
                 'created_date': str(AppTime.get_now())}
     self.assertEqual(expected, player_stat_snapshot_dict)
 def test_normal_data(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1))
     player_data = AccountStatsToPlayerDataMapper.map(AccountStatsFixtures.standard_accounts_record(),
                                                      512841364, 'test_player')
     expected = {
         "clan_id": 500050913,
         "account_id": 512841364,
         "account_name": 'test_player',
         "total_resources_earned": 5002,
         "stronghold_defense_battles": 9,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": 731,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": 0,
         "thirty_day_resources_earned": 0,
         "last_update": AppTime.get_now()
     }
     self.assertEqual(expected, player_data)
 def map(cls, accounts_stats, account_id, account_name):
     player_data = {}
     if accounts_stats is None or not accounts_stats:
         return player_data
     data = accounts_stats['data'][str(account_id)]
     player_data = {
         "clan_id": data['clan_id'],
         "account_id": data['account_id'],
         "account_name": account_name,
         "total_resources_earned": data['total_resources_earned'],
         "stronghold_defense_battles": data['stronghold_defense']['battles'] if data['stronghold_defense'] else 0,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": data['stronghold_skirmish']['battles'] if data['stronghold_skirmish'] else 0,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": data['week_resources_earned'],
         "thirty_day_resources_earned": data['week_resources_earned'],
         "last_update": AppTime.get_now()
     }
     return player_data
 def test_normal_data(self):
     TestTime.set_app_time(datetime.datetime(2015, 8, 1))
     player_data = AccountStatsToPlayerDataMapper.map(
         AccountStatsFixtures.standard_accounts_record(), 512841364,
         'test_player')
     expected = {
         "clan_id": 500050913,
         "account_id": 512841364,
         "account_name": 'test_player',
         "total_resources_earned": 5002,
         "stronghold_defense_battles": 9,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": 731,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": 0,
         "thirty_day_resources_earned": 0,
         "last_update": AppTime.get_now()
     }
     self.assertEqual(expected, player_data)
Example #17
0
 def update_player_stats(cls, connection, player_data):
     sql = """
         UPDATE player_stats SET
             total_resources_earned = ?,
             stronghold_defense_battles = ?,
             stronghold_skirmish_battles = ?,
             seven_day_resources_earned = ?,
             clan_battles = ?,
             all_battles = ?,
             thirty_day_resources_earned = ?,
             thirty_day_defense_battles = ?,
             thirty_day_skirmish_battles = ?,
             thirty_day_clan_battles = ?,
             thirty_day_all_battles = ?,
             last_update = ?
         WHERE
             clan_id = ? AND
             account_id = ?
     """
     values = [
         player_data['total_resources_earned'],
         player_data['stronghold_defense_battles'],
         player_data['stronghold_skirmish_battles'],
         player_data['seven_day_resources_earned'],
         player_data['clan_battles'],
         player_data['all_battles'],
         player_data['thirty_day_resources_earned'],
         player_data['thirty_day_defense_battles'],
         player_data['thirty_day_skirmish_battles'],
         player_data['thirty_day_clan_battles'],
         player_data['thirty_day_all_battles'],
         AppTime.get_now(),
         player_data['clan_id'],
         player_data['account_id']
     ]
     with connection:
         cur = connection.cursor()
         cur.execute(sql, values)
 def test_map(self):
     now = AppTime.get_now()
     record = {
         "clan_id": 500050913,
         "account_id": 512841364,
         "account_name": 'test_player',
         "total_resources_earned": 5002,
         "stronghold_defense_battles": 9,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": 731,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": 0,
         "thirty_day_resources_earned": 0,
         'clan_battles': 3,
         'thirty_day_clan_battles': 0,
         'all_battles': 9401,
         'thirty_day_all_battles': 0,
         "last_update": now
     }
     expected = {
         "clan_id": 500050913,
         "account_id": 512841364,
         "account_name": 'test_player',
         "total_resources_earned": 5002,
         "stronghold_defense_battles": 9,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": 731,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": 0,
         "thirty_day_resources_earned": 0,
         'clan_battles': 3,
         'thirty_day_clan_battles': 0,
         'all_battles': 9401,
         'thirty_day_all_battles': 0,
         "last_update": now
     }
     result = RecordToPlayerDataMapper.map(record)
     self.assertEqual(expected, result)
 def test_map(self):
     now = AppTime.get_now()
     record = {"clan_id": 500050913,
               "account_id": 512841364,
               "account_name": 'test_player',
               "total_resources_earned": 5002,
               "stronghold_defense_battles": 9,
               "thirty_day_defense_battles": 0,
               "stronghold_skirmish_battles": 731,
               "thirty_day_skirmish_battles": 0,
               "seven_day_resources_earned": 0,
               "thirty_day_resources_earned": 0,
               'clan_battles': 3,
               'thirty_day_clan_battles': 0,
               'all_battles': 9401,
               'thirty_day_all_battles': 0,
               "last_update": now
               }
     expected = {
         "clan_id": 500050913,
         "account_id": 512841364,
         "account_name": 'test_player',
         "total_resources_earned": 5002,
         "stronghold_defense_battles": 9,
         "thirty_day_defense_battles": 0,
         "stronghold_skirmish_battles": 731,
         "thirty_day_skirmish_battles": 0,
         "seven_day_resources_earned": 0,
         "thirty_day_resources_earned": 0,
         'clan_battles': 3,
         'thirty_day_clan_battles': 0,
         'all_battles': 9401,
         'thirty_day_all_battles': 0,
         "last_update": now
     }
     result = RecordToPlayerDataMapper.map(record)
     self.assertEqual(expected, result)
Example #20
0
 def update_player_stats(cls, connection, player_data):
     sql = """
         UPDATE player_stats SET
             total_resources_earned = ?,
             stronghold_defense_battles = ?,
             stronghold_skirmish_battles = ?,
             seven_day_resources_earned = ?,
             clan_battles = ?,
             all_battles = ?,
             thirty_day_resources_earned = ?,
             thirty_day_defense_battles = ?,
             thirty_day_skirmish_battles = ?,
             thirty_day_clan_battles = ?,
             thirty_day_all_battles = ?,
             last_update = ?
         WHERE
             clan_id = ? AND
             account_id = ?
     """
     values = [
         player_data['total_resources_earned'],
         player_data['stronghold_defense_battles'],
         player_data['stronghold_skirmish_battles'],
         player_data['seven_day_resources_earned'],
         player_data['clan_battles'], player_data['all_battles'],
         player_data['thirty_day_resources_earned'],
         player_data['thirty_day_defense_battles'],
         player_data['thirty_day_skirmish_battles'],
         player_data['thirty_day_clan_battles'],
         player_data['thirty_day_all_battles'],
         AppTime.get_now(), player_data['clan_id'],
         player_data['account_id']
     ]
     with connection:
         cur = connection.cursor()
         cur.execute(sql, values)