2026-04-06 14:53:49 -04:00
|
|
|
import pytest
|
|
|
|
|
from app import create_app, db as _db
|
|
|
|
|
import config
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def app(tmp_path):
|
|
|
|
|
config.DATA_DIR = str(tmp_path / "data")
|
|
|
|
|
config.IMAGES_DIR = str(tmp_path / "data" / "images")
|
|
|
|
|
config.ISSUES_DIR = str(tmp_path / "data" / "issues")
|
|
|
|
|
config.SQLALCHEMY_DATABASE_URI = f"sqlite:///{tmp_path / 'test.db'}"
|
|
|
|
|
|
2026-04-06 15:22:38 -04:00
|
|
|
app = create_app(start_scheduler=False)
|
2026-04-06 14:53:49 -04:00
|
|
|
app.config["TESTING"] = True
|
|
|
|
|
|
|
|
|
|
with app.app_context():
|
|
|
|
|
_db.create_all()
|
|
|
|
|
yield app
|
|
|
|
|
_db.drop_all()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def client(app):
|
|
|
|
|
return app.test_client()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def db(app):
|
|
|
|
|
with app.app_context():
|
|
|
|
|
yield _db
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SAMPLE_RSS_XML = """<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<rss version="2.0"
|
|
|
|
|
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
|
|
|
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
|
|
|
<channel>
|
|
|
|
|
<title>Plymouth Independent</title>
|
|
|
|
|
<item>
|
|
|
|
|
<title>Test Article One</title>
|
|
|
|
|
<link>https://example.com/article-1</link>
|
|
|
|
|
<dc:creator><![CDATA[Test Author]]></dc:creator>
|
|
|
|
|
<pubDate>Mon, 06 Apr 2026 12:00:00 +0000</pubDate>
|
|
|
|
|
<category><![CDATA[Government]]></category>
|
|
|
|
|
<guid isPermaLink="false">https://example.com/?p=1001</guid>
|
|
|
|
|
<content:encoded><![CDATA[
|
|
|
|
|
<p>First article content.</p>
|
|
|
|
|
<img src="https://example.com/image1.jpg" width="1024" height="768" />
|
|
|
|
|
]]></content:encoded>
|
|
|
|
|
</item>
|
|
|
|
|
<item>
|
|
|
|
|
<title>Test Article Two</title>
|
|
|
|
|
<link>https://example.com/article-2</link>
|
|
|
|
|
<dc:creator><![CDATA[Another Author]]></dc:creator>
|
|
|
|
|
<pubDate>Tue, 07 Apr 2026 09:00:00 +0000</pubDate>
|
|
|
|
|
<category><![CDATA[Culture Calendar]]></category>
|
|
|
|
|
<category><![CDATA[Feature]]></category>
|
|
|
|
|
<guid isPermaLink="false">https://example.com/?p=1002</guid>
|
|
|
|
|
<content:encoded><![CDATA[
|
|
|
|
|
<p>Second article content.</p>
|
|
|
|
|
]]></content:encoded>
|
|
|
|
|
</item>
|
|
|
|
|
</channel>
|
|
|
|
|
</rss>"""
|