Skip to content

Commit

Permalink
tests: add test_root_path_middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
yolile committed Jun 5, 2022
1 parent ee45a30 commit 53864df
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions tests/test_spidermiddlewares.py
Original file line number Diff line number Diff line change
Expand Up @@ -389,3 +389,35 @@ def test_retry_data_error_middleware(exception):
else:
with pytest.raises(Exception):
list(generator)


@pytest.mark.parametrize('root_path,data_type,data,expected,expected_data_type', [
('item', 'release', [{'a': 'b'}], {'releases': [{'a': 'b'}], 'version': '1.1'}, 'release_package'),
('Release', 'release', {'Release': {'a': 'b'}}, {'a': 'b'}, 'release'),
('item', 'release_package', [{'releases': [{'a': 'b'}, {'c': 'd'}], 'uri': 'test'},
{'releases': [{'e': 'f'}, {'g': 'h'}], 'uri': 'test'}],
{'releases': [{'a': 'b'}, {'c': 'd'}, {'e': 'f'}, {'g': 'h'}], 'uri': 'test'}, 'release_package'),
('a.item', 'record', {'a': [{'a': 'b'}, {'a': 'b'}]},
{'records': [{'a': 'b'}, {'a': 'b'}], 'version': '1.1'}, 'record_package')
])
def test_root_path_middleware(root_path, data_type, data, expected, expected_data_type):
spider = spider_with_crawler()
middleware = RootPathMiddleware()
spider.data_type = data_type
spider.root_path = root_path

item = File({
'file_name': 'test.json',
'data': data,
'data_type': data_type,
'url': 'http://test.com',
})

generator = middleware.process_spider_output(None, [item], spider)
transformed_items = list(generator)

assert len(transformed_items) == 1
for transformed_item in transformed_items:
assert transformed_item['data'] == expected
assert type(item) == type(transformed_item)
assert transformed_item['data_type'] == expected_data_type

0 comments on commit 53864df

Please sign in to comment.