def setUp(self): super(TestChallengeViews, self).setUp() self.ch_player1 = self._get_player(1) self.ch_player2 = self._get_player(2) race = Race.objects.create(name=u'testrace', can_play=True) self.ch_player1.race = race self.ch_player2.race = race self.ch_player1.points = 100 self.ch_player2.points = 100 self.ch_player1.save() self.ch_player2.save() self.ch_player1 = self.ch_player1.get_extension(ChallengeUser) self.ch_player2 = self.ch_player2.get_extension(ChallengeUser) scoring.setup_scoring() self.category = Category.add('challenge') self.question1 = Question.objects.create(text='question1', answer_type='F', category=self.category, active=True) self.answer1 = Answer.objects.create(text='first answer', correct=True, question=self.question1) self.question2 = Question.objects.create(text='question2', answer_type='F', category=self.category, active=True) self.answer2 = Answer.objects.create(text='second answer', correct=True, question=self.question2) self.ch = Challenge.create(user_from=self.ch_player1, user_to=self.ch_player2, ignore_questions=True) self.ch.questions.add(self.question1) self.ch.questions.add(self.question2) self.c = Client() self.c.login(username='******', password='******')
def test_check_bonus_for_quest(self): category = Category.add('quest') question1 = Question.objects.create(text='question1', answer_type='F', category=category, active=True) answer1 = Answer.objects.create(text='first answer', correct=True, question=question1) start = datetime.datetime.now() end = datetime.datetime.now() + timedelta(days=1) quest = Quest.objects.create(start=start, end=end) quest.questions.add(question1) self.quest_user.current_quest = quest quest.check_answer(self.quest_user, 'first answer') self.assertEqual(len(quest.top_results()), 1) pl = self.user.get_profile() pl.points = 100 pl.save() admin = User.objects.create_superuser('admin', '*****@*****.**', 'admin') fact = RequestFactory() request = fact.get(reverse('register_results', args=[1])) request.user = admin #get initial points initial_points = pl.points #add quest bonus response = quest_bonus(request, quest.id) #get final points pl = User.objects.get(username=self.user.username) final_points = pl.get_profile().points self.assertTrue(final_points > initial_points)
def test_history_view(self): questuser1 = self._get_player(1).get_extension(QuestUser) questuser2 = self._get_player(2).get_extension(QuestUser) category = Category.add('quest') question1 = Question.objects.create(text='question1', answer_type='F', category=category, active=True) answer1 = Answer.objects.create(text='first answer', correct=True, question=question1) self.q.questions.add(question1) questuser1.current_quest = self.q questuser2.current_quest = self.q self.q.check_answer(questuser1, 'first answer') self.q.check_answer(questuser2, 'first answer') c = Client() c.login(username='******', password='******') response = c.get(reverse('quest_history')) # 'testuser1' appears once in overall gods section, # once in quest result table and once because he is logged in self.assertContains(response, '>testuser1<', count=3) # 'testuser2' appears only in overall gods and quest result table self.assertContains(response, '>testuser2<', count=2)
def test_post_challenge(self): # create an active challenge, with fake questions Formula.add('chall-warranty') Formula.add('chall-timer') category = Category.add('challenge') for i in range(Challenge.LIMIT + 1): q = Question.objects.create(text='text %s' % i, category=category, active=True) for j in range(5): Answer.objects.create(correct=j==1, question=q) chall = Challenge.create(user_from=self.challuser2, user_to=self.challuser) chall.accept() response = self.client.get('/api/challenge/{id}/'.format(id=chall.id)) data = json.loads(response.content) self.assertTrue(data) self.assertEqual(data['status'], 'A') self.assertEqual(data['to'], self.challuser.user.username) self.assertEqual(len(data['questions']), Challenge.LIMIT) # attempt post data = {} for q in Question.objects.all(): answers = [] for a in q.correct_answers: answers.append(str(a.id)) data[q.id] = ','.join(answers) response = self.client.post('/api/challenge/{id}/'.format(id=chall.id), data) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertTrue(data['success']) self.assertEqual(data['result']['points'], Challenge.LIMIT * 100)
def test_check_answer(self): cat = Category.add('quest') question = Question.objects.create(text='test_q', answer_type='F', category=cat, active=True) answer1 = Answer.objects.create(text='test_a1', correct=True, question=question) answer2 = Answer.objects.create(text='test_a2', correct=True, question=question) start = datetime.datetime.now() end = datetime.datetime.now() + timedelta(days=1) quest = Quest.objects.create(start=start, end=end) quest.questions.add(question) self.assertEqual(quest.count, 1) self.quest_user.current_quest = quest #self.quest_user.current_level = 0 quest.check_answer(self.quest_user, 'Test_a2') self.assertTrue(self.quest_user.finished)
def setUp(self): super(QuestStatistics, self).setUp() self.user1 = User.objects.create(username='******') self.user1.set_password('test') self.user1.save() self.quest_user1 = self.user1.get_profile().get_extension(QuestUser) self.user2 = User.objects.create(username='******') self.user2.set_password('test') self.user2.save() self.quest_user2 = self.user2.get_profile().get_extension(QuestUser) scoring.setup_scoring() category = Category.add('quest') question1 = Question.objects.create(text='question1', answer_type='F', category=category, active=True) answer1 = Answer.objects.create(text='first answer', correct=True, question=question1) question2 = Question.objects.create(text='question2', answer_type='F', category=category, active=True) answer2 = Answer.objects.create(text='second answer', correct=True, question=question2) start = datetime.datetime.now() end = datetime.datetime.now() + timedelta(days=1) self.quest = Quest.objects.create(start=start, end=end) self.quest.questions.add(question1) self.quest.questions.add(question2)
def setUp(self): super(TestChallengeViews, self).setUp() self.ch_player1 = self._get_player(1) self.ch_player2 = self._get_player(2) race = Race.objects.create(name=u'testrace', can_play=True) self.ch_player1.race = race self.ch_player2.race = race self.ch_player1.points = 100 self.ch_player2.points = 100 self.ch_player1.save() self.ch_player2.save() self.ch_player1 = self.ch_player1.get_extension(ChallengeUser) self.ch_player2 = self.ch_player2.get_extension(ChallengeUser) scoring.setup_scoring() self.category = Category.add('challenge') self.question1 = Question.objects.create(text='question1', answer_type='F', category=self.category, active=True) self.answer1 = Answer.objects.create(text='first answer', correct=True, question=self.question1) self.question2 = Question.objects.create(text='question2', answer_type='F', category=self.category, active=True) self.answer2 = Answer.objects.create(text='second answer', correct=True, question=self.question2) self.ch = Challenge.create(user_from=self.ch_player1, user_to=self.ch_player2, ignore_questions=True) self.ch.questions.add(self.question1) self.ch.questions.add(self.question2) self.c = Client() self.c.login(username='******', password='******')
def test_post_challenge(self): # create an active challenge, with fake questions Formula.add('chall-warranty') Formula.add('chall-timer') category = Category.add('challenge') for i in range(Challenge.LIMIT + 1): q = Question.objects.create(text='text %s' % i, category=category, active=True) for j in range(5): Answer.objects.create(correct=j==1, question=q) chall = Challenge.create(user_from=self.challuser2, user_to=self.challuser) chall.accept() response = self.client.get('/api/challenge/{id}/'.format(id=chall.id)) data = json.loads(response.content) self.assertTrue(data) self.assertEqual(data['status'], 'A') self.assertEqual(data['to'], self.challuser.user.username) self.assertEqual(len(data['questions']), Challenge.LIMIT) # attempt post data = {} for q in Question.objects.all(): answers = [] for a in q.correct_answers: answers.append(str(a.id)) data[q.id] = ','.join(answers) response = self.client.post('/api/challenge/{id}/'.format(id=chall.id), data) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertTrue(data['success']) self.assertEqual(data['result']['points'], Challenge.LIMIT * 100)
def _make_question_for_today(user, text): category = Category(name='qotd') question = Question(text=text, proposed_by=user, category=category, active=1) question.save() for i in range(4): Answer.objects.create(question=question, correct=i == 1, text='a %d' % i) sched = Schedule(question=question) sched.save() return question
def _make_question_for_today(user, text): category = Category(name='qotd') question = Question(text=text, proposed_by=user, category=category, active=1) question.save() sched = Schedule(question=question) sched.save()
def test_check_answer(self): cat = Category.add('quest') question = Question.objects.create(text='test_q', answer_type='F', category=cat, active=True) answer1 = Answer.objects.create(text='test_a1', correct=True, question=question) answer2 = Answer.objects.create(text='test_a2', correct=True, question=question) start = datetime.datetime.now() end = datetime.datetime.now() + timedelta(days=1) quest = Quest.objects.create(start=start, end=end) quest.questions.add(question) self.assertEqual(quest.count, 1) self.quest_user.current_quest = quest #self.quest_user.current_level = 0 quest.check_answer(self.quest_user, 'Test_a2') self.assertTrue(self.quest_user.finished)
def test_check_bonus_for_quest(self): category = Category.add('quest') question1 = Question.objects.create(text='question1', answer_type='F', category=category, active=True) answer1 = Answer.objects.create(text='first answer', correct=True, question=question1) start = datetime.datetime.now() end = datetime.datetime.now() + timedelta(days=1) quest = Quest.objects.create(start=start, end=end) quest.questions.add(question1) self.quest_user.current_quest = quest quest.check_answer(self.quest_user, 'first answer') self.assertEqual(len(quest.top_results()), 1) pl = self.user.get_profile() pl.points = 100 pl.save() admin = User.objects.create_superuser('admin', '*****@*****.**', 'admin') fact = RequestFactory() request = fact.get(reverse('register_results', args=[1])) request.user = admin #get initial points initial_points = pl.points #add quest bonus response = quest_bonus(request, 1) #get final points pl = User.objects.get(pk=1) final_points = pl.get_profile().points self.assertTrue(final_points > initial_points)
def test_history_view(self): questuser1 = self._get_player(1).get_extension(QuestUser) questuser2 = self._get_player(2).get_extension(QuestUser) category = Category.add('quest') question1 = Question.objects.create(text='question1', answer_type='F', category=category, active=True) answer1 = Answer.objects.create(text='first answer', correct=True, question=question1) self.q.questions.add(question1) questuser1.current_quest = self.q questuser2.current_quest = self.q self.q.check_answer(questuser1, 'first answer') self.q.check_answer(questuser2, 'first answer') c = Client() c.login(username='******', password='******') response = c.get(reverse('quest_history')) # 'testuser1' appears once in overall gods section, # once in quest result table and once because he is logged in self.assertContains(response, '>testuser1<', count=3) # 'testuser2' appears only in overall gods and quest result table self.assertContains(response, '>testuser2<', count=2)
def setUp(self): super(QuestStatistics, self).setUp() self.user1 = User.objects.create(username='******') self.user1.set_password('test') self.user1.save() self.quest_user1 = self.user1.get_profile().get_extension(QuestUser) self.user2 = User.objects.create(username='******') self.user2.set_password('test') self.user2.save() self.quest_user2 = self.user2.get_profile().get_extension(QuestUser) scoring.setup_scoring() category = Category.add('quest') question1 = Question.objects.create(text='question1', answer_type='F', category=category, active=True) answer1 = Answer.objects.create(text='first answer', correct=True, question=question1) question2 = Question.objects.create(text='question2', answer_type='F', category=category, active=True) answer2 = Answer.objects.create(text='second answer', correct=True, question=question2) start = datetime.datetime.now() end = datetime.datetime.now() + timedelta(days=1) self.quest = Quest.objects.create(start=start, end=end) self.quest.questions.add(question1) self.quest.questions.add(question2)