def testCompletedActivity(self): """Tests that approved_action works when a task is completed.""" activity = Activity( type="activity", name="Test", title="Test activity", slug="test-activity", description="Variable points!", expected_duration=10, point_value=10, pub_date=datetime.datetime.today(), expire_date=datetime.datetime.today() + datetime.timedelta(days=7), confirm_type="text", ) activity.save() # Test within context of a quest self.quest.unlock_conditions = "approved_action(action_slug='test-activity')" self.quest.save() quests = get_quests(self.user) self.assertTrue(self.quest not in quests, "User should not be able to participate in this quest.") member = ActionMember(user=self.user, action=activity, approval_status="approved") member.save() self.assertTrue(approved_action(self.user, action_slug="test-activity"), "User should have completed 'Test'.") self.assertTrue(approved_some_of_type(self.user, action_type="activity"), "User should have completed an activity") quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") self.quest.unlock_conditions = "approved_some_of_type(action_type='activity')" self.quest.save() quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") # Test as a completion condition. self.quest.accept(self.user) self.quest.completion_conditions = "not approved_action(action_slug='test-activity')" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "not approved_some_of_type(action_type='activity')" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_action(action_slug='test-activity')" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest in completed_quests, "User should have completed the quest.")
def testType(self): """Tests the predicates related to action_type.""" self.assertFalse(submitted_some_of_type(self.user, action_type='activity', count=1), "submitted_some_of_type(activity,1) should be false") self.assertFalse(submitted_some_of_type(self.user, action_type='commitment', count=1), "submitted_some_of_type(commitment,1) should be false") self.assertFalse(submitted_some_of_type(self.user, action_type='event', count=1), "submitted_some_of_type(event,1) should be false") self.assertFalse(submitted_all_of_type(self.user, action_type='activity'), "submitted_all_of_type(activity) should be false") self.assertFalse(submitted_all_of_type(self.user, action_type='commitment'), "submitted_all_of_type(commitment) should be false") self.assertFalse(submitted_all_of_type(self.user, action_type='event'), "submitted_all_of_type(event) should be false") action_member_activity = ActionMember(user=self.user, action=self.activity) action_member_activity.save() self.assertTrue(submitted_some_of_type(self.user, action_type='activity', count=1), "submitted_some_of_type(activity,1) should be true") self.assertFalse(submitted_some_of_type(self.user, action_type='commitment', count=1), "submitted_some_of_type(commitment,1) should be false") self.assertFalse(submitted_some_of_type(self.user, action_type='event', count=1), "submitted_some_of_type(event,1) should be false") self.assertTrue(submitted_all_of_type(self.user, action_type='activity'), "submitted_all_of_type(activity) should be true") self.assertFalse(submitted_all_of_type(self.user, action_type='commitment'), "submitted_all_of_type(commitment) should be false") self.assertFalse(submitted_all_of_type(self.user, action_type='event'), "submitted_all_of_type(event) should be false") self.assertFalse(approved_some_of_type(self.user, action_type='activity', count=1), "approved_some_of_type(activity,1) should be false") self.assertFalse(approved_all_of_type(self.user, action_type='activity'), "approved_some_of_type(activity) should be false") action_member_activity.approval_status = 'approved' action_member_activity.save() self.assertTrue(approved_some_of_type(self.user, action_type='activity', count=1), "approved_some_of_type(activity,1) should be true") self.assertTrue(approved_all_of_type(self.user, action_type='activity'), "approved_some_of_type(activity) should be true") self.assertFalse(approved_some_of_type(self.user, action_type='event', count=1), "approved_some_of_type(event,1) should be false") self.assertFalse(approved_all_of_type(self.user, action_type='event'), "approved_some_of_type(event) should be false")
def testNumTasksCompletedWithType(self): """test task completed.""" activity = Activity( type="activity", name="Test", slug="test", title="Test activity", description="Variable points!", expected_duration=10, point_value=10, pub_date=datetime.datetime.today(), expire_date=datetime.datetime.today() + datetime.timedelta(days=7), confirm_type="text", ) activity.save() # Test activities member = ActionMember(user=self.user, action=activity, approval_status="pending") member.save() self.assertFalse( approved_some_of_type(self.user, action_type="activity", count=1), "User with pending activity should not have completed a task.") # Test within context of a quest self.quest.unlock_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue( self.quest not in quests, "User should not be able to participate in this quest.") # Check that the user can now add the quest. member.approval_status = "approved" member.save() quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") # Test as a completion condition. self.quest.accept(self.user) self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=2)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest in completed_quests, "User should have completed the quest.")
def testNumTasksCompletedWithType(self): """test task completed.""" activity = Activity( type="activity", name="Test", slug="test", title="Test activity", description="Variable points!", expected_duration=10, point_value=10, pub_date=datetime.datetime.today(), expire_date=datetime.datetime.today() + datetime.timedelta(days=7), confirm_type="text", ) activity.save() # Test activities member = ActionMember(user=self.user, action=activity, approval_status="pending") member.save() self.assertFalse(approved_some_of_type(self.user, action_type="activity", count=1), "User with pending activity should not have completed a task.") # Test within context of a quest self.quest.unlock_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue(self.quest not in quests, "User should not be able to participate in this quest.") # Check that the user can now add the quest. member.approval_status = "approved" member.save() quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") # Test as a completion condition. self.quest.accept(self.user) self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=2)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest in completed_quests, "User should have completed the quest.")
def testNumTasksCompleted(self): """Test that completing an activity works with approved_some_of and has_action.""" # put the grid together. First the ColumnName level = Level(name="Test level", slug="test-level") level.save() column = ColumnName(name="Test column", slug="test-column") column.save() c_grid = ColumnGrid(level=level, column=1, name=column) c_grid.save() # Then the activity activity = Activity( type="activity", name="Test", slug="test", title="Test activity", description="Variable points!", expected_duration=10, point_value=10, pub_date=datetime.datetime.today(), expire_date=datetime.datetime.today() + datetime.timedelta(days=7), confirm_type="text", ) activity.save() grid = Grid(level=level, column=1, row=1, action=activity) grid.save() # Test activities member = ActionMember(user=self.user, action=activity, approval_status="pending") member.save() self.assertFalse( approved_some_of_type(self.user, action_type='activity', count=1), "User with pending activity should not have completed a task.") self.assertFalse( approved_some(self.user, count=1), "User with pending activity should not have completed a task.") # Test within context of a quest self.quest.unlock_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue( self.quest not in quests, "User should not be able to participate in this quest.") self.quest.unlock_conditions = "approved_some(count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue( self.quest not in quests, "User should not be able to participate in this quest.") # Check that the user can now add the quest. member.approval_status = "approved" member.save() quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") self.quest.unlock_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue( self.quest in quests["available_quests"], "User should not be able to participate in this quest.") # Test as a completion condition. self.quest.accept(self.user) self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=2)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_some(count=2)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest in completed_quests, "User should have completed the quest.")
def testCompletedActivity(self): """Tests that approved_action works when a task is completed.""" activity = Activity( type="activity", name="Test", title="Test activity", slug="test-activity", description="Variable points!", expected_duration=10, point_value=10, pub_date=datetime.datetime.today(), expire_date=datetime.datetime.today() + datetime.timedelta(days=7), confirm_type="text", ) activity.save() # Test within context of a quest self.quest.unlock_conditions = "approved_action(action_slug='test-activity')" self.quest.save() quests = get_quests(self.user) self.assertTrue( self.quest not in quests, "User should not be able to participate in this quest.") member = ActionMember(user=self.user, action=activity, approval_status="approved") member.save() self.assertTrue( approved_action(self.user, action_slug="test-activity"), "User should have completed 'Test'.") self.assertTrue( approved_some_of_type(self.user, action_type="activity"), "User should have completed an activity") quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") self.quest.unlock_conditions = "approved_some_of_type(action_type='activity')" self.quest.save() quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") # Test as a completion condition. self.quest.accept(self.user) self.quest.completion_conditions = "not approved_action(action_slug='test-activity')" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "not approved_some_of_type(action_type='activity')" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_action(action_slug='test-activity')" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest in completed_quests, "User should have completed the quest.")
def testType(self): """Tests the predicates related to action_type.""" self.assertFalse( submitted_some_of_type(self.user, action_type='activity', count=1), "submitted_some_of_type(activity,1) should be false") self.assertFalse( submitted_some_of_type(self.user, action_type='commitment', count=1), "submitted_some_of_type(commitment,1) should be false") self.assertFalse( submitted_some_of_type(self.user, action_type='event', count=1), "submitted_some_of_type(event,1) should be false") self.assertFalse( submitted_all_of_type(self.user, action_type='activity'), "submitted_all_of_type(activity) should be false") self.assertFalse( submitted_all_of_type(self.user, action_type='commitment'), "submitted_all_of_type(commitment) should be false") self.assertFalse(submitted_all_of_type(self.user, action_type='event'), "submitted_all_of_type(event) should be false") action_member_activity = ActionMember(user=self.user, action=self.activity) action_member_activity.save() self.assertTrue( submitted_some_of_type(self.user, action_type='activity', count=1), "submitted_some_of_type(activity,1) should be true") self.assertFalse( submitted_some_of_type(self.user, action_type='commitment', count=1), "submitted_some_of_type(commitment,1) should be false") self.assertFalse( submitted_some_of_type(self.user, action_type='event', count=1), "submitted_some_of_type(event,1) should be false") self.assertTrue( submitted_all_of_type(self.user, action_type='activity'), "submitted_all_of_type(activity) should be true") self.assertFalse( submitted_all_of_type(self.user, action_type='commitment'), "submitted_all_of_type(commitment) should be false") self.assertFalse(submitted_all_of_type(self.user, action_type='event'), "submitted_all_of_type(event) should be false") self.assertFalse( approved_some_of_type(self.user, action_type='activity', count=1), "approved_some_of_type(activity,1) should be false") self.assertFalse( approved_all_of_type(self.user, action_type='activity'), "approved_some_of_type(activity) should be false") action_member_activity.approval_status = 'approved' action_member_activity.save() self.assertTrue( approved_some_of_type(self.user, action_type='activity', count=1), "approved_some_of_type(activity,1) should be true") self.assertTrue( approved_all_of_type(self.user, action_type='activity'), "approved_some_of_type(activity) should be true") self.assertFalse( approved_some_of_type(self.user, action_type='event', count=1), "approved_some_of_type(event,1) should be false") self.assertFalse(approved_all_of_type(self.user, action_type='event'), "approved_some_of_type(event) should be false")
def testNumTasksCompleted(self): """Test that completing an activity works with approved_some_of and has_action.""" # put the grid together. First the ColumnName level = Level(name="Test level", slug="test-level") level.save() column = ColumnName(name="Test column", slug="test-column") column.save() c_grid = ColumnGrid(level=level, column=1, name=column) c_grid.save() # Then the activity activity = Activity( type="activity", name="Test", slug="test", title="Test activity", description="Variable points!", expected_duration=10, point_value=10, pub_date=datetime.datetime.today(), expire_date=datetime.datetime.today() + datetime.timedelta(days=7), confirm_type="text", ) activity.save() grid = Grid(level=level, column=1, row=1, action=activity) grid.save() # Test activities member = ActionMember(user=self.user, action=activity, approval_status="pending") member.save() self.assertFalse(approved_some_of_type(self.user, action_type='activity', count=1), "User with pending activity should not have completed a task.") self.assertFalse(approved_some(self.user, count=1), "User with pending activity should not have completed a task.") # Test within context of a quest self.quest.unlock_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue(self.quest not in quests, "User should not be able to participate in this quest.") self.quest.unlock_conditions = "approved_some(count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue(self.quest not in quests, "User should not be able to participate in this quest.") # Check that the user can now add the quest. member.approval_status = "approved" member.save() quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should be able to participate in this quest.") self.quest.unlock_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() quests = get_quests(self.user) self.assertTrue(self.quest in quests["available_quests"], "User should not be able to participate in this quest.") # Test as a completion condition. self.quest.accept(self.user) self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=2)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_some(count=2)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest not in completed_quests, "User should not be able to complete the quest.") self.quest.completion_conditions = "approved_some_of_type(action_type='activity', count=1)" self.quest.save() completed_quests = possibly_completed_quests(self.user) self.assertTrue(self.quest in completed_quests, "User should have completed the quest.")