fix: prevent future article timestamps from pinning feeds
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import importlib.util
|
||||
import pathlib
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
ROOT = pathlib.Path(__file__).resolve().parents[1]
|
||||
MODULE_PATH = ROOT / "src" / "parser" / "publish_time.py"
|
||||
|
||||
|
||||
def load_module():
|
||||
if not MODULE_PATH.exists():
|
||||
raise AssertionError("缺少文章发布时间规范化模块")
|
||||
spec = importlib.util.spec_from_file_location("publish_time", MODULE_PATH)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(module)
|
||||
return module
|
||||
|
||||
|
||||
class ArticlePublishTimeTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.module = load_module()
|
||||
self.now = datetime(2026, 8, 3, 15, 0, 0)
|
||||
|
||||
def test_keeps_normal_publish_time_within_timezone_tolerance(self):
|
||||
value = self.module.normalize_published_at(
|
||||
"2026-08-03 23:01:04",
|
||||
now=self.now,
|
||||
)
|
||||
|
||||
self.assertEqual(value, "2026-08-03 23:01:04")
|
||||
|
||||
def test_rejects_clearly_future_publish_time(self):
|
||||
value = self.module.normalize_published_at(
|
||||
"2031-07-21 04:50:09",
|
||||
now=self.now,
|
||||
)
|
||||
|
||||
self.assertEqual(value, "")
|
||||
|
||||
def test_rejects_unparseable_publish_time(self):
|
||||
value = self.module.normalize_published_at("not-a-date", now=self.now)
|
||||
|
||||
self.assertEqual(value, "")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user