コード例 #1
0
ファイル: tests.py プロジェクト: hcxiong/wouso
    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)
コード例 #2
0
ファイル: tests.py プロジェクト: ovidiugiorgi/wouso
    def test_paralyze(self):
        """
         Test if Paralyze spell works
        """
        Formula.add('chall-warranty')

        player = self._get_player()
        chall_user = player.get_extension(ChallengeUser)

        # Check if player can launch before spell is cast
        self.assertTrue(chall_user.can_launch())

        # Create and add spell to user
        paralyze = Spell.objects.create(name='challenge-cannot-challenge',
                                        available=True,
                                        price=10,
                                        percents=100,
                                        type='n')
        obs = PlayerSpellDue.objects.create(player=chall_user,
                                            source=chall_user,
                                            spell=paralyze,
                                            due=datetime.now() +
                                            timedelta(days=1))

        # Check if player has the modifier
        self.assertTrue(
            chall_user.magic.has_modifier('challenge-cannot-challenge'))

        # Player should not be able to launch challenge with Paralyze on
        self.assertFalse(chall_user.can_launch())
コード例 #3
0
ファイル: tests.py プロジェクト: ArmandNM/wouso
    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)
コード例 #4
0
ファイル: tests.py プロジェクト: hcxiong/wouso
    def test_get_challenge(self):
        # create an active challenge
        Formula.add('chall-warranty')
        Formula.add('chall-timer')
        chall = Challenge.create(user_from=self.challuser2, user_to=self.challuser, ignore_questions=True)
        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)
コード例 #5
0
ファイル: tests.py プロジェクト: ArmandNM/wouso
    def test_get_challenge(self):
        # create an active challenge
        Formula.add('chall-warranty')
        Formula.add('chall-timer')
        chall = Challenge.create(user_from=self.challuser2, user_to=self.challuser, ignore_questions=True)
        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)
コード例 #6
0
ファイル: tests.py プロジェクト: ArmandNM/wouso
    def test_list_active(self):
        response = self.client.get('/api/challenge/list/')

        self.assertEqual(response.status_code, 200)

        data = json.loads(response.content)
        self.assertFalse(data)

        # create an active challenge
        Formula.add('chall-warranty')
        chall = Challenge.create(user_from=self.challuser2, user_to=self.challuser, ignore_questions=True)
        response = self.client.get('/api/challenge/list/')
        data = json.loads(response.content)

        self.assertTrue(data)
        data = data[0]
        self.assertEqual(data['id'], chall.id)
コード例 #7
0
ファイル: tests.py プロジェクト: hcxiong/wouso
    def test_list_active(self):
        response = self.client.get('/api/challenge/list/')

        self.assertEqual(response.status_code, 200)

        data = json.loads(response.content)
        self.assertFalse(data)

        # create an active challenge
        Formula.add('chall-warranty')
        chall = Challenge.create(user_from=self.challuser2, user_to=self.challuser, ignore_questions=True)
        response = self.client.get('/api/challenge/list/')
        data = json.loads(response.content)

        self.assertTrue(data)
        data = data[0]
        self.assertEqual(data['id'], chall.id)
コード例 #8
0
ファイル: tests.py プロジェクト: ArmandNM/wouso
    def test_buy_spell(self):
         Coin.add('gold')
         Formula.add('buy-spell', expression="gold=-{price}")
         spell = Spell.objects.create(name='test-spell', available=True, price=10)
         player = User.objects.create_user('test', '*****@*****.**', password='******').get_profile()

         scoring.score_simple(player, 'gold', 100)
         self.assertEqual(player.coins['gold'], 100)

         response = self.client.get(reverse('bazaar_home'))
         self.assertTrue('test-spell' in response.content)

         self.client.login(username='******', password='******')
         response = self.client.get(reverse('bazaar_buy', kwargs={'spell': spell.id}))
         self.assertFalse('error' in response.content)

         player = Player.objects.get(user__username='******')
         self.assertEqual(player.coins['gold'], 90)
コード例 #9
0
    def test_buy_spell(self):
        Coin.add('gold')
        Formula.add('buy-spell', expression="gold=-{price}")
        spell = Spell.objects.create(name='test-spell', available=True, price=10)
        player = User.objects.create_user('test', '*****@*****.**', password='******').get_profile()

        scoring.score_simple(player, 'gold', 100)
        self.assertEqual(player.coins['gold'], 100)

        # TODO: interface test should not be here
        response = self.client.get(reverse('bazaar_home'))
        self.assertTrue('test-spell' in response.content)

        self.client.login(username='******', password='******')
        response = self.client.get(reverse('bazaar_buy', kwargs={'spell': spell.id}))
        self.assertFalse('error' in response.content)

        player = Player.objects.get(user__username='******')
        self.assertEqual(player.coins['gold'], 90)
コード例 #10
0
ファイル: tests.py プロジェクト: tiriplicamihai/wouso
    def test_buy_spell(self):
        Coin.add("gold")
        Formula.add("buy-spell", definition="gold=-{price}")
        spell = Spell.objects.create(name="test-spell", available=True, price=10)
        player = User.objects.create_user("test", "*****@*****.**", password="******").get_profile()

        scoring.score_simple(player, "gold", 100)
        self.assertEqual(player.coins["gold"], 100)

        # TODO: interface test should not be here
        response = self.client.get(reverse("bazaar_home"))
        self.assertTrue("test-spell" in response.content)

        self.client.login(username="******", password="******")
        response = self.client.get(reverse("bazaar_buy", kwargs={"spell": spell.id}))
        self.assertFalse("error" in response.content)

        player = Player.objects.get(user__username="******")
        self.assertEqual(player.coins["gold"], 90)
