From f209d936aaac9053c411b29882a475fa81896860 Mon Sep 17 00:00:00 2001 From: aguilerapy Date: Tue, 3 Nov 2020 21:40:14 -0300 Subject: [PATCH] Update tests --- tests/__init__.py | 1 - tests/test_links_spider.py | 22 +++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/__init__.py b/tests/__init__.py index 632b8de8..4e929fcd 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -12,7 +12,6 @@ def response_fixture(meta=None, **kwargs): meta = {'file_name': 'test'} request = Request('http://example.com', meta=meta) kwargs.setdefault('status', 200) - kwargs.setdefault('body', b'{"links": {"next": "http://example.com/next"}}') return TextResponse(request.url, encoding='utf-8', request=request, **kwargs) diff --git a/tests/test_links_spider.py b/tests/test_links_spider.py index 65b889ac..b3fcf3dd 100644 --- a/tests/test_links_spider.py +++ b/tests/test_links_spider.py @@ -1,5 +1,8 @@ +from datetime import date + import pytest from scrapy.http import Request +from scrapy.utils.trackref import NoneType from kingfisher_scrapy.base_spider import LinksSpider from kingfisher_scrapy.exceptions import MissingNextLinkError @@ -11,17 +14,26 @@ def test_next_link(): spider = spider_with_crawler(spider_class=LinksSpider) spider.next_page_formatter = lambda url: 'next.json' - request = spider.next_link(response_fixture()) + request = spider.next_link(response_fixture(body=b'{"links": {"next": "http://example.com/next"}}')) assert type(request) is Request assert request.url == 'http://example.com/next' assert request.meta == {'file_name': 'next.json'} +def test_next_link_condition(): + spider = spider_with_crawler(spider_class=LinksSpider) + spider.from_date = spider.until_date = date(2002, 12, 31) + + request = spider.next_link(response_fixture(body='{"links": {"next": ""}}')) + + assert type(request) is NoneType + + def test_parse_404(): spider = spider_with_crawler(spider_class=LinksSpider) - generator = spider.parse(response_fixture(status=404)) + generator = spider.parse(response_fixture(status=404, body=b'{"links": {"next": "http://example.com/next"}}')) item = next(generator) assert type(item) is FileError @@ -39,8 +51,9 @@ def test_parse_200(): spider = spider_with_crawler(spider_class=LinksSpider) spider.data_type = 'release_package' spider.next_page_formatter = lambda url: 'next.json' + body = b'{"links": {"next": "http://example.com/next"}}' - generator = spider.parse(response_fixture()) + generator = spider.parse(response_fixture(body=body)) item = next(generator) request = next(generator) @@ -48,7 +61,7 @@ def test_parse_200(): assert item == { 'file_name': 'test', 'url': 'http://example.com', - 'data': b'{"links": {"next": "http://example.com/next"}}', + 'data': body, 'data_type': 'release_package', 'encoding': 'utf-8', 'post_to_api': True, @@ -64,7 +77,6 @@ def test_parse_200(): def test_next_link_not_found(): spider = spider_with_crawler(spider_class=LinksSpider) - spider.next_page_formatter = lambda url: 'next.json' body = '{"links": {"next": ""}}' with pytest.raises(MissingNextLinkError) as e: