Exemple #1
0
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")
Exemple #2
0
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
Exemple #4
0
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
Exemple #6
0
		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()