diff --git a/src/wuttasync/importing/base.py b/src/wuttasync/importing/base.py index dd65190..183c1b9 100644 --- a/src/wuttasync/importing/base.py +++ b/src/wuttasync/importing/base.py @@ -379,8 +379,10 @@ class Importer: # pylint: disable=too-many-instance-attributes,too-many-public- # nb. prefer 'keys' but use 'key' as fallback if "keys" in self.__dict__: keys = self.__dict__["keys"] - elif "key" in self.__dict__: - keys = self.__dict__["key"] + elif hasattr(self, "keys"): + keys = self.keys + elif hasattr(self, "key"): + keys = self.key else: keys = self.default_keys diff --git a/tests/importing/test_base.py b/tests/importing/test_base.py index 9f83ae3..cf49b1c 100644 --- a/tests/importing/test_base.py +++ b/tests/importing/test_base.py @@ -90,19 +90,24 @@ class TestImporter(DataTestCase): imp = self.make_importer(model_class=model.User) self.assertEqual(imp.get_keys(), ["uuid"]) - # class may define 'keys' + # object dict may define 'keys' imp = self.make_importer(model_class=model.User) - with patch.object(imp, "keys", new=["foo", "bar"], create=True): + with patch.dict(imp.__dict__, keys=["foo", "bar"]): self.assertEqual(imp.get_keys(), ["foo", "bar"]) + # class may define 'keys' + with patch.object(mod.Importer, "keys", new=["foo", "baz"], create=True): + imp = self.make_importer(model_class=model.User) + self.assertEqual(imp.get_keys(), ["foo", "baz"]) + # class may define 'key' - imp = self.make_importer(model_class=model.User) - with patch.object(imp, "key", new="whatever", create=True): + with patch.object(mod.Importer, "key", new="whatever", create=True): + imp = self.make_importer(model_class=model.User) self.assertEqual(imp.get_keys(), ["whatever"]) # class may define 'default_keys' - imp = self.make_importer(model_class=model.User) - with patch.object(imp, "default_keys", new=["baz", "foo"]): + with patch.object(mod.Importer, "default_keys", new=["baz", "foo"]): + imp = self.make_importer(model_class=model.User) self.assertEqual(imp.get_keys(), ["baz", "foo"]) def test_process_data(self):