Example #1
0
    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='******')
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
 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)
Example #7
0
    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='******')
Example #8
0
    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)
Example #9
0
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
Example #10
0
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()
Example #11
0
    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)
Example #12
0
    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)
Example #13
0
    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)
Example #14
0
 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)