update achieve tests

This commit is contained in:
Cal 2024-03-29 17:02:54 -06:00
parent 30151b7e1f
commit 758ffb80c8

View file

@ -34,15 +34,10 @@ _dummy_achievements = {
} }
def _dummy_achieve_loader():
"""returns predefined achievement data for testing instead of loading"""
return _dummy_achievements
class TestAchievements(BaseEvenniaTest): class TestAchievements(BaseEvenniaTest):
@patch( @patch(
"evennia.contrib.game_systems.achievements.achievements._load_achievements", "evennia.contrib.game_systems.achievements.achievements._ACHIEVEMENT_DATA",
_dummy_achieve_loader, _dummy_achievements,
) )
def test_completion(self): def test_completion(self):
"""no defined count means a single match completes it""" """no defined count means a single match completes it"""
@ -52,8 +47,8 @@ class TestAchievements(BaseEvenniaTest):
) )
@patch( @patch(
"evennia.contrib.game_systems.achievements.achievements._load_achievements", "evennia.contrib.game_systems.achievements.achievements._ACHIEVEMENT_DATA",
_dummy_achieve_loader, _dummy_achievements,
) )
def test_counter_progress(self): def test_counter_progress(self):
"""progressing a counter should update the achiever""" """progressing a counter should update the achiever"""
@ -66,19 +61,19 @@ class TestAchievements(BaseEvenniaTest):
achievements.track_achievements(self.char1, "get", "thing") achievements.track_achievements(self.char1, "get", "thing")
self.assertEqual(self.char1.db.achievements["COUNTING_ACHIEVE"]["progress"], 2) self.assertEqual(self.char1.db.achievements["COUNTING_ACHIEVE"]["progress"], 2)
# also verify that `get_progress` returns the correct data # also verify that `get_achievement_progress` returns the correct data
self.assertEqual(achievements.get_progress(self.char1, "COUNTING_ACHIEVE"), {"progress": 2}) self.assertEqual(achievements.get_achievement_progress(self.char1, "COUNTING_ACHIEVE"), {"progress": 2})
@patch( @patch(
"evennia.contrib.game_systems.achievements.achievements._load_achievements", "evennia.contrib.game_systems.achievements.achievements._ACHIEVEMENT_DATA",
_dummy_achieve_loader, _dummy_achievements,
) )
def test_prereqs(self): def test_prereqs(self):
"""verify progress is not counted on achievements with unmet prerequisites""" """verify progress is not counted on achievements with unmet prerequisites"""
achievements.track_achievements(self.char1, "get", "thing") achievements.track_achievements(self.char1, "get", "thing")
# this should mark progress on COUNTING_ACHIEVE, but NOT on COUNTING_TWO # this should mark progress on COUNTING_ACHIEVE, but NOT on COUNTING_TWO
self.assertEqual(achievements.get_progress(self.char1, "COUNTING_ACHIEVE"), {"progress": 1}) self.assertEqual(achievements.get_achievement_progress(self.char1, "COUNTING_ACHIEVE"), {"progress": 1})
self.assertEqual(achievements.get_progress(self.char1, "COUNTING_TWO"), {}) self.assertEqual(achievements.get_achievement_progress(self.char1, "COUNTING_TWO"), {})
# now we complete COUNTING_ACHIEVE... # now we complete COUNTING_ACHIEVE...
self.assertIn( self.assertIn(
@ -86,21 +81,21 @@ class TestAchievements(BaseEvenniaTest):
) )
# and track again to progress COUNTING_TWO # and track again to progress COUNTING_TWO
achievements.track_achievements(self.char1, "get", "thing") achievements.track_achievements(self.char1, "get", "thing")
self.assertEqual(achievements.get_progress(self.char1, "COUNTING_TWO"), {"progress": 1}) self.assertEqual(achievements.get_achievement_progress(self.char1, "COUNTING_TWO"), {"progress": 1})
@patch( @patch(
"evennia.contrib.game_systems.achievements.achievements._load_achievements", "evennia.contrib.game_systems.achievements.achievements._ACHIEVEMENT_DATA",
_dummy_achieve_loader, _dummy_achievements,
) )
def test_separate_tracking(self): def test_separate_tracking(self):
"""achievements with 'tracking_type': 'separate' should count progress for each item""" """achievements with 'tracking_type': 'separate' should count progress for each item"""
# getting one item only increments that one item # getting one item only increments that one item
achievements.track_achievements(self.char1, "get", "apple") achievements.track_achievements(self.char1, "get", "apple")
progress = achievements.get_progress(self.char1, "SEPARATE_ITEMS") progress = achievements.get_achievement_progress(self.char1, "SEPARATE_ITEMS")
self.assertEqual(progress["progress"], [1, 0]) self.assertEqual(progress["progress"], [1, 0])
# the other item then increments that item # the other item then increments that item
achievements.track_achievements(self.char1, "get", "pear") achievements.track_achievements(self.char1, "get", "pear")
progress = achievements.get_progress(self.char1, "SEPARATE_ITEMS") progress = achievements.get_achievement_progress(self.char1, "SEPARATE_ITEMS")
self.assertEqual(progress["progress"], [1, 1]) self.assertEqual(progress["progress"], [1, 1])
# completing one does not complete the achievement # completing one does not complete the achievement
self.assertEqual( self.assertEqual(
@ -112,8 +107,8 @@ class TestAchievements(BaseEvenniaTest):
) )
@patch( @patch(
"evennia.contrib.game_systems.achievements.achievements._load_achievements", "evennia.contrib.game_systems.achievements.achievements._ACHIEVEMENT_DATA",
_dummy_achieve_loader, _dummy_achievements,
) )
def test_search_achievement(self): def test_search_achievement(self):
"""searching for achievements by name""" """searching for achievements by name"""
@ -123,8 +118,8 @@ class TestAchievements(BaseEvenniaTest):
class TestAchieveCommand(BaseEvenniaCommandTest): class TestAchieveCommand(BaseEvenniaCommandTest):
@patch( @patch(
"evennia.contrib.game_systems.achievements.achievements._load_achievements", "evennia.contrib.game_systems.achievements.achievements._ACHIEVEMENT_DATA",
_dummy_achieve_loader, _dummy_achievements,
) )
def test_switches(self): def test_switches(self):
# print only achievements that have no prereqs # print only achievements that have no prereqs
@ -158,8 +153,8 @@ class TestAchieveCommand(BaseEvenniaCommandTest):
) )
@patch( @patch(
"evennia.contrib.game_systems.achievements.achievements._load_achievements", "evennia.contrib.game_systems.achievements.achievements._ACHIEVEMENT_DATA",
_dummy_achieve_loader, _dummy_achievements,
) )
def test_search(self): def test_search(self):
# by default, only returns matching items that are trackable # by default, only returns matching items that are trackable