wouso/interface/activity/tests.py
from datetime import datetime, timedelta
from wouso.core.magic.models import Artifact, Spell, SpellHistory
from wouso.core.magic.manager import MagicManager
from wouso.core.tests import WousoTest
from wouso.core import scoring, signals
from wouso.core.scoring.models import Coin
from wouso.games.qotd.models import QotdGame
from wouso.games.challenge.models import ChallengeGame, ChallengeUser, Challenge
from wouso.interface.apps.messaging.models import Message, MessagingUser
from achievements import consecutive_days_seen, consecutive_qotd_correct, consecutive_chall_won, challenge_count, \
refused_challenges, get_challenge_time, unique_users_pm, wrong_first_qotd, get_chall_score, \
challenges_played_today, check_for_god_mode, spell_count, spent_gold, gold_amount, \
Achievements
from models import Activity
class AchievementTest(WousoTest):
def test_login_with_multiple_seens(self):
"""
Multiple seens every day for more than 14 days in a row.
"""
player = self._get_player()
for i in range(100):
timestamp = datetime.now() - timedelta(hours=i*16)
Activity.objects.create(timestamp=timestamp, user_from=player, action='seen', public=False)
self.assertGreaterEqual(consecutive_days_seen(player, datetime.now()), 14)
def test_login_10(self):
"""
One seen every day for 14 days in a row.
"""
player = self._get_player()
for i in range(14):
timestamp = datetime.now() + timedelta(days=-i)
Activity.objects.create(timestamp=timestamp, user_from=player, action='seen', public=False)
self.assertEqual(consecutive_days_seen(player, datetime.now()), 14)
def test_login_10_less(self):
"""
Multiple seens every day for less than 14 days in a row.
"""
player = self._get_player()
for i in range(20):
timestamp = datetime.now() - timedelta(hours=i*7)
Activity.objects.create(timestamp=timestamp, user_from=player, action='seen', public=False)
self.assertLess(consecutive_days_seen(player, datetime.now()), 14)
def test_login_10_wrong(self):
player = self._get_player()
for i in range(14):
timestamp = datetime.now() + timedelta(days=-i)
if i == 5:
continue
Activity.objects.create(timestamp=timestamp, user_from=player, action='seen', public=False)
self.assertEqual(consecutive_days_seen(player, datetime.now()), 5)
def test_login_10_activity(self):
Artifact.objects.create(group=None, name='ach-login-10')
player = self._get_player()
for i in range(1, 14):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp, user_from=player, action='seen', public=False)
self.client.login(username=player.user.username, password='test')
self.client.get('/hub/')
self.assertTrue(player.magic.has_modifier('ach-login-10'))
def test_early_bird_not(self):
player = self._get_player()
Artifact.objects.create(group=None, name='ach-early-bird')
for i in range(1,2):
Activity.objects.create(timestamp=datetime(2012,9,17,6,0,0),
user_from=player, user_to=player, action='seen', public=False)
for i in range(1,4):
Activity.objects.create(timestamp=datetime(2012,9,17,5,0,0),
user_from=player, user_to=player, action='seen', public=False)
signals.addActivity.send(sender=None, timestamp=datetime(2012,9,17,5,0,0),
user_from=player,
user_to=player,
action='seen',
game=None)
self.assertFalse(player.magic.has_modifier('ach-early-bird'))
def test_early_bird_set(self):
player = self._get_player()
Artifact.objects.create(group=None, name='ach-early-bird')
for i in range(1,4):
Activity.objects.create(timestamp=datetime(2012,9,17,6,0,0),
user_from=player, user_to=player, action='seen', public=False)
signals.addActivity.send(sender=None, timestamp=datetime(2012,9,17,6,0,0),
user_from=player,
user_to=player,
action='seen',
game=None)
self.assertTrue(player.magic.has_modifier('ach-early-bird'))
def test_night_owl_not(self):
player = self._get_player()
Artifact.objects.create(group=None, name='ach-night-owl')
for i in range(1,3):
Activity.objects.create(timestamp=datetime(2012,9,17,6,0,0),
user_from=player, user_to=player, action='seen', public=False)
for i in range(1,4):
Activity.objects.create(timestamp=datetime(2012,9,17,5,0,0),
user_from=player, user_to=player, action='seen', public=False)
signals.addActivity.send(sender=None, timestamp=datetime(2012,9,17,4,0,0),
user_from=player,
user_to=player,
action='seen',
game=None)
self.assertFalse(player.magic.has_modifier('ach-night-owl'))
def test_night_owl_set(self):
player = self._get_player()
Artifact.objects.create(group=None, name='ach-night-owl')
for i in range(1,4):
Activity.objects.create(timestamp=datetime(2012,9,17,4,0,0),
user_from=player, user_to=player, action='seen', public=False)
signals.addActivity.send(sender=None, timestamp=datetime(2012,9,17,4,0,0),
user_from=player,
user_to=player,
action='seen',
game=None)
self.assertTrue(player.magic.has_modifier('ach-night-owl'))
class QotdAchievementTest(WousoTest):
def test_10_qotd_3ok(self):
player = self._get_player()
for i in range(3):
timestamp=datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-correct',message_string=str(i),public=True)
self.assertEqual(consecutive_qotd_correct(player),3)
def test_10_qotd_1wrong(self):
player = self._get_player()
for i in range(10):
timestamp=datetime.now() - timedelta(days=-i)
if i == 5:
a = Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-wrong',message_string=str(i),public=True)
else:
a = Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-correct',message_string=str(i),public=True)
self.assertEqual(consecutive_qotd_correct(player),4)
def test_10_qotd_get_ach(self):
Artifact.objects.create(group=None, name='ach-qotd-10')
player = self._get_player()
for i in range(10):
timestamp=datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-correct',message_string=str(i),public=True)
signals.addActivity.send(sender=None, user_from=player,
user_to=player,
action='qotd-correct',
game=QotdGame.get_instance())
self.assertTrue(player.magic.has_modifier('ach-qotd-10'))
class ChallengeAchievementTest(WousoTest):
def test_chall_10_won(self):
player = self._get_player()
for i in range(1, 11):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-won',
public=True)
self.assertEqual(consecutive_chall_won(player), 10)
def test_chall_10_won_wrong_draw(self):
player = self._get_player()
for i in range(1, 10):
timestamp = datetime.now() + timedelta(days=-i)
if i == 5:
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-draw',
public=True)
else:
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-won',
public=True)
self.assertEqual(consecutive_chall_won(player), 4)
def test_chall_10_won_wrong_lost(self):
player1 = self._get_player()
player2 = self._get_player(2)
for i in range(1, 10):
timestamp = datetime.now() + timedelta(days=-i)
if i == 5:
a = Activity.objects.create(timestamp=timestamp,
user_from=player2, user_to=player1, action='chall-won',
public=True)
else:
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-won',
public=True)
self.assertEqual(consecutive_chall_won(player1), 4)
def test_chall_10_won_activity(self):
Artifact.objects.create(group=None, name='ach-chall-won-10')
player = self._get_player()
for i in range(1, 10):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-won',
public=True)
self.assertFalse(player.magic.has_modifier('ach-chall-won-10'))
signals.addActivity.send(sender=None, user_from=player,
user_to=player,
action='chall-won',
game=ChallengeGame.get_instance())
self.assertTrue(player.magic.has_modifier('ach-chall-won-10'))
def test_chall_30(self):
player = self._get_player()
for i in range(1, 31):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-won',
public=True)
self.assertEqual(challenge_count(player), 30)
def test_chall_100_draw_lost(self):
player1 = self._get_player()
player2 = self._get_player(2)
for i in range(1, 101):
timestamp = datetime.now() + timedelta(days=-i)
if (i % 5) == 0:
a = Activity.objects.create(timestamp=timestamp,
user_from=player2, user_to=player1, action='chall-won',
public=True)
elif (i % 7) == 0:
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-draw',
public=True)
else:
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-won',
public=True)
self.assertEqual(challenge_count(player1), 100)
def test_chall_100_activity(self):
Artifact.objects.create(group=None, name='ach-chall-100')
player = self._get_player()
for i in range(1, 100):
timestamp = datetime.now() + timedelta(days=-i)
if i % 5 == 0:
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-draw',
public=True)
else:
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-won',
public=True)
signals.addActivity.send(sender=None, user_from=player,
user_to=player,
action='chall-won',
game=ChallengeGame.get_instance())
self.assertTrue(player.magic.has_modifier('ach-chall-100'))
def test_defeated_better_player_activity(self):
Artifact.objects.create(group=None, name='ach-chall-def-big')
player1 = self._get_player()
player2 = self._get_player(2)
player2.level_no = 4
player2.save()
for i in range(1,5):
signals.addActivity.send(sender=None, user_from=player1,
user_to=player2,
action='chall-won',
game=ChallengeGame.get_instance())
self.assertFalse(player1.magic.has_modifier('ach-chall-def-big'))
signals.addActivity.send(sender=None, user_from=player1,
user_to=player2,
action='chall-won',
game=ChallengeGame.get_instance())
self.assertTrue(player1.magic.has_modifier('ach-chall-def-big'))
def test_this_is_sparta_correct(self):
player = self._get_player()
for i in range(1, 7):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player, action='chall-refused',
public=True)
self.assertEqual(refused_challenges(player), 6)
def test_this_is_sparta_activity_not_given(self):
Artifact.objects.create(group=None, name='ach-this-is-sparta')
player1 = self._get_player()
player2 = self._get_player(2)
first_seen = datetime.now() + timedelta(days=-10)#10 days since first login
Activity.objects.create(timestamp=first_seen,
user_from=player1, user_to=player1, action='seen',
public=False)
for i in range(1, 7):
timestamp = datetime.now() + timedelta(days=-i)
if (i % 4) == 0:
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-refused',
public=True)
else:
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-lost',
public=True)
#send signal to enable achievement validation
signals.addActivity.send(sender=None, user_from=player1,
user_to=player2,
action='chall-refused',
game=ChallengeGame.get_instance())
#False due to refused challenge
self.assertFalse(player1.magic.has_modifier('ach-this-is-sparta'))
def test_this_is_sparta_activity_not_enough_challenges(self):
Artifact.objects.create(group=None, name='ach-this-is-sparta')
player1 = self._get_player()
player2 = self._get_player(2)
first_seen = datetime.now() + timedelta(days=-10)#10 days since first login
Activity.objects.create(timestamp=first_seen,
user_from=player1, user_to=player1, action='seen',
public=False)
for i in range(1, 3):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-lost',
public=True)
#send signal to enable achievement validation
signals.addActivity.send(sender=None, user_from=player1,
user_to=player2,
action='chall-won',
game=ChallengeGame.get_instance())
#False due to not enough challenges played
self.assertFalse(player1.magic.has_modifier('ach-this-is-sparta'))
def test_this_is_sparta_activity_not_enough_time(self):
Artifact.objects.create(group=None, name='ach-this-is-sparta')
player1 = self._get_player()
player2 = self._get_player(2)
first_seen = datetime.now() + timedelta(days=-6)#only 6 days have passed
Activity.objects.create(timestamp=first_seen,
user_from=player1, user_to=player1, action='seen',
public=False)
for i in range(1, 5):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-lost',
public=True)
#send signal to enable achievement validation
signals.addActivity.send(sender=None, user_from=player1,
user_to=player2,
action='chall-won',
game=ChallengeGame.get_instance())
#achievement condition earned
self.assertFalse(player1.magic.has_modifier('ach-this-is-sparta'))
def test_this_is_sparta_activity_passed(self):
Artifact.objects.create(group=None, name='ach-this-is-sparta')
player1 = self._get_player()
player2 = self._get_player(2)
first_seen = datetime.now() + timedelta(days=-7)#barely enough time
Activity.objects.create(timestamp=first_seen,
user_from=player1, user_to=player1, action='seen',
public=False)
for i in range(1, 5):
timestamp = datetime.now() + timedelta(days=-i)
a = Activity.objects.create(timestamp=timestamp,
user_from=player1, user_to=player2, action='chall-lost',
public=True)
#send signal to enable achievement validation
signals.addActivity.send(sender=None, user_from=player1,
user_to=player2,
action='chall-won',
game=ChallengeGame.get_instance())
#achievement condition earned
self.assertTrue(player1.magic.has_modifier('ach-this-is-sparta'))
def test_challenges_played_today(self):
player = self._get_player()
for i in range(1, 10):
timestamp = datetime.now()
if (i % 4) == 0:
Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player,
action="chall-lost", public=True)
else:
Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player,
action="chall-won", public=True)
self.assertEqual(challenges_played_today(player), 9)
def test_challenges_played_today_activity(self):
player = self._get_player()
Artifact.objects.create(group=None, name='ach-chall-10-a-day')
for i in range(1, 10):
timestamp = datetime.now()
if (i % 4) == 0:
Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player,
action="chall-lost", public=True)
else:
Activity.objects.create(timestamp=timestamp,
user_from=player, user_to=player,
action="chall-won", public=True)
signals.addActivity.send(sender=None, user_from=player,
user_to=player,
action='chall-won',
game=ChallengeGame.get_instance())
self.assertTrue(player.magic.has_modifier('ach-chall-10-a-day'))
class PopularityTest(WousoTest):
def setUp(self):
Message.disable_check()
def tearDown(self):
Message.enable_check()
def test_popularity_5_pm_1(self):
player = self._get_player()
player = player.get_extension(MessagingUser)
for i in range(10):
timestamp=datetime.now() + timedelta(minutes = -1)
a = Message.objects.create(timestamp=timestamp, sender=player,receiver=player,subject = "a",text = "b")
self.assertEqual(unique_users_pm(player,3),1)
def test_popularity_5_pm_2(self):
player = self._get_player()
player=player.get_extension(MessagingUser)
timestamp=datetime.now() + timedelta(minutes = -1)
a = Message.objects.create(timestamp=timestamp, sender=player,receiver=player,subject = "a",text = "b")
a = Message.objects.create(timestamp=timestamp, sender=self._get_player(2).get_extension(MessagingUser),receiver=player,subject = "a",text = "b")
self.assertEqual(unique_users_pm(player,3),2)
def test_popularity_5_pm_3(self):
Artifact.objects.create(group=None, name='ach-popularity')
user_to = self._get_player(100).get_extension(MessagingUser)
for i in range(10):
player = self._get_player(i).get_extension(MessagingUser)
if i <= 3:
timestamp = datetime.now() + timedelta(minutes=-10)
a = Message.objects.create(timestamp=timestamp, sender=player,receiver=user_to,subject = "a",text = "b")
else:
timestamp = datetime.now() + timedelta(minutes=-35)
a = Message.objects.create(timestamp=timestamp, sender=player,receiver=user_to,subject = "a",text = "b")
Message.send(sender=player,receiver=user_to,subject="a",text="b")
self.assertEqual(unique_users_pm(user_to,30),5)
self.assertTrue(user_to.magic.has_modifier('ach-popularity'))
class NotificationsTest(WousoTest):
def test_ach_notification(self):
player = self._get_player()
Artifact.objects.create(group=None, name='ach-notfication')
Achievements.earn_achievement(player, 'ach-notfication')
self.assertEqual(len(Message.objects.all()), 1)
class FlawlessVictoryTest(WousoTest):
def setUp(self):
super(FlawlessVictoryTest, self).setUp()
self.user_from = self._get_player(1)
self.user_to = self._get_player(2)
self.chall_user1 = self.user_from.get_extension(ChallengeUser)
self.chall_user2 = self.user_to.get_extension(ChallengeUser)
scoring.setup_scoring()
self.chall = Challenge.create(user_from=self.chall_user1, user_to=self.chall_user2, ignore_questions=True)
def test_scorring(self):
self.chall.user_from.score = 100
self.chall.user_from.save()
self.chall.user_to.score = 200
self.chall.user_to.save()
self.assertEqual(get_chall_score(dict(id=self.chall.id)),200)
self.chall.user_from.score = 300
self.chall.user_from.save()
self.assertEqual(get_chall_score(dict(id=self.chall.id)),300)
self.chall.user_to.score = 500
self.chall.user_to.save()
self.assertEqual(get_chall_score(dict(id=self.chall.id)),500)
def test_ach_fake(self):
Artifact.objects.create(group=None, name='ach-flawless-victory')
player=self._get_player()
self.chall.user_from.score = 100
self.chall.user_from.save()
self.chall.user_to.score = 200
self.chall.user_to.save()
signals.addActivity.send(sender=None, user_from=player, user_to=player, arguments=dict(id=self.chall.id), action="chall-won", game=None)
self.assertTrue(not player.magic.has_modifier('ach-flawless-victory'))
self.chall.user_from.score = 500
self.chall.user_from.save()
signals.addActivity.send(sender=None, user_from=player, user_to=player, arguments=dict(id=self.chall.id), action="chall-won", game=None)
self.assertTrue(player.magic.has_modifier('ach-flawless-victory'))
def test_ach_real(self):
Artifact.objects.create(group=None, name='ach-flawless-victory')
self.chall.user_from.score = 500
self.chall.user_from.save()
self.chall.user_to.score = 200
self.chall.user_to.save()
self.assertFalse(self.user_from.magic.has_modifier('ach-flawless-victory'))
self.chall.played()
self.assertTrue(self.user_from.magic.has_modifier('ach-flawless-victory'))
class WinFastTest(WousoTest):
def setUp(self):
super(WinFastTest, self).setUp()
user_from = self._get_player(1)
user_to = self._get_player(2)
chall_user1 = user_from.get_extension(ChallengeUser)
chall_user2 = user_to.get_extension(ChallengeUser)
scoring.setup_scoring()
self.chall = Challenge.create(user_from=chall_user1, user_to=chall_user2, ignore_questions=True)
def test_get_time(self):
self.chall.user_from.seconds_took = 30
self.chall.user_from.score = 500
self.chall.user_from.save()
self.chall.user_to.seconds_took = 80
self.chall.user_to.score = 0
self.chall.user_to.save()
self.chall.winner = self.chall.user_from.user
self.chall.save()
self.assertEqual(get_challenge_time(dict(id=self.chall.id)), 30)
self.chall.user_from.seconds_took = 180
self.chall.user_from.save()
self.chall.user_to.seconds_took = 20
self.chall.user_to.save()
self.assertEqual(get_challenge_time(dict(id=self.chall.id)), 180)
def test_ach(self):
Artifact.objects.create(group=None, name='ach-win-fast')
player = self._get_player()
self.chall.user_from.seconds_took = 30
self.chall.user_from.score = 400
self.chall.user_from.save()
self.chall.user_to.seconds_took = 80
self.chall.user_to.score = 300
self.chall.user_to.save()
self.chall.winner = self.chall.user_from.user
self.chall.save()
signals.addActivity.send(sender=None, user_from=player,
user_to=player,
arguments=dict(id=self.chall.id),
action="chall-won",
game = ChallengeGame.get_instance())
self.assertTrue(player.magic.has_modifier('ach-win-fast'))
class SpellAchievement(WousoTest):
def test_spell_count(self):
player = self._get_player()
spell = Spell.objects.create(name="test", title="", description="",
image=None, percents=100, type='s')
player.magic.add_spell(spell)
player.magic.cast_spell(spell, player, datetime.now() + timedelta(days=3))
self.assertTrue(player.magic.is_spelled)
self.assertTrue(spell_count(player), 1)
def test_spell_count_activity(self):
Artifact.objects.create(group=None, name='ach-spell-5')
player = self._get_player()
for i in range(1, 6):
name = "test" + str(i)
spell = Spell.objects.create(name=name, title="", description="",
image=None, percents=100)
player.magic.add_spell(spell)
player.magic.cast_spell(spell, player, datetime.now() + timedelta(days=i))
signals.addActivity.send(sender=None, user_from=player,
user_to=player, action="cast", game=None)
self.assertTrue(player.magic.has_modifier('ach-spell-5'))
def test_gold_spent(self):
player = self._get_player()
spell = Spell.objects.create(name="test", title="", description="",
image=None, percents=100, type='s',
price=25)
SpellHistory.objects.create(type='b', user_from=player, user_to=player,
date=datetime.now(), spell=spell)
self.assertTrue(spent_gold(player), 25)
def test_gold_spent_activity(self):
Artifact.objects.create(group=None, name='ach-spent-gold')
player = self._get_player()
spell = Spell.objects.create(name="test", title="", description="",
image=None, percents=100, type='s',
price=600)
SpellHistory.objects.create(type='b', user_from=player, user_to=player,
date=datetime.now(), spell=spell)
signals.addActivity.send(sender=None, user_from=player,
user_to=player, action='spell-buy',
game=None)
self.assertTrue(player.magic.has_modifier('ach-spent-gold'))
def test_used_all_spells_activity(self):
Artifact.objects.create(group=None, name='ach-use-all-spells')
player = self._get_player()
spell = Spell.objects.create(name="test", title="", description="",
image=None, percents=100, type='s',
price=600)
SpellHistory.objects.create(type='u', user_from=player, user_to=player,
date=datetime.now(), spell=spell)
signals.addActivity.send(sender=None, user_from=player,
user_to=player, action='cast',
game=None)
self.assertTrue(player.magic.has_modifier('ach-use-all-spells'))
def test_used_all_mass_spells_activity(self):
Artifact.objects.create(group=None, name='ach-use-all-mass')
player = self._get_player()
spell = Spell.objects.create(name="test", title="", description="",
image=None, percents=100, type='s',
price=600, mass=True)
SpellHistory.objects.create(type='u', user_from=player, user_to=player,
date=datetime.now(), spell=spell)
signals.addActivity.send(sender=None, user_from=player,
user_to=player, action='cast',
game=None)
self.assertTrue(player.magic.has_modifier('ach-use-all-mass'))
class LevelUpTest(WousoTest):
def test_level_ach(self):
Artifact.objects.create(group=None, name='ach-level-5')
Artifact.objects.create(group=None, name='ach-level-10')
coin = Coin.add('gold')
player = self._get_player()
player.level_no = 5
player.save()
signals.addActivity.send(sender=None, user_from=player,
user_to=player, action='gold-won',
game=None)
self.assertTrue(player.magic.has_modifier('ach-level-5'))
player.level_no = 10
player.save()
signals.addActivity.send(sender=None, user_from=player,
user_to=player, action='gold-won',
game=None)
self.assertTrue(player.magic.has_modifier('ach-level-10'))
class GoldTest(WousoTest):
def test_gold_amount(self):
player = self._get_player()
coin = Coin.add('gold')
scoring.score_simple(player, coin, amount=100)
self.assertEqual(gold_amount(player), 100)
def test_gold_amount_ach(self):
Artifact.objects.create(group=None, name='ach-gold-300')
player = self._get_player()
coin = Coin.add('gold')
scoring.score_simple(player, coin, amount=500)
signals.addActivity.send(sender=None, user_from=player,
user_to=player, action='gold-won',
game=None)
self.assertTrue(player.magic.has_modifier('ach-gold-300'))
class GodModeTest(WousoTest):
def test_check_for_god_mode1(self):
player=self._get_player()
timestamp=datetime.now()
for i in range(5):
timestamp -= timedelta(days=1)
Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-correct')
self.assertTrue(check_for_god_mode(player,5,0))
def test_check_for_god_mode2(self):
player=self._get_player()
timestamp=datetime.now()
for i in range(5):
timestamp -= timedelta(days=1)
if i == 3:
Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-wrong')
continue
Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-correct')
self.assertFalse(check_for_god_mode(player,5,0))
def test_check_for_god_mode3(self):
player = self._get_player()
player2 = self._get_player(1)
timestamp = datetime.now()
for i in range(5):
timestamp -= timedelta(days=1)
Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player2, action='chall-won')
Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='qotd-correct')
self.assertTrue(check_for_god_mode(player,5,5))
Artifact.objects.create(group=None, name='ach-god-mode-on')
signals.addActivity.send(sender=None, user_from=player,
user_to=player,
action='seen',
game=None)
self.assertTrue(player.magic.has_modifier('ach-god-mode-on'))
def test_check_for_god_mode4(self):
player = self._get_player()
player2 = self._get_player(1)
timestamp = datetime.now()
for i in range(5):
timestamp -= timedelta(days=1)
Activity.objects.create(timestamp=timestamp, user_from=player, user_to=player, action='chall-correct')
if i == 3:
Activity.objects.create(timestamp=timestamp, user_from=player2, user_to=player, action='chall-won')
continue
self.assertFalse(check_for_god_mode(player,5,0))