import pytest from fastapi.testclient import TestClient @pytest.fixture def client(tmp_path, monkeypatch): db = tmp_path / "t.sqlite3" monkeypatch.setenv("GOODNEWS_DB", str(db)) monkeypatch.setenv("GOODNEWS_PUBLIC_BASE_URL", "https://upbeatbytes.com") import importlib import goodnews.api as api importlib.reload(api) from goodnews.db import connect, init_db c = connect(str(db)); init_db(c) c.execute("INSERT INTO sources (id,name,feed_url,trust_score) VALUES (1,'BBC','http://s/f',5)") c.execute("INSERT INTO articles (id,source_id,canonical_url,title,url_hash,published_at) " "VALUES (1,1,'https://bbc.com/x','Bees are back','h1','2026-06-05T08:00:00')") c.execute("INSERT INTO article_scores (article_id,accepted,reason_text) VALUES (1,1,'Hopeful.')") c.execute("INSERT INTO article_summaries (article_id,summary) VALUES (1,'Bee numbers recovered after a restoration effort.')") c.execute("INSERT INTO daily_briefs (id,brief_date,title) VALUES (1,'2026-06-05','B')") c.execute("INSERT INTO daily_brief_items (brief_id,article_id,rank) VALUES (1,1,1)") c.commit(); c.close() return api.create_app() def test_today_digest(client): r = TestClient(client).get("/today") assert r.status_code == 200 html = r.text assert "Bees are back" in html assert "Bee numbers recovered" in html # our summary assert 'href="/a/1"' in html and "bbc.com/x" in html # summary + source links assert 'rel="canonical" href="https://upbeatbytes.com/today"' in html assert 'property="og:title"' in html def test_sitemap(client): r = TestClient(client).get("/sitemap.xml") assert r.status_code == 200 assert "application/xml" in r.headers["content-type"] xml = r.text assert "2026-06-05" in xml