Пример #1
0
 def test_get_tournament_name(self):
     self.assertEqual(SmashGGScraper.get_tournament_name(TEST_EVENT_NAME_1),
                      'HTC Throwdown')
     self.assertEqual(SmashGGScraper.get_tournament_name(TEST_EVENT_NAME_2),
                      'Tiger Smash 4')
     self.assertEqual(SmashGGScraper.get_tournament_name(TEST_EVENT_NAME_3),
                      'Nebulous Prime Melee #47')
Пример #2
0
 def test_get_phase_name(self):
     self.assertEqual(
         SmashGGScraper.get_phase_bracket_name(TEST_PHASE_ID_1),
         'Round 2 Bracket')
     self.assertEqual(
         SmashGGScraper.get_phase_bracket_name(TEST_PHASE_ID_2),
         'Final Bracket')
Пример #3
0
 def test_get_event_name(self):
     self.assertEqual(
         SmashGGScraper.get_event_name(TEST_EVENT_NAME_1,
                                       TEST_PHASE_NAME_1), 'Melee Singles')
     self.assertEqual(
         SmashGGScraper.get_event_name(TEST_EVENT_NAME_2,
                                       TEST_PHASE_NAME_1), 'Melee Singles')
Пример #4
0
 def test_get_tournament_name_from_url(self):
     self.assertEqual(
         SmashGGScraper.get_tournament_name_from_url(TEST_URL_1),
         'htc throwdown')
     self.assertEqual(
         SmashGGScraper.get_tournament_name_from_url(TEST_URL_2),
         'tiger smash 4')
Пример #5
0
 def setUpClass(cls):
     print 'Pulling tournaments from smash.gg ...'
     super(TestSmashGGScraper, cls).setUpClass()
     cls.tournament1 = SmashGGScraper(TEST_URL_1, [1511, 2095, 2096])
     cls.tournament2 = SmashGGScraper(TEST_URL_2, [3930, 21317])
     #cls.tournament3 = SmashGGScraper(TEST_URL_3, [])
     cls.tournament4 = SmashGGScraper(TEST_URL_4, [49153, 49705])
Пример #6
0
    def get(self):
        args = smashGGMap_get_parser.parse_args()
        url = args['bracket_url']

        event_name = SmashGGScraper.get_tournament_event_name_from_url(url)
        phase_name = SmashGGScraper.get_tournament_phase_name_from_url(url)
        id_map = SmashGGScraper.get_phasename_id_map(event_name, phase_name)
        return id_map
Пример #7
0
 def test_get_phasename_id_map(self):
     self.assertEqual(
         len(
             SmashGGScraper.get_phasename_id_map(TEST_EVENT_NAME_1,
                                                 TEST_PHASE_NAME_1)), 3)
     self.assertEqual(
         len(
             SmashGGScraper.get_phasename_id_map(TEST_EVENT_NAME_2,
                                                 TEST_PHASE_NAME_1)), 3)
Пример #8
0
    def get(self):
        parser = reqparse.RequestParser() \
            .add_argument('bracket_url', type=str)

        args = parser.parse_args()
        url = args['bracket_url']

        event_name = SmashGGScraper.get_tournament_event_name_from_url(url)
        phase_name = SmashGGScraper.get_tournament_phase_name_from_url(url)
        id_map = SmashGGScraper.get_phasename_id_map(event_name, phase_name)
        return id_map
Пример #9
0
    def get(self):
        parser = reqparse.RequestParser() \
            .add_argument('bracket_url', type=str)

        args = parser.parse_args()
        url = args['bracket_url']

        event_name = SmashGGScraper.get_tournament_event_name_from_url(url)
        phase_name = SmashGGScraper.get_tournament_phase_name_from_url(url)
        id_map = SmashGGScraper.get_phasename_id_map(event_name, phase_name)
        return id_map
Пример #10
0
 def test_get_event_name(self):
     self.assertEqual(SmashGGScraper.get_event_name(TEST_EVENT_NAME_1, TEST_PHASE_NAME_1), 'Melee Singles')
     self.assertEqual(SmashGGScraper.get_event_name(TEST_EVENT_NAME_2, TEST_PHASE_NAME_1), 'Melee Singles')
