def test_required_fields_attribute_exception(self):
     spider = BasicParseTestSpider()
     spider.pipelines = [RequiredFields]
     pipeline = RequiredFields()
     response = fake_response("basic_parse.html")
     with self.assertRaises(AttributeError):
         results = [pipeline.process_item(item, spider) for item in spider.parse(response)]
 def test_required_fields_fail(self):
     spider = BasicParseTestSpider()
     spider.Meta.required_fields = ["disclaimer", "discount", "image_url", "offer_url", "title"]
     spider.pipelines = [RequiredFields]
     pipeline = RequiredFields()
     response = fake_response("basic_some_missing.html")
     with self.assertRaises(DropItem):
         for item in spider.parse(response):
                 pipeline.process_item(item, spider)
 def test_required_fields_success(self):
     spider = BasicParseTestSpider()
     spider.Meta.required_fields = ["disclaimer", "discount", "image_url", "offer_url", "title"]
     spider.pipelines = [RequiredFields]
     response = fake_response("basic_parse.html")
     pipeline = RequiredFields()
     try:
         results = [pipeline.process_item(item, spider) for item in spider.parse(response)]
     except DropItem:
         self.fail("Valid required fields dropped item.")
     self.assertEqual(len(results), 3)