コード例 #11
0
ファイル: sm.py プロジェクト: LucianU/wouso
def setup():
    """ Prepare database for Scoring """
    for cc in CORE_POINTS:
        if not Coin.get(cc):
            Coin.add(cc, name=cc)
    # special case, gold is integer
    gold = Coin.get('gold')
    gold.integer = True
    gold.save()

    # iterate through games and register formulas
    for game in get_games():
        for formula in game.get_formulas():
            if not Formula.get(formula.id):
                Formula.add(formula)
    # add wouso formulas
    for formula in God.get_system_formulas():
        if not Formula.get(formula.id):
            Formula.add(formula)
コード例 #12
0
def setup():
    """ Prepare database for Scoring """
    for cc in CORE_POINTS:
        if not Coin.get(cc):
            Coin.add(cc, name=cc)
    # special case, gold is integer
    gold = Coin.get('gold')
    gold.integer = True
    gold.save()

    # iterate through games and register formulas
    for game in get_games():
        for formula in game.get_formulas():
            if not Formula.get(formula.id):
                Formula.add(formula)
    # add wouso formulas
    for formula in God.get_system_formulas():
        if not Formula.get(formula.id):
            Formula.add(formula)
コード例 #13
0
ファイル: tests.py プロジェクト: ArmandNM/wouso
    def test_variable_timer(self):
        formula = Formula.add('chall-timer')
        formula.expression = 'tlimit=10'
        formula.save()

        self.assertEqual(scoring.timer(self.chall_user, ChallengeGame, 'chall-timer', level=self.chall_user.level_no), 10)

        formula.expression = 'tlimit={level}'
        formula.save()

        self.assertEqual(scoring.timer(self.chall_user, ChallengeGame, 'chall-timer', level=self.chall_user.level_no), self.chall_user.level_no)
コード例 #14
0
ファイル: tests.py プロジェクト: hcxiong/wouso
    def test_variable_timer(self):
        formula = Formula.add('chall-timer')
        formula.expression = 'tlimit=10'
        formula.save()

        self.assertEqual(scoring.timer(self.chall_user, ChallengeGame, 'chall-timer', level=self.chall_user.level_no), 10)

        formula.expression = 'tlimit={level}'
        formula.save()

        self.assertEqual(scoring.timer(self.chall_user, ChallengeGame, 'chall-timer', level=self.chall_user.level_no), self.chall_user.level_no)
コード例 #15
0
ファイル: tests.py プロジェクト: Sendroiu/wouso
    def test_paralyze(self):
        """
         Test if Paralyze spell works
        """
        Formula.add('chall-warranty')

        player = self._get_player()
        chall_user = player.get_extension(ChallengeUser)

        # Check if player can launch before spell is cast
        self.assertTrue(chall_user.can_launch())

        # Create and add spell to user
        paralyze = Spell.objects.create(name='challenge-cannot-challenge', available=True, price=10, percents=100, type='n')
        obs = PlayerSpellDue.objects.create(player=chall_user, source=chall_user, spell=paralyze, due=datetime.now() + timedelta(days=1))

        # Check if player has the modifier
        self.assertTrue(chall_user.magic.has_modifier('challenge-cannot-challenge'))

        # Player should not be able to launch challenge with Paralyze on
        self.assertFalse(chall_user.can_launch())
コード例 #16
0
ファイル: tests.py プロジェクト: TomyRO/wouso
    def test_first_login_points(self):
        f = Formula.add('start-points', formula='points=10')
        Coin.add('points')
        player = self._get_player()

        self.assertEqual(player.points, 0)

        # this won't work, since the activity is sent in our custom view
        #self.client.login(username=player.user.username, password='******')
        # using this instead
        signals.addActivity.send(sender=None, user_from=player, action="login", game = None, public=False)

        player = Player.objects.get(pk=player.pk)
        self.assertEqual(player.points, 10)
コード例 #17
0
ファイル: tests.py プロジェクト: vladeugeniu/wouso
    def test_bazaar_buy_ok(self):
        spell = Spell.objects.create(price=0)
        f = Formula.add('buy-spell')
        f.expression = 'points=0'
        f.save()
        Coin.add('points')

        response = self.client.post('/api/bazaar/buy/', {'spell': spell.id})

        self.assertEqual(response.status_code, 200)
        data = json.loads(response.content)

        self.assertTrue(data)
        self.assertTrue(data['success'])

        player = self.user.get_profile()

        self.assertTrue(spell in [s.spell for s in player.magic.spells_available])
コード例 #18
0
    def test_first_login_points(self):
        f = Formula.add('start-points', formula='points=10')
        Coin.add('points')
        player = self._get_player()

        self.assertEqual(player.points, 0)

        # this won't work, since the activity is sent in our custom view
        #self.client.login(username=player.user.username, password='******')
        # using this instead
        signals.addActivity.send(sender=None,
                                 user_from=player,
                                 action="login",
                                 game=None,
                                 public=False)

        player = Player.objects.get(pk=player.pk)
        self.assertEqual(player.points, 10)