Skip to content

Commit

Permalink
More tests
Browse files Browse the repository at this point in the history
  • Loading branch information
elacuesta committed Dec 28, 2023
1 parent c3c8eb4 commit aca3118
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion tests/tests_asyncio/test_extensions.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import asyncio
from unittest import IsolatedAsyncioTestCase
from unittest.mock import MagicMock, patch

import pytest
from playwright.async_api import PlaywrightContextManager
from scrapy.exceptions import NotConfigured

from scrapy_playwright.extensions import ScrapyPlaywrightMemoryUsageExtension
Expand Down Expand Up @@ -29,8 +31,15 @@ def raise_import_error(*args, **kwargs):

@patch("scrapy.extensions.memusage.MailSender")
class TestMemoryUsageExtension(IsolatedAsyncioTestCase):
async def test_process_availability(self, _MailSender):
"""The main node process should be accessible from the context manager"""
ctx_manager = PlaywrightContextManager()
await ctx_manager.start()
assert isinstance(ctx_manager._connection._transport._proc, asyncio.subprocess.Process)
await ctx_manager.__aexit__()

@patch("scrapy_playwright.extensions.import_module", side_effect=raise_import_error)
async def test_psutil_not_available_extension_disabled(self, import_module, _MailSender):
async def test_psutil_not_available_extension_disabled(self, _import_module, _MailSender):
crawler = MagicMock()
with pytest.raises(NotConfigured):
ScrapyPlaywrightMemoryUsageExtension(crawler)
Expand All @@ -46,3 +55,14 @@ async def test_get_process_ids_error(self, _MailSender):
crawler.engine.downloader.handlers._handlers.values.side_effect = raise_import_error
extension = ScrapyPlaywrightMemoryUsageExtension(crawler)
assert extension._get_main_process_ids() == []

async def test_get_descendant_processes(self, _MailSender):
p1 = MagicMock()
p2 = MagicMock()
p3 = MagicMock()
p4 = MagicMock()
p2.children.return_value = [p3, p4]
p1.children.return_value = [p2]
crawler = MagicMock()
extension = ScrapyPlaywrightMemoryUsageExtension(crawler)
assert extension._get_descendant_processes(p1) == [p2, p3, p4]

0 comments on commit aca3118

Please sign in to comment.