feat: ingest site videos through raw pipeline
This commit is contained in:
@@ -28,11 +28,23 @@ class FakeResponse:
|
||||
}
|
||||
|
||||
|
||||
class FollowedPageResponse(FakeResponse):
|
||||
async def json(self, **_kwargs):
|
||||
data = await super().json(**_kwargs)
|
||||
data["items"][0]["text"] = "Title\nAuthor"
|
||||
return data
|
||||
|
||||
|
||||
class FakeSession:
|
||||
def post(self, *_args, **_kwargs):
|
||||
return FakeResponse()
|
||||
|
||||
|
||||
class FollowedPageSession(FakeSession):
|
||||
def post(self, *_args, **_kwargs):
|
||||
return FollowedPageResponse()
|
||||
|
||||
|
||||
class SourceAdapterTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_worker_response_is_normalized(self) -> None:
|
||||
client = SiteParserClient(FakeSession(), "http://worker", "token", "captcha", 30)
|
||||
@@ -46,10 +58,23 @@ class SourceAdapterTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertEqual(items[0].media[0].url, "https://example.test/1.jpg")
|
||||
self.assertEqual(state["browser_state"]["cookies"][0]["name"], "cf_clearance")
|
||||
|
||||
async def test_followed_page_does_not_repeat_title(self) -> None:
|
||||
client = SiteParserClient(FollowedPageSession(), "http://worker", "token", "captcha", 30)
|
||||
items, _ = await client.fetch({
|
||||
"url": "https://example.test/rss.xml",
|
||||
"settings_json": '{"format":"rss","follow_links":true,"content_selector":"article.full"}',
|
||||
"runtime_state_json": "{}",
|
||||
})
|
||||
self.assertEqual(items[0].text, "Title\nAuthor")
|
||||
|
||||
def test_site_config_is_required(self) -> None:
|
||||
with self.assertRaisesRegex(ValueError, "нужен конфиг"):
|
||||
validate_source_config("site", {})
|
||||
|
||||
def test_follow_links_requires_selector(self) -> None:
|
||||
with self.assertRaisesRegex(ValueError, "content_selector"):
|
||||
validate_source_config("site", {"format": "rss", "follow_links": True})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user