コード例 #1
0
 def test_true(self):
     self.assertTrue(PydanticAdapter.is_item(PydanticModel()))
     self.assertTrue(
         PydanticAdapter.is_item(PydanticModel(name="asdf", value=1234)))
     # field metadata
     self.assertEqual(
         get_field_meta_from_class(PydanticModel, "name"),
         MappingProxyType({"serializer": str}),
     )
     self.assertEqual(
         get_field_meta_from_class(PydanticModel, "value"),
         MappingProxyType({"serializer": int}),
     )
     self.assertEqual(
         get_field_meta_from_class(PydanticSpecialCasesModel,
                                   "special_cases"),
         MappingProxyType({
             "alias": "special_cases",
             "allow_mutation": False
         }),
     )
     with self.assertRaises(
             KeyError,
             msg="PydanticModel does not support field: non_existent"):
         get_field_meta_from_class(PydanticModel, "non_existent")
コード例 #2
0
 def test_module_not_available(self):
     self.assertFalse(
         ScrapyItemAdapter.is_item(
             ScrapySubclassedItem(name="asdf", value=1234)))
     with self.assertRaises(
             TypeError,
             msg="ScrapySubclassedItem is not a valid item class"):
         get_field_meta_from_class(ScrapySubclassedItem, "name")
コード例 #3
0
ファイル: test_utils.py プロジェクト: zanachka/itemadapter
    def test_empty_meta_for_dict(self):
        class DictSubclass(dict):
            pass

        self.assertEqual(get_field_meta_from_class(DictSubclass, "name"),
                         MappingProxyType({}))
        self.assertEqual(get_field_meta_from_class(dict, "name"),
                         MappingProxyType({}))
コード例 #4
0
    def test_module_not_available(self):
        from itemadapter.adapter import AttrsAdapter

        self.assertFalse(
            AttrsAdapter.is_item(AttrsItem(name="asdf", value=1234)))
        with self.assertRaises(TypeError,
                               msg="AttrsItem is not a valid item class"):
            get_field_meta_from_class(AttrsItem, "name")
コード例 #5
0
    def test_module_not_available(self):
        from itemadapter.adapter import PydanticAdapter

        self.assertFalse(
            PydanticAdapter.is_item(PydanticModel(name="asdf", value=1234)))
        with self.assertRaises(TypeError,
                               msg="PydanticModel is not a valid item class"):
            get_field_meta_from_class(PydanticModel, "name")
コード例 #6
0
    def test_module_import_error(self):
        with clear_itemadapter_imports():
            from itemadapter.adapter import ScrapyItemAdapter

            self.assertFalse(
                ScrapyItemAdapter.is_item(
                    ScrapySubclassedItem(name="asdf", value=1234)))
            with self.assertRaises(
                    TypeError,
                    msg="ScrapySubclassedItem is not a valid item class"):
                get_field_meta_from_class(ScrapySubclassedItem, "name")
コード例 #7
0
 def test_true(self):
     self.assertTrue(AttrsAdapter.is_item(AttrsItem()))
     self.assertTrue(
         AttrsAdapter.is_item(AttrsItem(name="asdf", value=1234)))
     # field metadata
     self.assertEqual(get_field_meta_from_class(AttrsItem, "name"),
                      MappingProxyType({"serializer": str}))
     self.assertEqual(get_field_meta_from_class(AttrsItem, "value"),
                      MappingProxyType({"serializer": int}))
     with self.assertRaises(
             KeyError,
             msg="AttrsItem does not support field: non_existent"):
         get_field_meta_from_class(AttrsItem, "non_existent")
コード例 #8
0
 def test_true(self):
     self.assertTrue(ScrapyItemAdapter.is_item(ScrapyItem()))
     self.assertTrue(ScrapyItemAdapter.is_item(ScrapySubclassedItem()))
     self.assertTrue(
         ScrapyItemAdapter.is_item(
             ScrapySubclassedItem(name="asdf", value=1234)))
     # field metadata
     self.assertEqual(
         get_field_meta_from_class(ScrapySubclassedItem, "name"),
         MappingProxyType({"serializer": str}),
     )
     self.assertEqual(
         get_field_meta_from_class(ScrapySubclassedItem, "value"),
         MappingProxyType({"serializer": int}),
     )
コード例 #9
0
    def test_removed_baseitem(self):
        """Mock the scrapy.item module so it does not contain the deprecated _BaseItem class."""
        class MockItemModule:
            Item = ScrapyItem

        with mock.patch("scrapy.item", MockItemModule):
            self.assertFalse(ScrapyItemAdapter.is_item(dict()))
            self.assertEqual(
                get_field_meta_from_class(ScrapySubclassedItem, "name"),
                MappingProxyType({"serializer": str}),
            )
            self.assertEqual(
                get_field_meta_from_class(ScrapySubclassedItem, "value"),
                MappingProxyType({"serializer": int}),
            )
コード例 #10
0
    def test_module_import_error(self):
        with clear_itemadapter_imports():
            from itemadapter.adapter import AttrsAdapter

            self.assertFalse(
                AttrsAdapter.is_item(AttrsItem(name="asdf", value=1234)))
            with self.assertRaises(RuntimeError,
                                   msg="attr module is not available"):
                AttrsAdapter(AttrsItem(name="asdf", value=1234))
            with self.assertRaises(RuntimeError,
                                   msg="attr module is not available"):
                AttrsAdapter.get_field_meta_from_class(AttrsItem, "name")
            with self.assertRaises(TypeError,
                                   msg="AttrsItem is not a valid item class"):
                get_field_meta_from_class(AttrsItem, "name")
コード例 #11
0
ファイル: test_utils.py プロジェクト: zanachka/itemadapter
 def test_invalid_item_class(self):
     with self.assertRaises(TypeError, msg="1 is not a valid item class"):
         get_field_meta_from_class(1, "field")
     with self.assertRaises(TypeError,
                            msg="list is not a valid item class"):
         get_field_meta_from_class(list, "field")