MediaRouter / tests /test_publishing_operations_phase9_static.py
basyx's picture
Upload 437 files
7cc81cb verified
Raw
History Blame Contribute Delete
1.82 kB
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def test_phase9_migration_is_additive_and_forces_batch_rls() -> None:
migration = (
ROOT / "app/social/migrations/0009_publishing_operations.sql"
).read_text()
normalized = migration.lower()
assert "drop table" not in normalized
assert "social_posts add column if not exists revision" in migration
assert "social_schedules add column if not exists revision" in migration
assert "create table if not exists social_publishing_batches" in migration
assert "create table if not exists social_publishing_batch_items" in migration
assert normalized.count("force row level security") >= 2
assert "current_setting('app.workspace_id'" in migration
def test_phase9_uses_existing_posts_schedules_jobs_and_worker() -> None:
service = (
ROOT / "app/social/services/publishing_operations_service.py"
).read_text()
scheduler = (ROOT / "app/social/workers/scheduler.py").read_text()
assert "PostRepository" in service
assert "JobRepository" in service
assert "SchedulingService" in service
assert "process_batch_items" in scheduler
assert "SocialJob(" not in service
def test_phase9_transports_expose_narrow_typed_operations() -> None:
api = (ROOT / "app/api/social.py").read_text()
mcp = (ROOT / "app/mcp/tools/social.py").read_text()
for route in (
'"/drafts"',
'"/posts/{post_id}/duplicate"',
'"/posts/{post_id}/reschedule"',
'"/calendar"',
'"/queue"',
'"/bulk"',
):
assert route in api
for tool in (
"publishing.list_queue",
"publishing.list_calendar",
"publishing.reschedule",
"publishing.duplicate",
"publishing.bulk",
):
assert tool in mcp