Example #1
0
	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))
Example #2
0
    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)
Example #3
0
	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')
Example #5
0
    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)
Example #6
0
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
Example #7
0
	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)
Example #8
0
	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)
Example #9
0
    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')
Example #10
0
	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)