def test_send_recurring_reminder(database, reddit): reminder = Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user=database.get_or_add_user("Watchful1"), requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-05 05:00:00"), recurrence="one day") database.add_reminder(reminder) utils.debug_time = utils.parse_datetime_string("2019-01-05 12:00:00") notifications.send_reminders(reddit, database) assert len(reddit.sent_messages) == 1 message_body = reddit.sent_messages[0].body assert "I'm here to remind you" in message_body assert reminder.message in message_body assert "The source comment or message" in message_body assert reminder.source in message_body assert "This is a repeating reminder. I'll message you again in " in message_body assert reminder.recurrence in message_body reminders = database.get_all_user_reminders("Watchful1") assert len(reminders) == 1 assert reminders[0].target_date == utils.parse_datetime_string( "2019-01-06 05:00:00")
def test_send_recurring_reminder_limit(database, reddit): old_limit = static.RECURRING_LIMIT static.RECURRING_LIMIT = 3 reminder = Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user=database.get_or_add_user("Watchful1"), requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-05 05:00:00"), recurrence="one day") database.add_reminder(reminder) utils.debug_time = utils.parse_datetime_string("2019-01-04 12:00:00") for i in range(static.RECURRING_LIMIT + 1): utils.debug_time = utils.debug_time + timedelta(days=1) notifications.send_reminders(reddit, database) assert "I've sent you at least" not in reddit.sent_messages[-1].body assert i + 1 == database.get_or_add_user("Watchful1").recurring_sent utils.debug_time = utils.debug_time + timedelta(days=1) notifications.send_reminders(reddit, database) assert "I've sent you at least" in reddit.sent_messages[-1].body reminders = database.get_all_user_reminders("Watchful1") assert len(reminders) == 0 static.RECURRING_LIMIT = old_limit
def test_send_reminders(database, reddit): reminders = [ Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user="******", requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-05 05:00:00") ), Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user="******", requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-06 05:00:00") ), Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user="******", requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-07 05:00:00") ), Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user="******", requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-08 05:00:00") ), Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user="******", requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-09 05:00:00") ) ] for reminder in reminders: database.save_reminder(reminder) utils.debug_time = utils.parse_datetime_string("2019-01-05 12:00:00") notifications.send_reminders(reddit, database) assert len(database.get_user_reminders("Watchful1")) == 4 utils.debug_time = utils.parse_datetime_string("2019-01-08 12:00:00") notifications.send_reminders(reddit, database) assert len(database.get_user_reminders("Watchful1")) == 1
def test_reset_recurring_reminder_limit(database, reddit): reminder = Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user=database.get_or_add_user("Watchful1"), requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-05 05:00:00"), recurrence="one day") database.add_reminder(reminder) utils.debug_time = utils.parse_datetime_string("2019-01-05 12:00:00") notifications.send_reminders(reddit, database) assert database.get_or_add_user("Watchful1").recurring_sent == 1 message = reddit_test.RedditObject(body="MyReminders!", author="Watchful1") messages.process_message(message, reddit, database) assert database.get_or_add_user("Watchful1").recurring_sent == 0
def test_send_reminder(database, reddit): reminder = Reminder( source="https://www.reddit.com/message/messages/XXXXX", message="KKKKK", user="******", requested_date=utils.parse_datetime_string("2019-01-01 04:00:00"), target_date=utils.parse_datetime_string("2019-01-05 05:00:00") ) database.save_reminder(reminder) utils.debug_time = utils.parse_datetime_string("2019-01-05 12:00:00") notifications.send_reminders(reddit, database) assert len(reddit.sent_messages) == 1 message_body = reddit.sent_messages[0].body assert "I'm here to remind you" in message_body assert reminder.message in message_body assert "The source comment or message" in message_body assert reminder.source in message_body
counters.objects.labels(type="subreddits_banned").set(database.get_count_banned_subreddits()) try: actions += messages.process_messages(reddit, database) except Exception as err: utils.process_error(f"Error processing messages", err, traceback.format_exc()) errors += 1 try: actions += comments.process_comments(reddit, database) except Exception as err: utils.process_error(f"Error processing comments", err, traceback.format_exc()) errors += 1 try: actions += notifications.send_reminders(reddit, database) except Exception as err: utils.process_error(f"Error sending notifications", err, traceback.format_exc()) errors += 1 if utils.time_offset(last_comments, minutes=30): try: comments.update_comments(reddit, database) last_comments = utils.datetime_now() except Exception as err: utils.process_error(f"Error updating comments", err, traceback.format_exc()) errors += 1 if not args.no_backup and utils.time_offset(last_backup, hours=12): try: database.backup()