Пример #11
0
 def test_get_tournament_name_from_url(self):
     self.assertEqual(SmashGGScraper.get_tournament_name_from_url(TEST_URL_1), 'htc throwdown')
     self.assertEqual(SmashGGScraper.get_tournament_name_from_url(TEST_URL_2), 'tiger smash 4')
Пример #12
0
 def test_get_tournament_phase_id_from_url(self):
     self.assertEqual(SmashGGScraper.get_tournament_phase_id_from_url(TEST_URL_1), 6529)
     self.assertEqual(SmashGGScraper.get_tournament_phase_id_from_url(TEST_URL_2), 70949)
Пример #13
0
 def test_get_tournament_id_from_url2(self):
     self.assertEqual(SmashGGScraper.get_tournament_id_from_url(TEST_URL_2), 70949)
Пример #14
0
 def test_get_tournament_id_from_url1(self):
     self.assertEqual(SmashGGScraper.get_tournament_id_from_url(TEST_URL_1), 6529)
Пример #15
0
 def setUp(self):
     self.tournament1 = SmashGGScraper(TEST_URL_1)
     self.tournament2 = SmashGGScraper(TEST_URL_2)
Пример #16
0
 def test_get_phase_name(self):
     self.assertEqual(SmashGGScraper.get_phase_bracket_name(TEST_PHASE_ID_1), 'Round 2 Bracket')
     self.assertEqual(SmashGGScraper.get_phase_bracket_name(TEST_PHASE_ID_2), 'Final Bracket')
Пример #17
0
 def test_get_tournament_phase_id_from_url(self):
     self.assertEqual(
         SmashGGScraper.get_tournament_phase_id_from_url(TEST_URL_1), 6529)
     self.assertEqual(
         SmashGGScraper.get_tournament_phase_id_from_url(TEST_URL_2), 70949)
Пример #18
0
 def test_get_phasename_id_map(self):
     self.assertEqual(len(SmashGGScraper.get_phasename_id_map(TEST_EVENT_NAME_1, TEST_PHASE_NAME_1)), 3)
     self.assertEqual(len(SmashGGScraper.get_phasename_id_map(TEST_EVENT_NAME_2, TEST_PHASE_NAME_1)), 3)
Пример #19
0
 def test_get_tournament_name(self):
     self.assertEqual(SmashGGScraper.get_tournament_name(TEST_EVENT_NAME_1), 'HTC Throwdown')
     self.assertEqual(SmashGGScraper.get_tournament_name(TEST_EVENT_NAME_2), 'Tiger Smash 4')
     self.assertEqual(SmashGGScraper.get_tournament_name(TEST_EVENT_NAME_3), 'Nebulous Prime Melee #47')
Пример #20
0
    def post(self, region):
        dao = get_dao(region)
        auth_user(request, dao)

        parser = reqparse.RequestParser() \
            .add_argument('type', type=str, location='json') \
            .add_argument('data', type=unicode, location='json') \
            .add_argument('bracket', type=str, location='json') \
            .add_argument('included_phases', type=list, location='json')
        args = parser.parse_args()

        if args['data'] is None:
            err("Tournament data required.")

        the_bytes = bytearray(args['data'], "utf8")

        if the_bytes[0] == 0xef:
            print "found magic numbers"
            err("Magic numbers!")

        type = args['type']
        data = args['data']
        included_phases = args['included_phases']
        pending_tournament = None

        try:
            if type == 'tio':
                if args['bracket'] is None:
                    err("Missing bracket name")
                data_bytes = bytes(data)
                if data_bytes[0] == '\xef':
                    data = data[:3]
                scraper = TioScraper(data, args['bracket'])
            elif type == 'challonge':
                scraper = ChallongeScraper(data)
            elif type == 'smashgg':
                scraper = SmashGGScraper(data, included_phases)
            else:
                err("Unknown tournament type")
            pending_tournament, raw_file = M.PendingTournament.from_scraper(
                type, scraper, region)
        except Exception as ex:
            err('Scraper encountered an error: ' + str(ex))

        if not pending_tournament or not raw_file:
            err('Scraper encountered an error.')

        try:
            pending_tournament.alias_to_id_map = alias_service.get_alias_to_id_map_in_list_format(
                dao, pending_tournament.players)
        except Exception as e: 
            log_exception()
            err('Alias service encountered an error')

        # If the tournament is too large, don't insert the raw file into the db.
        if len(pending_tournament.players) < 1000:
            try:
                raw_file = dao.insert_raw_file(raw_file)
            except Exception as ex:
                print ex
                err('Dao insert_raw_file encountered an error')
        else:
            print 'Skipping inserting raw file for tournament because it is too large'

        try:
            new_id = dao.insert_pending_tournament(pending_tournament)
            return_dict = {
                'id': str(new_id)
            }
            return return_dict
        except Exception as ex:
            err('Dao insert_pending_tournament encountered an error')

        err('Unknown error!')
