import json from datetime import datetime from tests.utils import read_test_file_content from city_scrapers.pipelines import CsvPipeline from city_scrapers.spiders.chi_buildings import ChiBuildingsSpider testSpider = ChiBuildingsSpider() def _str_to_datetime(date_string, spider_in=testSpider): if not date_string: return testSpider naive = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S') return spider_in._naive_datetime_to_tz(naive) def load_valid_item(): fixtures = json.loads( read_test_file_content('files/exporter_fixture.json')) valid_item = fixtures[0] valid_item['start_time'] = _str_to_datetime(valid_item['start_time']) valid_item['end_time'] = _str_to_datetime(valid_item['end_time']) return valid_item valid_item = load_valid_item() pipeline = CsvPipeline() pipeline.spider_opened(testSpider) def test_valid_process_item():
import pytest import scrapy from datetime import datetime from tests.utils import file_response from city_scrapers.constants import BOARD, COMMITTEE from city_scrapers.spiders.chi_buildings import ChiBuildingsSpider test_json_response = file_response('files/chi_buildings.json') test_event_response = file_response('files/chi_buildings.html') spider = ChiBuildingsSpider() # Setting spider date to time test files were generated spider.calendar_date = datetime(2018, 2, 18) class MockRequest(object): meta = {} def __getitem__(self, key): return self.meta['item'].get(key) def mock_request(*args, **kwargs): mock = MockRequest() mock.meta = {'item': {}} return mock @pytest.fixture() def parsed_items(monkeypatch):