From 47f162d26ee7f736f71da0e36f457dfc45aa97be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Chaves?= Date: Mon, 12 Aug 2019 17:34:42 +0200 Subject: [PATCH] Improve test coverage for the splash spider attribute --- tests/test_middleware.py | 44 +++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/tests/test_middleware.py b/tests/test_middleware.py index 2bc3f8e..d9b205c 100644 --- a/tests/test_middleware.py +++ b/tests/test_middleware.py @@ -769,21 +769,55 @@ def test_adjust_timeout(): def test_spider_attribute(): req_url = "http://scrapy.org" - req1 = scrapy.Request(req_url) - spider = scrapy.Spider("example") + mw = _get_mw() + + req1 = scrapy.Request(req_url) spider.splash = {"args": {"images": 0}} mw = _get_mw() req1 = mw.process_request(req1, spider) assert "_splash_processed" in req1.meta assert "render.json" in req1.url - assert "url" in json.loads(req1.body) - assert json.loads(req1.body).get("url") == req_url - assert "images" in json.loads(req1.body) + request_data = json.loads(req1.body.decode('utf8')) + assert "url" in request_data + assert request_data.get("url") == req_url + assert "images" in request_data assert req1.method == 'POST' # spider attribute blank middleware disabled spider.splash = {} + req3 = mw.process_request(req1, spider) + assert req3 is None + + +def test_spider_attribute_dont_splash(): + req_url = "http://scrapy.org" + spider = scrapy.Spider("example") + mw = _get_mw() + + req1 = scrapy.Request(req_url, meta={'dont_splash': True}) + spider.splash = {"args": {"images": 0}} + + req2 = mw.process_request(req1, spider) + assert req2 is None + + response = Response("http://example.com", request=req1) + response2 = mw.process_response(req1, response, None) + assert response2 is response + + +def test_spider_attribute_blank(): + req_url = "http://scrapy.org" + spider = scrapy.Spider("example") + mw = _get_mw() + + req1 = scrapy.Request(req_url) + spider.splash = {} + req2 = mw.process_request(req1, spider) assert req2 is None + + response = Response("http://example.com", request=req1) + response2 = mw.process_response(req1, response, None) + assert response2 is response