MCPcopy
hub / github.com/scrapy/scrapy / test_cb_kwargs

Method test_cb_kwargs

tests/test_contracts.py:300–357  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

298 assert request is None
299
300 def test_cb_kwargs(self):
301 spider = DemoSpider()
302 response = ResponseMock()
303
304 # extract contracts correctly
305 contracts = self.conman.extract_contracts(spider.returns_request_cb_kwargs)
306 assert len(contracts) == 3
307 assert frozenset(type(x) for x in contracts) == frozenset(
308 [UrlContract, CallbackKeywordArgumentsContract, ReturnsContract]
309 )
310
311 contracts = self.conman.extract_contracts(spider.returns_item_cb_kwargs)
312 assert len(contracts) == 3
313 assert frozenset(type(x) for x in contracts) == frozenset(
314 [UrlContract, CallbackKeywordArgumentsContract, ReturnsContract]
315 )
316
317 contracts = self.conman.extract_contracts(
318 spider.returns_item_cb_kwargs_error_unexpected_keyword
319 )
320 assert len(contracts) == 3
321 assert frozenset(type(x) for x in contracts) == frozenset(
322 [UrlContract, CallbackKeywordArgumentsContract, ReturnsContract]
323 )
324
325 contracts = self.conman.extract_contracts(
326 spider.returns_item_cb_kwargs_error_missing_argument
327 )
328 assert len(contracts) == 2
329 assert frozenset(type(x) for x in contracts) == frozenset(
330 [UrlContract, ReturnsContract]
331 )
332
333 # returns_request
334 request = self.conman.from_method(
335 spider.returns_request_cb_kwargs, self.results
336 )
337 request.callback(response, **request.cb_kwargs)
338 self.should_succeed()
339
340 # returns_item
341 request = self.conman.from_method(spider.returns_item_cb_kwargs, self.results)
342 request.callback(response, **request.cb_kwargs)
343 self.should_succeed()
344
345 # returns_item (error, callback doesn't take keyword arguments)
346 request = self.conman.from_method(
347 spider.returns_item_cb_kwargs_error_unexpected_keyword, self.results
348 )
349 request.callback(response, **request.cb_kwargs)
350 self.should_error()
351
352 # returns_item (error, contract doesn't provide keyword arguments)
353 request = self.conman.from_method(
354 spider.returns_item_cb_kwargs_error_missing_argument, self.results
355 )
356 request.callback(response, **request.cb_kwargs)
357 self.should_error()

Callers

nothing calls this directly

Calls 7

should_succeedMethod · 0.95
should_errorMethod · 0.95
DemoSpiderClass · 0.85
ResponseMockClass · 0.85
extract_contractsMethod · 0.80
from_methodMethod · 0.80
callbackMethod · 0.80

Tested by

no test coverage detected