def test_user_has_not_logged_in_last_n_days(self): user_query_1_id = user_query_services.save_new_user_query( self.submitter_id, has_not_logged_in_for_n_days=6) self._run_one_off_job(user_query_1_id) query_1 = user_models.UserQueryModel.get(user_query_1_id) # List of users who has not logged_in in last 6 days. self.assertItemsEqual(query_1.user_ids, [self.user_e_id]) user_query_2_id = user_query_services.save_new_user_query( self.submitter_id, has_not_logged_in_for_n_days=2) self._run_one_off_job(user_query_2_id) query_2 = user_models.UserQueryModel.get(user_query_2_id) # List of users logged_in in last 2 days. qualifying_user_ids = [self.user_a_id, self.user_e_id] self.assertItemsEqual(query_2.user_ids, qualifying_user_ids) # Test for legacy user. user_settings = user_services.get_user_settings(self.user_a_id) user_services.update_last_logged_in(user_settings, None) user_query_3_id = user_query_services.save_new_user_query( self.submitter_id, has_not_logged_in_for_n_days=6) self._run_one_off_job(user_query_3_id) query = user_models.UserQueryModel.get(user_query_3_id) # Make sure that legacy user is included in qualified user's list. self.assertItemsEqual(query.user_ids, [self.user_a_id, self.user_e_id])
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_services.update_last_logged_in(user_settings, None) 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))
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. # User F has one created exploration but is not subscribed to emails. # 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) user_services.update_email_preferences(self.user_a_id, True, True, True, True) self.signup(self.USER_B_EMAIL, self.USER_B_USERNAME) self.user_b_id = self.get_user_id_from_email(self.USER_B_EMAIL) user_services.update_email_preferences(self.user_b_id, True, True, True, True) self.signup(self.USER_C_EMAIL, self.USER_C_USERNAME) self.user_c_id = self.get_user_id_from_email(self.USER_C_EMAIL) user_services.update_email_preferences(self.user_c_id, True, True, True, True) self.signup(self.USER_D_EMAIL, self.USER_D_USERNAME) self.user_d_id = self.get_user_id_from_email(self.USER_D_EMAIL) user_services.update_email_preferences(self.user_d_id, True, True, True, True) self.signup(self.USER_E_EMAIL, self.USER_E_USERNAME) self.user_e_id = self.get_user_id_from_email(self.USER_E_EMAIL) user_services.update_email_preferences(self.user_e_id, True, True, True, True) self.signup(self.USER_F_EMAIL, self.USER_F_USERNAME) self.user_f_id = self.get_user_id_from_email(self.USER_F_EMAIL) user_services.update_email_preferences(self.user_f_id, False, True, True, True) self.signup(self.USER_SUBMITTER_EMAIL, self.USER_SUBMITTER_USERNAME) self.submitter_id = self.get_user_id_from_email( self.USER_SUBMITTER_EMAIL) user_services.update_email_preferences(self.submitter_id, True, True, True, True) 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, [ exp_domain.ExplorationChange({ '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, [ exp_domain.ExplorationChange({ '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 exploration. user_e_settings.last_edited_an_exploration = ( datetime.datetime.utcnow() - datetime.timedelta(days=10)) user_services.update_last_logged_in( user_e_settings, user_e_settings.last_logged_in - datetime.timedelta(days=10)) self.save_new_valid_exploration(self.EXP_ID_4, self.user_f_id, end_state_name='End') user_a_settings = user_services.get_user_settings(self.user_a_id) user_services.update_last_logged_in( user_a_settings, user_a_settings.last_logged_in - datetime.timedelta(days=3)) # Set tmpsuperadm1n as admin in ADMIN_USERNAMES config property. self.set_admins(['tmpsuperadm1n'])