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.iotd(image=image, date=date.today() + timedelta(days=1)) top_picks = IotdService().get_top_picks() self.assertEquals(1, top_picks.count()) self.assertEquals(image, top_picks.first())
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_pick_nominations_has_vote(self): image = Generators.image() Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.vote(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_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_get_submission_queue_published_too_long_ago(self): user = Generators.user() Generators.premium_subscription(user, "AstroBin Ultimate 2020+") submitter = Generators.user(groups=['iotd_submitters']) image = Generators.image(user=user) image.designated_iotd_submitters.add(submitter) image.published = datetime.now() - timedelta( settings.IOTD_SUBMISSION_WINDOW_DAYS) - timedelta(hours=1) image.save() self.assertEquals(0, len(IotdService().get_submission_queue(submitter)))
def setUp(self): self.image = Generators.image() Generators.premium_subscription(self.image.user, "AstroBin Lite") self.image.user.userprofile.allow_retailer_integration = False self.image.user.userprofile.save() telescope = Generators.telescope() equipment_brand_listing = EquipmentGenerators.equipment_brand_listing() telescope.equipment_brand_listings.add(equipment_brand_listing) self.image.user.userprofile.telescopes.add(telescope) self.image.imaging_telescopes.add(telescope)
def test_get_top_picks(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_picks = IotdService().get_top_picks() self.assertEquals(1, top_picks.count()) self.assertEquals(top_pick_image, top_picks.first())
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_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) IotdService().update_top_pick_archive() top_picks = IotdService().get_top_picks() self.assertEquals(0, top_picks.count())
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_review_queue_not_designated(self): uploader = Generators.user() submitter = Generators.user(groups=['iotd_submitters']) reviewer = Generators.user(groups=['iotd_reviewers']) Generators.premium_subscription(uploader, "AstroBin Ultimate 2020+") image = Generators.image(user=uploader) image.designated_iotd_submitters.add(submitter) image.designated_iotd_reviewers.remove(reviewer) IotdSubmission.objects.create(submitter=submitter, image=image) self.assertEquals(0, len(IotdService().get_review_queue(reviewer)))
def test_is_top_picks_false_already_iotd(self): image = Generators.image() Generators.premium_subscription(image.user, 'AstroBin Ultimate 2020+') IotdGenerators.submission(image=image) IotdGenerators.vote(image=image) IotdGenerators.iotd(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_vote_model_submission_must_be_within_window(self): Generators.premium_subscription(self.image.user, "AstroBin Ultimate 2020+") submission_1 = IotdSubmission.objects.create( submitter=self.submitter_1, image=self.image) IotdSubmission.objects.filter(pk=submission_1.pk).update( date= \ datetime.now() - \ timedelta(settings.IOTD_REVIEW_WINDOW_DAYS + 1)) with self.assertRaisesRegex(ValidationError, "in the submission queue for more than"): IotdVote.objects.create( reviewer=self.reviewer_1, image=submission_1.image)
def test_submission_model_can_submit_image_by_judge(self): self.image.user = self.judge_1 self.image.save(keep_deleted=True) Generators.premium_subscription(self.judge_1, "AstroBin Ultimate 2020+") try: submission = IotdSubmission.objects.create( submitter=self.submitter_1, image=self.image) except ValidationError as e: self.fail(e) self.assertEqual(submission.submitter, self.submitter_1) self.assertEqual(submission.image, self.image)
def test_vote_model_cannot_vote_own_image(self): Generators.premium_subscription(self.image.user, "AstroBin Ultimate 2020+") submission_1 = IotdSubmission.objects.create( submitter=self.submitter_1, image=self.image) self.image.user = self.reviewer_1 self.image.save(keep_deleted=True) with self.assertRaisesRegex(ValidationError, "your own image"): IotdVote.objects.create( reviewer=self.reviewer_1, image=submission_1.image) self.image.user = self.user self.image.save(keep_deleted=True)
def test_lite_autorenew(self, retrieve_primary_thumbnails): user = Generators.user() self.client.login(username=user.username, password="******") Generators.premium_subscription(user, "AstroBin Lite (autorenew)") response = self.client.get(reverse('image_detail', kwargs={'id': self.image.get_id()})) self.assertNotContains(response, "dropdown retailer-affiliate-products-lite") self.assertContains(response, "retailer-affiliate-cart-link") user.userprofile.allow_retailer_integration = False user.userprofile.save() response = self.client.get(reverse('image_detail', kwargs={'id': self.image.get_id()})) self.assertNotContains(response, "dropdown retailer-affiliate-products-lite") self.assertNotContains(response, "retailer-affiliate-cart-link")
def test_get_submission_queue_already_submitted_yesterday(self): user = Generators.user() Generators.premium_subscription(user, "AstroBin Ultimate 2020+") submitter = Generators.user(groups=['iotd_submitters']) image = Generators.image(user=user) image.designated_iotd_submitters.add(submitter) IotdSubmission.objects.create(submitter=submitter, image=image) image.published = datetime.now() - timedelta(hours=24) image.save() self.assertEquals(0, len(IotdService().get_submission_queue(submitter)))
def test_vote_model_image_must_be_public(self): Generators.premium_subscription(self.image.user, "AstroBin Ultimate 2020+") submission_1 = IotdSubmission.objects.create( submitter=self.submitter_1, image=self.image) self.image.is_wip = True self.image.save(keep_deleted=True) with self.assertRaisesRegex(ValidationError, "staging area"): IotdVote.objects.create( reviewer=self.reviewer_1, image=submission_1.image) self.image.is_wip = False self.image.save(keep_deleted=True)
def test_submit_6_mo_ultimate(self): user = User.objects.create_user('test', '*****@*****.**', 'password') premium = Generators.premium_subscription(user, 'AstroBin Premium') premium.expires = datetime(2020, 2, 16) premium.save() self.client.login(username='******', password='******') response = self.client.post( reverse('astrobin_apps_premium.data_loss_compensation_request'), { 'requested_compensation': '6_MO_ULTIMATE' }) self.assertRedirects( response, reverse('astrobin_apps_premium.data_loss_compensation_request_success'), status_code=302, target_status_code=200) compensation_request = DataLossCompensationRequest.objects.get(user=user) self.assertEquals(compensation_request.requested_compensation, '6_MO_ULTIMATE') ultimate = get_object_or_None(UserSubscription, user=user, subscription__name='AstroBin Ultimate 2020+') self.assertIsNotNone(ultimate) self.assertTrue(ultimate.active) self.assertTrue(ultimate.cancelled) self.assertTrue(ultimate.expires > date.today() + timedelta(days=179)) self.assertTrue(ultimate.expires < date.today() + timedelta(days=181)) self.assertTrue(is_ultimate_2020(user))
def test_user_preferences_allow_astronomy_ads_ultimate_2020(self): self.client.login(username='******', password='******') us = Generators.premium_subscription(self.user, "AstroBin Ultimate 2020+") self.assertNotContains( self.client.get(reverse('profile_edit_preferences')), 'name="allow_astronomy_ads" disabled')
def test_user_page_subscription_lite_2020(self): image = Generators.image() image.user = self.user image.save() us = Generators.premium_subscription(self.user, "AstroBin Lite 2020+") self.client.login(username='******', password='******') response = self.client.get(reverse('user_page', args=('user', ))) self.assertContains(response, "<h4>Subscription</h4>", html=True) self.assertContains( response, "<strong data-test='subscription-type'>AstroBin Lite</strong>", html=True) self.assertContains( response, "<strong data-test='expiration-date'>" + "<abbr class='timestamp' data-epoch='%s000'>...</abbr>" % us.expires.strftime('%s') + "</strong>", html=True) self.assertContains(response, "<strong data-test='images-used'>0 / 123</strong>", html=True)
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_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_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_get_review_queue_not_enough_submissions_after_cutoff(self): uploader = Generators.user() submitter = Generators.user(groups=['iotd_submitters']) reviewer = Generators.user(groups=['iotd_reviewers']) Generators.premium_subscription(uploader, "AstroBin Ultimate 2020+") image = Generators.image(user=uploader) image.designated_iotd_submitters.add(submitter) image.designated_iotd_reviewers.add(reviewer) IotdSubmission.objects.create(submitter=submitter, image=image) image.published = settings.IOTD_MULTIPLE_PROMOTIONS_REQUIREMENT_START + timedelta( hours=1) self.assertEquals(0, len(IotdService().get_review_queue(reviewer)))
def test_do_not_mark_as_pending_due_to_membership(self, get_scores): # Index: NOT OK # Membership: OK # Approved comments: NOT OK get_scores.return_value = {'user_scores_index': 0} image = Generators.image() author = Generators.user() Generators.premium_subscription(author, "AstroBin Premium 2020+") comment = NestedCommentsGenerators.comment( author=author, content_type=ContentType.objects.get_for_model(Image), oject_id=image.id, ) self.assertIsNone(comment.pending_moderation)
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_eligible(self): user = User.objects.create_user('test', '*****@*****.**', 'password') premium = Generators.premium_subscription(user, 'AstroBin Premium') premium.expires = datetime(2020, 2, 16) premium.save() self.client.login(username='******', password='******') response = self.client.get(reverse('astrobin_apps_premium.data_loss_compensation_request')) self.assertEquals(response.status_code, 200)
def test_vote_model_can_vote_image_by_judge(self): Generators.premium_subscription(self.image.user, "AstroBin Ultimate 2020+") IotdSubmission.objects.create( submitter=self.submitter_1, image=self.image) self.image.user = self.judge_1 self.image.save(keep_deleted=True) Generators.premium_subscription(self.image.user, "AstroBin Ultimate 2020+") try: IotdVote.objects.create( reviewer=self.reviewer_1, image=self.image) except ValidationError as e: self.fail(e) self.image.user = self.user self.image.save(keep_deleted=True)
def test_do_not_mark_as_pending_due_to_membership(self, get_scores): # Index: NOT OK # Membership: OK # Approved comments: NOT OK # Content owner: NOT OK # Auto approve: NOT OK get_scores.return_value = {'user_scores_index': 0} image = Generators.image() author = Generators.user() Generators.premium_subscription(author, "AstroBin Premium 2020+") comment = NestedCommentsGenerators.comment( author=author, target=image, ) self.assertIsNone(comment.pending_moderation)