Exemple #1
0
	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)
Exemple #2
0
	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)
Exemple #3
0
	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)