Skip to content

Commit 40961cb

Browse files
committed
Improve test coverage for the splash spider attribute
1 parent 03aaab9 commit 40961cb

File tree

1 file changed

+43
-9
lines changed

1 file changed

+43
-9
lines changed

tests/test_middleware.py

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# -*- coding: utf-8 -*-
2+
23
from __future__ import absolute_import
34
import copy
45
import json
@@ -769,21 +770,54 @@ def test_adjust_timeout():
769770

770771
def test_spider_attribute():
771772
req_url = "http://scrapy.org"
773+
spider = scrapy.Spider("example")
774+
mw = _get_mw()
775+
772776
req1 = scrapy.Request(req_url)
777+
spider.splash = {"args": {"images": 0}}
778+
779+
mw = _get_mw()
780+
req2 = mw.process_request(req1, spider)
781+
assert "_splash_processed" in req2.meta
782+
assert "render.json" in req2.url
783+
request_data = json.loads(req2.body.decode('utf8'))
784+
assert "url" in request_data
785+
assert request_data.get("url") == req_url
786+
assert "images" in request_data
787+
assert req2.method == 'POST'
788+
789+
response = Response(req_url, request=req2)
790+
response2 = mw.process_response(req2, response, spider)
791+
assert response2 is not response
773792

793+
794+
def test_spider_attribute_dont_splash():
795+
req_url = "http://scrapy.org"
774796
spider = scrapy.Spider("example")
797+
mw = _get_mw()
798+
799+
req1 = scrapy.Request(req_url, meta={'dont_splash': True})
775800
spider.splash = {"args": {"images": 0}}
776801

802+
req2 = mw.process_request(req1, spider)
803+
assert req2 is None
804+
805+
response = Response(req_url, request=req1)
806+
response2 = mw.process_response(req1, response, spider)
807+
assert response2 is response
808+
809+
810+
def test_spider_attribute_blank():
811+
req_url = "http://scrapy.org"
812+
spider = scrapy.Spider("example")
777813
mw = _get_mw()
778-
req1 = mw.process_request(req1, spider)
779-
assert "_splash_processed" in req1.meta
780-
assert "render.json" in req1.url
781-
assert "url" in json.loads(req1.body)
782-
assert json.loads(req1.body).get("url") == req_url
783-
assert "images" in json.loads(req1.body)
784-
assert req1.method == 'POST'
785-
786-
# spider attribute blank middleware disabled
814+
815+
req1 = scrapy.Request(req_url)
787816
spider.splash = {}
817+
788818
req2 = mw.process_request(req1, spider)
789819
assert req2 is None
820+
821+
response = Response(req_url, request=req1)
822+
response2 = mw.process_response(req1, response, spider)
823+
assert response2 is response

0 commit comments

Comments
 (0)