def test_right(self): problem = Factory.produce_problem() user, password = UserFactory.produce_user() client = Client() client.login(email=user.email, password=password) post = {} challenges = Challenge.objects.filter(problem=problem).order_by('?')[:4] i = 1 for challenge in challenges: post['challenge_'+str(i)] = challenge.challenge post['challenge_'+str(i)+'_answer'] = challenge.answer i += 1 response = client.post('/problems/'+ problem.slug +'/', post) self.assertEqual(response.status_code, 200) self.assertEqual(response.context['success'], True)
def test_wrong(self): problem = Factory.produce_problem() user, password = UserFactory.produce_user() client = Client() client.login(email=user.email, password=password) post = {} challenges = Challenge.objects.filter(problem=problem).order_by('?')[:4] i = 0 for challenge in challenges: post['challenge_'+str(i)] = challenge.challenge post['challenge_'+str(i)+'_answer'] = challenge.answer i += 1 wrong = 'challenge_'+ str(random.choice(range(1,5))) +'_answer' post[wrong] = post[wrong] + '42' response = client.post('/problems/'+ problem.slug +'/', post) self.assertEqual(response.status_code, 200) self.assertEqual(response.context['success'], False)
def test_authenticated(self): user, password = UserFactory.produce_user() count_solved = 0 for i in range(random.randrange(5,50)): problem = Factory.produce_problem() for j in range(random.randrange(0,10)): is_successful = random.choice([True, False, False, False]) Factory.produce_attempt(user, problem, is_successful) if is_successful: count_solved += 1 break client = Client() client.login(email=user.email, password=password) response = client.get('/problems/') self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context['problems']), Problem.objects.count()) self.assertEqual(len(response.context['problems_solved_by_user']), count_solved)