def test_guess_form_without_alpha(self): with freeze_time('2050-07-01', tz_offset=0): market = Market.objects.get(slug='guess-my-ssn') market.alpha = None market.save() self.login('alice') resp = self.assertGet20X('market-guess', 'guess-my-ssn') self.assertNotContains(resp, "market main page") # because it's a special market self.assertPost20X('market-guess', 'guess-my-ssn', data={'value': 100}) resp = self.assertGet20X('market-guess', 'guess-my-ssn') self.assertContains(resp, "You already submitted") guess = Guess.objects.get(user__username='******') self.assertEqual(guess.value, 100) self.assertEqual(guess.score, None) market.answer = 42 market.alpha = 3 market.save() self.assertPost40X('market-recompute', 'guess-my-ssn') UserFactory.create(username='******', is_staff=True, is_superuser=True) self.login('admin') self.assertPost20X('market-recompute', 'guess-my-ssn') guess = Guess.objects.get(user__username='******') self.assertEqual(guess.value, 100) self.assertAlmostEqual(guess.score, round((42 / 100)**3 * 2, ndigits=2))
def test_views(self): client = Client() user = UserFactory.create(username='******', password='******') client.login(username=user.username, password='******') now = datetime.datetime.now(pytz.UTC) tomorrow = datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=1, ) response = client.get(reverse('index')) self.assertEqual(200,response.status_code) response = client.get(reverse('passed')) self.assertEqual(200,response.status_code) active_not_drawn = LotteryFactory.create(is_active=True, is_closed_from=tomorrow, is_active_from=now) response = client.get(reverse('entry', args=(active_not_drawn.pk,))) self.assertEqual(200,response.status_code) post_var = {} balls = range(1, int(active_not_drawn.max_ball)) i = 1 while len(post_var.values()) < active_not_drawn.number_of_balls: post_var['%s%s' % (BALL_KEY,i)] = balls.pop(random.randrange(len(balls))) i += 1 print post_var client.post(reverse('entry', args=(active_not_drawn.pk,)), post_var) self.assertIn(active_not_drawn.pk, Entry.objects.filter(entry_user=user).values_list('pk',flat=True)) response = client.get(reverse('user_index')) self.assertEqual(200,response.status_code)
def test_list(self): with freeze_time('2020-01-02', tz_offset=0): self.login(UserFactory.create()) response = self.get('market-list') self.assertContains(response, 'm-one') self.assertContains(response, 'm-two') self.assertNotContains(response, 'm-three')
def handle(self, *args, **options): self.stdout.write(self.style.WARNING('All users created with password - password')) # CREATE USERS # create admin user UserFactory.create(username='******', is_superuser=True, is_staff=True) self.stdout.write(self.style.SUCCESS('Superuser username: super')) staff_user = UserFactory.create(username='******', is_superuser=False, is_staff=True) # give the admin user everything for the purpose of testing staff_user.user_permissions.add(*list(Permission.objects.all())) self.stdout.write(self.style.SUCCESS('Staff username: Admin')) # create 100 standard users UserFactory.create_batch(30) self.stdout.write(self.style.SUCCESS('100 Random users created')) # CREATE LOTTOS # create random LotteryFactory.create_batch(2, is_active=True) # create some random active 3 ball lotteries LotteryFactory.create_batch(5, number_of_balls=3, is_active=True) # create some random active 6 ball lotteries LotteryFactory.create_batch(5, number_of_balls=6, is_active=True) # create some inactive LotteryFactory.create_batch(5, number_of_balls=3, is_active=False) self.stdout.write(self.style.SUCCESS('Test data created!')) # CREATE ENTRIES lottos = Lottery.objects.filter() EntryFactory.create_batch(100, entry_for=lottos[0]) EntryFactory.create_batch(100, entry_for=lottos[1]) EntryFactory.create_batch(100, entry_for=lottos[2]) # draw some lottos lottos[0].do_draw(machine='arthur') lottos[1].do_draw(machine='guinevere') lottos[2].do_draw(machine='cheat')
def test_entry(self): user = UserFactory.create() now = datetime.datetime.now(pytz.UTC) tomorrow = datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=1, ) active_not_drawn = LotteryFactory.create(is_active=True, is_closed_from=tomorrow, is_active_from=now) entry = EntryFactory.create(entry_for=active_not_drawn, entry_user=user) self.assertEqual(None, entry.winner) # test the cheat draw , should pick entry as its the only one! active_not_drawn.do_draw(machine='cheat') print '**%s' % entry.balls print '##%s' % active_not_drawn.draw_result self.assertEqual(True, Entry.objects.get(id=entry.pk).winner)
def test_package_create_view_logged_in(client): user = UserFactory.create() client.force_login(user) response = client.get(reverse("packages.create")) assert response.status_code == 200 assert b"Upload package" in response.content
def test_mallory_core_views(self): u = UnitFactory.create() self.login(UserFactory.create()) for v in ('view-problems', 'view-tex', 'view-solutions'): self.assertGetDenied(v, u.pk)
def test_staff_core_views(self): u = UnitFactory.create() self.login(UserFactory.create(is_staff=True)) for v in ('view-problems', 'view-tex', 'view-solutions'): self.assertGet20X(v, u.pk)
def test_multi_student_annotate(self): alice = self.get_alice() bob = StudentFactory.create() carol = StudentFactory.create() donald = StudentFactory.create() # problem sets (clubs/hearts) PSetFactory.create(student=bob, clubs=196, hours=64, approved=True, unit__code='DMW') PSetFactory.create(student=bob, clubs=None, hours=None, approved=True, unit__code='ZMY') # diamonds a1 = AchievementFactory.create(diamonds=3) a2 = AchievementFactory.create(diamonds=6) AchievementUnlockFactory.create(user=carol.user, achievement=a1) AchievementUnlockFactory.create(user=carol.user, achievement=a2) AchievementUnlockFactory.create(user=bob.user, achievement=a2) # spades exam = ExamFactory.create() ExamAttemptFactory.create(student=bob, score=3, quiz=exam) ExamAttemptFactory.create(student=carol, score=4, quiz=exam) ExamAttemptFactory.create(student=carol, score=2) QuestCompleteFactory.create(student=carol, spades=5) # make levels LevelFactory.create_batch(size=36) queryset = annotate_student_queryset_with_scores(Student.objects.all()) alice = queryset.get(pk=alice.pk) bob = queryset.get(pk=bob.pk) carol = queryset.get(pk=carol.pk) donald = queryset.get(pk=donald.pk) self.assertEqual(getattr(alice, 'num_psets'), 3) self.assertEqual(getattr(alice, 'clubs_any'), 400) self.assertEqual(getattr(alice, 'clubs_D'), 100) self.assertEqual(getattr(alice, 'clubs_Z'), 180) self.assertEqual(getattr(alice, 'hearts'), 84) self.assertEqual(getattr(alice, 'spades_quizzes'), 7) self.assertEqual(getattr(alice, 'spades_quests'), 5) self.assertEqual(getattr(alice, 'diamonds'), 11) self.assertEqual(getattr(bob, 'num_psets'), 2) self.assertEqual(getattr(bob, 'clubs_any'), 196) self.assertEqual(getattr(bob, 'clubs_D'), 196) self.assertEqual(getattr(bob, 'clubs_Z'), None) self.assertEqual(getattr(bob, 'hearts'), 64) self.assertEqual(getattr(bob, 'spades_quizzes'), 3) self.assertEqual(getattr(bob, 'spades_quests'), None) self.assertEqual(getattr(bob, 'diamonds'), 6) self.assertEqual(getattr(carol, 'num_psets'), 0) self.assertEqual(getattr(carol, 'clubs_any'), None) self.assertEqual(getattr(carol, 'clubs_D'), None) self.assertEqual(getattr(carol, 'clubs_Z'), None) self.assertEqual(getattr(carol, 'hearts'), None) self.assertEqual(getattr(carol, 'spades_quizzes'), 6) self.assertEqual(getattr(carol, 'spades_quests'), 5) self.assertEqual(getattr(carol, 'diamonds'), 9) self.assertEqual(getattr(donald, 'num_psets'), 0) self.assertEqual(getattr(donald, 'clubs_any'), None) self.assertEqual(getattr(donald, 'clubs_D'), None) self.assertEqual(getattr(donald, 'clubs_Z'), None) self.assertEqual(getattr(donald, 'hearts'), None) self.assertEqual(getattr(donald, 'spades_quizzes'), None) self.assertEqual(getattr(donald, 'spades_quests'), None) self.assertEqual(getattr(donald, 'diamonds'), None) rows = get_student_rows(queryset) rows.sort(key=lambda row: row['student'].pk) self.assertEqual(rows[0]['clubs'], 520) self.assertEqual(rows[0]['hearts'], 84) self.assertEqual(rows[0]['spades'], 19) self.assertEqual(rows[0]['diamonds'], 11) self.assertEqual(rows[0]['level'], 38) self.assertEqual(rows[0]['level_name'], 'Level 38') self.assertAlmostEqual(rows[0]['insanity'], 0.25) self.assertAlmostEqual(rows[1]['clubs'], 254.8) self.assertEqual(rows[1]['hearts'], 64) self.assertEqual(rows[1]['spades'], 6) self.assertEqual(rows[1]['diamonds'], 6) self.assertEqual(rows[1]['level'], 27) self.assertEqual(rows[1]['level_name'], 'Level 27') self.assertAlmostEqual(rows[1]['insanity'], 0.5) self.assertEqual(rows[2]['clubs'], 0) self.assertEqual(rows[2]['hearts'], 0) self.assertEqual(rows[2]['spades'], 17) self.assertEqual(rows[2]['diamonds'], 9) self.assertEqual(rows[2]['level'], 7) self.assertEqual(rows[2]['level_name'], 'Level 7') self.assertAlmostEqual(rows[2]['insanity'], 0) self.assertEqual(rows[3]['clubs'], 0) self.assertEqual(rows[3]['hearts'], 0) self.assertEqual(rows[3]['spades'], 0) self.assertEqual(rows[3]['diamonds'], 0) self.assertEqual(rows[3]['level'], 0) self.assertEqual(rows[3]['level_name'], "No level") self.assertAlmostEqual(rows[3]['insanity'], 0) admin = UserFactory.create(is_superuser=True) self.login(admin) self.assertGet20X('leaderboard')
def test_master_schedule(self): alice = StudentFactory.create() units = UnitFactory.create_batch(30) alice.curriculum.set(units[0:18]) self.login(UserFactory.create(is_staff=True)) self.assertContains(self.get('master-schedule'), text=alice.user.first_name, count=18)