Пример #21
0
class TestSmashGGScraper(unittest.TestCase):
    def setUp(self):
        self.tournament1 = SmashGGScraper(TEST_URL_1)
        self.tournament2 = SmashGGScraper(TEST_URL_2)
        # self.tournament3 = SmashGGScraper(TEST_TOURNAMENT_ID_3)

    @unittest.skip('skipping test_get_raw1 until api is complete')
    def test_get_raw1(self):
        with open(TEST_DATA1) as data1:
            self.tournament1_json_dict = json.load(data1)
        self.assertEqual(self.tournament1.get_raw()['smashgg'], self.tournament1_json_dict)

    @unittest.skip('skipping test_get_raw2 until api is complete')
    def test_get_raw2(self):
        with open(TEST_DATA2) as data2:
            self.tournament2_json_dict = json.load(data2)
        self.assertEqual(self.tournament2.get_raw()['smashgg'], self.tournament2_json_dict)

    # @unittest.skip('test is failing, May be API agile iterations manipulating data. Need to revisit')
    def test_get_raw_sub1(self):
        tournament = self.tournament1
        self.assertIsNotNone(tournament.get_raw()['smashgg']['entities']['sets'])
        seeds = self.assertIsNotNone(tournament.get_raw()['smashgg']['entities']['seeds'])
        seeds = tournament.get_raw()['smashgg']['entities']['seeds']
        sets = tournament.get_raw()['smashgg']['entities']['sets']
        for seed in seeds:
            self.assertIsNotNone(seed['entrantId'])
            self.assertIsNotNone(seed['mutations']['players'])
            this_player = seed['mutations']['players']
            for player_id in this_player:
                id = player_id

            self.assertIsNotNone(this_player[id]['gamerTag'].strip())

        #for set in sets:
        #    self.assertIsNotNone(set['winnerId'])
            # loserId is allowed to be None because of a Bye

    # @unittest.skip('test is failing, May be API agile iterations manipulating data. Need to revisit')
    def test_get_raw_sub2(self):
        tournament = self.tournament2
        self.assertIsNotNone(tournament.get_raw()['smashgg']['entities']['sets'])
        seeds = self.assertIsNotNone(tournament.get_raw()['smashgg']['entities']['seeds'])
        seeds = tournament.get_raw()['smashgg']['entities']['seeds']
        sets = tournament.get_raw()['smashgg']['entities']['sets']
        for seed in seeds:
            self.assertIsNotNone(seed['entrantId'])
            self.assertIsNotNone(seed['mutations']['players'])
            this_player = seed['mutations']['players']
            for player_id in this_player:
                id = player_id

            self.assertIsNotNone(this_player[id]['gamerTag'].strip())

        #for set in sets:
        #    self.assertIsNotNone(set['winnerId'])
            # loserId is allowed to be None because of a Bye

    def test_get_tournament_id_from_url1(self):
        self.assertEqual(SmashGGScraper.get_tournament_id_from_url(TEST_URL_1), 6529)

    def test_get_tournament_id_from_url2(self):
        self.assertEqual(SmashGGScraper.get_tournament_id_from_url(TEST_URL_2), 70949)

    def test_get_tournament_name_from_url1(self):
        self.assertEqual(SmashGGScraper.get_tournament_name_from_url(TEST_URL_1), 'htc throwdown')

    def test_get_tournament_name_from_url2(self):
        self.assertEqual(SmashGGScraper.get_tournament_name_from_url(TEST_URL_2), 'tiger smash 4')

    def test_get_player_by_entrant_id1(self):
        player = self.tournament1.get_player_by_entrant_id(TEST_PLAYER_ENTRANTID_1)
        self.assertEqual(player.name, 'Joseph Marquez')
        self.assertEqual(player.smash_tag, 'Mang0')
        self.assertEqual(player.region, 'SoCal')

    def test_get_player_by_entrant_id2(self):
        player = self.tournament2.get_player_by_entrant_id(TEST_PLAYER_ENTRANTID_2)
        self.assertEqual(player.name, 'Sami Muhanna')
        self.assertEqual(player.smash_tag, 'Druggedfox')
        self.assertEqual(player.region, 'GA')

    def test_get_player_by_smashgg_id1(self):
        player = self.tournament1.get_player_by_smashgg_id(TEST_PLAYER_SMASHGGID_1)
        self.assertEqual(player.name, 'Joseph Marquez')
        self.assertEqual(player.smash_tag, 'Mang0')
        self.assertEqual(player.region, 'SoCal')

    def test_get_player_by_smashgg_id2(self):
        player = self.tournament2.get_player_by_smashgg_id(TEST_PLAYER_SMASHGGID_2)
        self.assertEqual(player.name, 'Sami Muhanna')
        self.assertEqual(player.smash_tag, 'Druggedfox')
        self.assertEqual(player.region, 'GA')

    def test_get_players1(self):
        self.assertEqual(len(self.tournament1.get_players()), 48)

    def test_get_players2(self):
        self.assertEquals(len(self.tournament2.get_players()), 27)

    def test_get_matches1(self):
        self.assertEqual(len(self.tournament1.get_matches()), 58)
        # spot check that mang0 got double elim'd
        mango_count = 0
        for m in self.tournament1.get_matches():
            if m.loser == 'Mang0':
                mango_count += 1
        self.assertEqual(2, mango_count, msg="mango didnt get double elim'd?")

    def test_get_matches2(self):
        self.assertEquals(len(self.tournament2.get_matches()), 46)
        # spot check that Druggedfox was only in 5 matches, and that he won all of them
        sami_count = 0
        for m in self.tournament2.get_matches():
            if m.winner == 'Druggedfox':
                sami_count += 1
            self.assertFalse(m.loser == 'Druggedfox')
        self.assertEqual(5, sami_count)

    def test_get_smashgg_matches1(self):
        self.assertEqual(len(self.tournament1.get_smashgg_matches()), 58)

    def test_get_smashgg_matches2(self):
        self.assertEqual(len(self.tournament2.get_smashgg_matches()), 46)

    def test_get_date(self):
        date = self.tournament1.get_date()
        self.assertEqual(date.year, 2015)
        self.assertEqual(date.month, 9)
        self.assertEqual(date.day, 19)

        date = self.tournament2.get_date()
        self.assertEqual(date.year, 2016)
        self.assertEqual(date.month, 3)
        self.assertEqual(date.day, 27)

    def test_get_name(self):
        self.assertEqual(self.tournament1.get_name(), 'htc throwdown')
        self.assertEqual(self.tournament2.get_name(), 'tiger smash 4')

    def test_duplicate_tags1(self):
        tags = self.tournament1.get_players()
        temp = []
        for tag in tags:
            self.assertEqual(tag in temp, False)
            temp.append(tag)

    def test_duplicate_tags2(self):
        tags = self.tournament2.get_players()
        temp = []
        for tag in tags:
            self.assertEqual(tag in temp, False)
            temp.append(tag)