(self)
| 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() |
nothing calls this directly
no test coverage detected