示例#1
0
    def __run_rss_contest_test(self, test):
        contest = self.__load_contest_from_test("user1", test["contest"])
        user = User.objects.get(username="******")
        slug = re.sub(r'\s+', '-', test["contest"]["name"].lower())
# rssfile = os.path.join(os.path.dirname(os.path.abspath(__file__)),
#'test-data', 'test-' + slug + '.xml')
        player = Player.objects.get(user=user)
        with tempfile.NamedTemporaryFile(delete=False) as rsstmpfile:
            rssfile = rsstmpfile.name
            player.untappd_rss = 'file://localhost' + rssfile
            player.save()
            contest_player = contest.add_player(player)
            self.__build_rss_feed(rssfile, contest_player, test["feed"])
            load_player_checkins(player, contest.id)
            for fbeer in test["feed"]:
                uv = Unvalidated_Checkin.objects.get(
                            untappd_checkin=fbeer["untappd_checkin"])
                self.assertEqual(fbeer["has_possibles"], uv.has_possibles,
                                 "{} mismatched has_possibles".format(uv))
                if "possible_bonuses" in fbeer:
                    self.assertIsNotNone(uv.possible_bonuses)
                    ids = [Contest_Bonus.objects.get(name=name).id 
                           for name in fbeer["possible_bonuses"]]
                             
                    self.assertEqual(sorted(uv.possible_bonuses), 
                                     sorted(ids),
                                     "Should have possible bonuses {}".format(uv))
                else:
                    self.assertIsNone(uv.possible_bonuses)
示例#2
0
 def handle(self, *args, **opts):
     """
     Primarily calls load_player_checkins with the right arguments
     """
     players = Player.objects.all()
     contest_id = None
     after_date = None
     if 'player' in opts and opts['player']:
         players = players.filter(user__username=opts['player'][0])
         if players.count() == 0:
             raise CommandError(('Error: no such player: ' + '{}').format(
                 opts['player'][0]))
     if 'contest' in opts and opts['contest']:
         try:
             contest_id = opts['contest'][0]
             Contest.objects.get(id=contest_id)
         except Contest.DoesNotExist:
             raise CommandError(('Error: load-checkins got a contest that' +
                                 ' did not exist: {}').format(contest_id))
     if 'after_date' in opts and opts['after_date']:
         after_date = opts['after_date'][0]
     for player in players:
         load_player_checkins(player,
                              from_date=after_date,
                              contest_id=contest_id)
示例#3
0
 def test_successful_feed_for_player_twice(self):
     """
     Test the ability to load a single XML feed file for a user twice.
     The second call shouldn't add any new checkins because they'd be
     redundant
     """
     runner = Player.objects.get(id=4)
     player = Player.objects.get(id=1)
     player.untappd_rss = os.path.join(
         os.path.dirname(os.path.abspath(__file__)),
         'test-data', 'test-checkins.xml')
     player.save()
     start_date = timezone.make_aware(datetime.datetime(2017, 1, 1))
     end_date = timezone.make_aware(datetime.datetime(2017, 12, 31))
     contest = Contest.objects.create_contest('Contest',
                                              runner,
                                              start_date,
                                              end_date)
     contest.save()
     contest_player = contest.add_player(player)
     contest_player.save()
     load_player_checkins(player)
     checkins = Unvalidated_Checkin.objects.filter(contest_player=contest_player)
     self.assertEqual(checkins.count(), 25)
     load_player_checkins(player)
     checkins = Unvalidated_Checkin.objects.filter(contest_player=contest_player)
     self.assertEqual(checkins.count(), 25)
示例#4
0
 def test_successful_feed_after_date(self):
     """Tests the ability to load a subset of a XML feed after a certain date"""
     runner = Player.objects.get(id=4)
     player = Player.objects.get(id=1)
     player.untappd_rss = os.path.join(
         os.path.dirname(os.path.abspath(__file__)), 'test-data',
         'test-checkins.xml')
     player.save()
     start_date = timezone.make_aware(datetime.datetime(2017, 1, 1))
     end_date = timezone.make_aware(datetime.datetime(2017, 12, 31))
     contest = Contest.objects.create_contest('Contest', runner, start_date,
                                              end_date)
     contest.save()
     contest_player = contest.add_player(player)
     contest_player.save()
     from_date = timezone.make_aware(datetime.datetime(2017, 6, 1))
     load_player_checkins(player, from_date=from_date)
     checkins = Unvalidated_Checkin.objects.filter(
         contest_player=contest_player)
     self.assertEqual(checkins.count(), 4)