def test_last_exp_edit_time_gets_updated(self): exp_services.update_exploration(self.editor_id, self.EXP_ID, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'the objective' }], 'Test edit') # Decrease last exploration edited time by 13 hours. user_settings = user_services.get_user_settings(self.editor_id) user_settings.last_edited_an_exploration = ( user_settings.last_edited_an_exploration - datetime.timedelta(hours=13)) user_services._save_user_settings(user_settings) # pylint: disable=protected-access editor_settings = user_services.get_user_settings(self.editor_id) previous_last_edited_an_exploration = ( editor_settings.last_edited_an_exploration) self.assertIsNotNone(previous_last_edited_an_exploration) # The editor edits the exploration 13 hours after it was created. exp_services.update_exploration(self.editor_id, self.EXP_ID, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'new objective' }], 'Test edit 2') # Make sure last exploration edited time gets updated. editor_settings = user_services.get_user_settings(self.editor_id) self.assertGreater( (editor_settings.last_edited_an_exploration), previous_last_edited_an_exploration)
def test_last_exp_edit_time_gets_updated(self): self.save_new_valid_exploration(self.EXP_ID_A, self.owner_id, end_state_name='End') # Decrease last exploration created time by 13 hours. user_settings = user_services.get_user_settings(self.owner_id) user_settings.last_created_an_exploration = ( user_settings.last_created_an_exploration - datetime.timedelta(hours=13)) user_services._save_user_settings(user_settings) # pylint: disable=protected-access owner_settings = user_services.get_user_settings(self.owner_id) previous_last_created_an_exploration = ( owner_settings.last_created_an_exploration) self.assertIsNotNone(previous_last_created_an_exploration) # The creator creates another exploration 13 hours later. self.save_new_valid_exploration(self.EXP_ID_B, self.owner_id, end_state_name='End') # Make sure that last exploration created time gets updated. owner_settings = user_services.get_user_settings(self.owner_id) self.assertGreater((owner_settings.last_created_an_exploration), previous_last_created_an_exploration)
def test_that_last_edited_time_is_updated(self): self.login(self.OWNER_EMAIL) self.save_new_valid_exploration( self.exp_id, self.owner_id, end_state_name='End') self.logout() self.login(self.EDITOR_EMAIL) exp_services.update_exploration(self.editor_id, self.exp_id, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'the objective' }], 'Test edit') self.logout() user_settings = user_services.get_user_settings(self.editor_id) user_settings.last_edited_an_exploration = None user_services._save_user_settings(user_settings) # pylint: disable=protected-access editor_settings = user_services.get_user_settings(self.editor_id) self.assertIsNone(editor_settings.last_created_an_exploration) self.assertIsNone(editor_settings.last_edited_an_exploration) self._run_one_off_job() editor_settings = user_services.get_user_settings(self.editor_id) self.assertIsNotNone(editor_settings.last_edited_an_exploration) self.assertIsNone(editor_settings.last_created_an_exploration)
def test_last_exp_edit_time_gets_updated(self): exp_services.update_exploration(self.editor_id, self.EXP_ID, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'the objective' }], 'Test edit') # Decrease last exploration edited time by 13 hours. user_settings = user_services.get_user_settings(self.editor_id) user_settings.last_edited_an_exploration = ( user_settings.last_edited_an_exploration - datetime.timedelta(hours=13)) user_services._save_user_settings(user_settings) # pylint: disable=protected-access editor_settings = user_services.get_user_settings(self.editor_id) previous_last_edited_an_exploration = ( editor_settings.last_edited_an_exploration) self.assertIsNotNone(previous_last_edited_an_exploration) # The editor edits the exploration 13 hours after it was created. exp_services.update_exploration(self.editor_id, self.EXP_ID, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'new objective' }], 'Test edit 2') # Make sure last exploration edited time gets updated. editor_settings = user_services.get_user_settings(self.editor_id) self.assertGreater((editor_settings.last_edited_an_exploration), previous_last_edited_an_exploration)
def test_last_exp_edit_time_gets_updated(self): self.save_new_valid_exploration( self.EXP_ID_A, self.owner_id, end_state_name='End') # Decrease last exploration created time by 13 hours. user_settings = user_services.get_user_settings(self.owner_id) user_settings.last_created_an_exploration = ( user_settings.last_created_an_exploration - datetime.timedelta(hours=13)) user_services._save_user_settings(user_settings) # pylint: disable=protected-access owner_settings = user_services.get_user_settings(self.owner_id) previous_last_created_an_exploration = ( owner_settings.last_created_an_exploration) self.assertIsNotNone(previous_last_created_an_exploration) # The creator creates another exploration 13 hours later. self.save_new_valid_exploration( self.EXP_ID_B, self.owner_id, end_state_name='End') # Make sure that last exploration created time gets updated. owner_settings = user_services.get_user_settings(self.owner_id) self.assertGreater( (owner_settings.last_created_an_exploration), previous_last_created_an_exploration)
def setUp(self): super(UserQueryJobOneOffTests, self).setUp() # User A has no created or edited explorations # User B has one created exploration # User C has one edited exploration # User D has created an exploration and then edited it. # User E has created an exploration 10 days before. # Submitter is the user who submits the query. self.signup(self.USER_A_EMAIL, self.USER_A_USERNAME) self.user_a_id = self.get_user_id_from_email(self.USER_A_EMAIL) self.signup(self.USER_B_EMAIL, self.USER_B_USERNAME) self.user_b_id = self.get_user_id_from_email(self.USER_B_EMAIL) self.signup(self.USER_C_EMAIL, self.USER_C_USERNAME) self.user_c_id = self.get_user_id_from_email(self.USER_C_EMAIL) self.signup(self.USER_D_EMAIL, self.USER_D_USERNAME) self.user_d_id = self.get_user_id_from_email(self.USER_D_EMAIL) self.signup(self.USER_E_EMAIL, self.USER_E_USERNAME) self.user_e_id = self.get_user_id_from_email(self.USER_E_EMAIL) self.signup(self.USER_SUBMITTER_EMAIL, self.USER_SUBMITTER_USERNAME) self.submitter_id = self.get_user_id_from_email( self.USER_SUBMITTER_EMAIL) self.save_new_valid_exploration( self.EXP_ID_1, self.user_b_id, end_state_name='End') exp_services.update_exploration(self.user_c_id, self.EXP_ID_1, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'the objective' }], 'Test edit') self.save_new_valid_exploration( self.EXP_ID_2, self.user_d_id, end_state_name='End') exp_services.update_exploration(self.user_d_id, self.EXP_ID_2, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'the objective' }], 'Test edit') self.save_new_valid_exploration( self.EXP_ID_3, self.user_e_id, end_state_name='End') user_e_settings = user_services.get_user_settings(self.user_e_id) user_e_settings.last_created_an_exploration = ( user_e_settings.last_created_an_exploration - datetime.timedelta(days=10)) # Last edited time also changes when user creates an explorationan. user_e_settings.last_edited_an_exploration = ( datetime.datetime.utcnow() - datetime.timedelta(days=10)) user_e_settings.last_logged_in = ( user_e_settings.last_logged_in - datetime.timedelta(days=10)) user_services._save_user_settings(user_e_settings) # pylint: disable=protected-access user_a_settings = user_services.get_user_settings(self.user_a_id) user_a_settings.last_logged_in = ( user_a_settings.last_logged_in - datetime.timedelta(days=3)) user_services._save_user_settings(user_a_settings) # pylint: disable=protected-access # Set tmpsuperadm1n as admin in ADMIN_USERNAMES config property. self.set_admins(['tmpsuperadm1n'])
def test_that_last_edited_and_created_time_are_not_updated(self): user_settings = user_services.get_user_settings(self.owner_id) user_settings.last_created_an_exploration = None user_settings.last_edited_an_exploration = None user_services._save_user_settings(user_settings) # pylint: disable=protected-access owner_settings = user_services.get_user_settings(self.owner_id) self.assertIsNone(owner_settings.last_created_an_exploration) self.assertIsNone(owner_settings.last_edited_an_exploration) self._run_one_off_job() owner_settings = user_services.get_user_settings(self.owner_id) self.assertIsNone(owner_settings.last_created_an_exploration) self.assertIsNone(owner_settings.last_edited_an_exploration)
def test_legacy_user(self): """Test the case of a user who are creating exploration for first time after the last edited time check was introduced. """ # Set up a 'previous-generation' user. user_settings = user_services.get_user_settings(self.owner_id) user_settings.last_created_an_exploration = None user_services._save_user_settings(user_settings) # pylint: disable=protected-access owner_settings = user_services.get_user_settings(self.owner_id) self.assertIsNone(owner_settings.last_created_an_exploration) self.save_new_valid_exploration( self.EXP_ID_A, self.owner_id, end_state_name='End') owner_settings = user_services.get_user_settings(self.owner_id) self.assertIsNotNone(owner_settings.last_created_an_exploration)
def test_legacy_user(self): """Test the case of a user who existed in the system before the last-login check was introduced. """ # Set up a 'previous-generation' user. user_settings = user_services.get_user_settings(self.viewer_id) user_settings.last_logged_in = None user_services._save_user_settings(user_settings) # pylint: disable=protected-access self.assertIsNone( user_services.get_user_settings(self.viewer_id).last_logged_in) # After logging in and requesting a URL, the last_logged_in property is # set. self.login(self.VIEWER_EMAIL) self.testapp.get(feconf.LIBRARY_INDEX_URL) self.assertIsNotNone( user_services.get_user_settings(self.viewer_id).last_logged_in) self.logout()
def test_that_last_created_time_is_updated(self): self.login(self.OWNER_EMAIL) self.save_new_valid_exploration( self.exp_id, self.owner_id, end_state_name='End') self.logout() user_settings = user_services.get_user_settings(self.owner_id) user_settings.last_created_an_exploration = None user_services._save_user_settings(user_settings) # pylint: disable=protected-access owner_settings = user_services.get_user_settings(self.owner_id) self.assertIsNone(owner_settings.last_created_an_exploration) self.assertIsNone(owner_settings.last_edited_an_exploration) self._run_one_off_job() owner_settings = user_services.get_user_settings(self.owner_id) self.assertIsNotNone(owner_settings.last_created_an_exploration) self.assertIsNotNone(owner_settings.last_edited_an_exploration)
def test_legacy_user(self): """Test the case of a user who are editing exploration for first time after the last edited time check was introduced. """ # Set up a 'previous-generation' user. user_settings = user_services.get_user_settings(self.editor_id) user_settings.last_edited_an_exploration = None user_services._save_user_settings(user_settings) # pylint: disable=protected-access editor_settings = user_services.get_user_settings(self.editor_id) self.assertIsNone(editor_settings.last_edited_an_exploration) exp_services.update_exploration(self.editor_id, self.EXP_ID, [{ 'cmd': 'edit_exploration_property', 'property_name': 'objective', 'new_value': 'the objective' }], 'Test edit') editor_settings = user_services.get_user_settings(self.editor_id) self.assertIsNotNone(editor_settings.last_edited_an_exploration)
def test_user_has_not_logged_in_last_n_days(self): query_id = user_query_services.save_new_query_model( self.submitter_id, has_not_logged_in_for_n_days=6) self._run_one_off_job(query_id) query = user_models.UserQueryModel.get(query_id) # List of users who has not logged_in in last 6 days. qualifying_user_ids = [self.user_e_id] self.assertEqual(len(query.user_ids), 1) self.assertEqual(sorted(query.user_ids), sorted(qualifying_user_ids)) query_id = user_query_services.save_new_query_model( self.submitter_id, has_not_logged_in_for_n_days=2) self._run_one_off_job(query_id) query = user_models.UserQueryModel.get(query_id) # List of users logged_in in last 2 days. qualifying_user_ids = ( [self.user_a_id, self.user_e_id]) self.assertEqual(len(query.user_ids), 2) self.assertEqual(sorted(query.user_ids), sorted(qualifying_user_ids)) # Test for legacy user. user_settings = user_services.get_user_settings(self.user_a_id) user_settings.last_logged_in = None user_services._save_user_settings(user_settings) # pylint: disable=protected-access query_id = user_query_services.save_new_query_model( self.submitter_id, has_not_logged_in_for_n_days=6) self._run_one_off_job(query_id) query = user_models.UserQueryModel.get(query_id) qualifying_user_ids = ([self.user_a_id, self.user_e_id]) # Make sure that legacy user is included in qualified user's list. self.assertEqual(len(query.user_ids), 2) self.assertEqual(sorted(query.user_ids), sorted(qualifying_user_ids))