diff --git a/tests/test_integration.py b/tests/test_integration.py index 35aa28f..895ba6f 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -20,6 +20,7 @@ import re import time import uuid +from datetime import datetime, timedelta, timezone from os import path from toot import CLIENT_NAME, CLIENT_WEBSITE, api, App, User from toot.console import run_command @@ -145,6 +146,17 @@ def test_post_visibility(app, user, run): assert status["visibility"] == visibility +def test_post_scheduled(app, user, run): + scheduled_at = datetime.now(timezone.utc).replace(microsecond=0) + timedelta(minutes=10) + + out = run("post", "foo", "--scheduled-at", scheduled_at.isoformat()) + assert "Toot scheduled for" in out + + [status] = api.scheduled_statuses(app, user) + assert status["params"]["text"] == "foo" + assert datetime.strptime(status["scheduled_at"], "%Y-%m-%dT%H:%M:%S.%f%z") == scheduled_at + + def test_media_attachments(app, user, run): assets_dir = path.realpath(path.join(path.dirname(__file__), "assets")) diff --git a/toot/api.py b/toot/api.py index cdbc537..5868430 100644 --- a/toot/api.py +++ b/toot/api.py @@ -161,6 +161,14 @@ def fetch_status(app, user, id): return http.get(app, user, f"/api/v1/statuses/{id}").json() +def scheduled_statuses(app, user): + """ + List scheduled statuses + https://docs.joinmastodon.org/methods/scheduled_statuses/#get + """ + return http.get(app, user, "/api/v1/scheduled_statuses").json() + + def delete_status(app, user, status_id): """ Deletes a status with given ID.