def _create_iotd(self, **kwargs): judge = kwargs.pop('judge', Generators.user(groups=['iotd_judges'])) when = kwargs.pop('date', date.today()) user = Generators.user() Generators.premium_subscription(user, 'AstroBin Ultimate 2020+') image = Generators.image(user=user) IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) return IotdGenerators.iotd(judge=judge, image=image, date=when)
def test_is_iotd_true(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(image=image) self.assertTrue(IotdService().is_iotd(image))
def test_get_top_pick_nominations_corrupted(self): image = Generators.image(corrupted=True) Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) nominations = IotdService().get_top_pick_nominations() self.assertEquals(0, nominations.count())
def test_get_top_picks_corrupted(self): top_pick_image = Generators.image(corrupted=True) Generators.image() Generators.premium_subscription(top_pick_image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=top_pick_image) IotdGenerators.vote(image=top_pick_image) top_picks = IotdService().get_top_picks() self.assertEquals(0, top_picks.count())
def test_is_top_pick_false(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) image.published = datetime.now() - timedelta( days=settings.IOTD_REVIEW_WINDOW_DAYS) image.save() IotdService().update_top_pick_archive() self.assertFalse(IotdService().is_top_pick(image))
def test_get_top_pick_nominations_too_soon(self): image = Generators.image() Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdService().update_top_pick_nomination_archive() nominations = IotdService().get_top_pick_nominations() self.assertEquals(0, nominations.count())
def test_is_top_pick_nomination_true_future_top_pick(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.submission(image=image) image.published = datetime.now() - timedelta( days=settings.IOTD_SUBMISSION_WINDOW_DAYS) image.save() IotdService().update_top_pick_nomination_archive() self.assertTrue(IotdService().is_top_pick_nomination(image))
def test_is_top_pick_nomination_true_only_one_submission_before_cutoff( self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) image.published = settings.IOTD_MULTIPLE_PROMOTIONS_REQUIREMENT_START - timedelta( minutes=1) image.save() IotdService().update_top_pick_nomination_archive() self.assertTrue(IotdService().is_top_pick_nomination(image))
def test_is_top_picks_true_future_iotd(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(image=image, date=date.today() + timedelta(days=1)) image.published = datetime.now() - timedelta( days=settings.IOTD_REVIEW_WINDOW_DAYS) image.save() IotdService().update_top_pick_archive() self.assertTrue(IotdService().is_top_pick(image))
def test_is_iotd_false_future(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(image=image, date=date.today() + timedelta(days=1)) self.assertFalse(IotdService().is_iotd(image))
def test_get_top_pick_nominations_only_one_submission_before_cutoff(self): image = Generators.image() Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) image.published = settings.IOTD_MULTIPLE_PROMOTIONS_REQUIREMENT_START - timedelta( hours=1) image.save() IotdService().update_top_pick_nomination_archive() nominations = IotdService().get_top_pick_nominations() self.assertEquals(1, nominations.count())
def test_get_top_pick_nominations_only_one_submission_after_cutoff(self): image = Generators.image() Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) image.published = datetime.now() - timedelta( settings.IOTD_SUBMISSION_WINDOW_DAYS) - timedelta(hours=1) image.save() IotdService().update_top_pick_nomination_archive() nominations = IotdService().get_top_pick_nominations() self.assertEquals(0, nominations.count())
def test_get_top_picks_still_in_queue(self): top_pick_image = Generators.image() Generators.image() Generators.premium_subscription(top_pick_image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=top_pick_image) IotdGenerators.vote(image=top_pick_image) top_pick_image.published = datetime.now() - timedelta( settings.IOTD_REVIEW_WINDOW_DAYS) + timedelta(hours=1) top_pick_image.save() IotdService().update_top_pick_archive() top_picks = IotdService().get_top_picks() self.assertEquals(0, top_picks.count())
def test_is_iotd_false_excluded(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(image=image) image.user.userprofile.exclude_from_competitions = True image.user.userprofile.save() self.assertFalse(IotdService().is_iotd(image))
def test_is_top_pick_false_only_one_vote_after_cutoff(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdService().update_top_pick_archive() self.assertFalse(IotdService().is_top_pick(image))
def test_get_top_picks_is_past_iotd(self): image = Generators.image() Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(image=image, date=date.today() - timedelta(days=1)) top_picks = IotdService().get_top_picks() self.assertEquals(0, top_picks.count())
def test_get_top_picks_is_current_iotd(self): image = Generators.image() Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(image=image) top_picks = IotdService().get_top_picks() self.assertEquals(0, top_picks.count())
def test_get_iotds_corrupted(self): iotd_image = Generators.image(corrupted=True) Generators.image() Generators.premium_subscription(iotd_image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=iotd_image) IotdGenerators.vote(image=iotd_image) IotdGenerators.iotd(image=iotd_image) iotds = IotdService().get_iotds() self.assertEquals(0, iotds.count())
def test_get_top_picks_is_future_iotd(self): image = Generators.image() Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(image=image, date=date.today() + timedelta(days=1)) image.published = datetime.now() - timedelta( settings.IOTD_REVIEW_WINDOW_DAYS) - timedelta(hours=1) image.save() IotdService().update_top_pick_archive() top_picks = IotdService().get_top_picks() self.assertEquals(1, top_picks.count()) self.assertEquals(image, top_picks.first().image)
def test_get_iotds_future_date(self): iotd_image = Generators.image() Generators.image() Generators.premium_subscription(iotd_image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=iotd_image) IotdGenerators.vote(image=iotd_image) IotdGenerators.iotd(image=iotd_image, date=date.today() + timedelta(days=1)) iotds = IotdService().get_iotds() self.assertEquals(0, iotds.count())
def test_get_top_picks_not_enough_votes_before_cutoff(self): top_pick_image = Generators.image() Generators.image() Generators.premium_subscription(top_pick_image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=top_pick_image) IotdGenerators.submission(image=top_pick_image) IotdGenerators.vote(image=top_pick_image) top_pick_image.published = settings.IOTD_MULTIPLE_PROMOTIONS_REQUIREMENT_START - timedelta( hours=1) top_pick_image.save() IotdService().update_top_pick_archive() self.assertEquals(1, IotdService().get_top_picks().count())
def test_is_top_pick_nomination_false_still_in_queue(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) self.assertFalse(IotdService().is_top_pick_nomination(image))