summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Meyer <carl@oddbird.net>2012-01-12 09:01:46 -0700
committerCarl Meyer <carl@oddbird.net>2012-01-12 09:01:46 -0700
commit99ffa8c49df4baa9681d649ce0b19b6d3b5ad99a (patch)
treef0395eaea6f8b882abc3fda55f9bbf71176968f4
parent8aec45386aaf410a36bdf57ebf24cfe9f1fdf3b2 (diff)
downloadfactory-boy-99ffa8c49df4baa9681d649ce0b19b6d3b5ad99a.tar
factory-boy-99ffa8c49df4baa9681d649ce0b19b6d3b5ad99a.tar.gz
Added support for staticmethods on factories as well.
-rw-r--r--factory/containers.py2
-rw-r--r--tests/test_containers.py8
-rw-r--r--tests/test_using.py8
3 files changed, 16 insertions, 2 deletions
diff --git a/factory/containers.py b/factory/containers.py
index 847b2c0..68e1e9f 100644
--- a/factory/containers.py
+++ b/factory/containers.py
@@ -112,7 +112,7 @@ class DeclarationDict(dict):
is private (name starts with '_') or a classmethod or staticmethod.
"""
- if isinstance(value, classmethod):
+ if isinstance(value, (classmethod, staticmethod)):
return False
elif isinstance(value, declarations.OrderedDeclaration):
return True
diff --git a/tests/test_containers.py b/tests/test_containers.py
index b4c5c52..effb060 100644
--- a/tests/test_containers.py
+++ b/tests/test_containers.py
@@ -159,7 +159,13 @@ class DeclarationDictTestCase(unittest.TestCase):
def test_update_with_public(self):
d = containers.DeclarationDict()
- d.update_with_public({'one': 1, '_two': 2, 'three': 3, 'four': classmethod(lambda c: 1)})
+ d.update_with_public({
+ 'one': 1,
+ '_two': 2,
+ 'three': 3,
+ 'classmethod': classmethod(lambda c: 1),
+ 'staticmethod': staticmethod(lambda: 1),
+ })
self.assertEqual(set(['one', 'three']), set(d))
self.assertEqual(set([1, 3]), set(d.values()))
diff --git a/tests/test_using.py b/tests/test_using.py
index 4256cc3..d1e4262 100644
--- a/tests/test_using.py
+++ b/tests/test_using.py
@@ -288,6 +288,14 @@ class FactoryTestCase(unittest.TestCase):
self.assertEqual(TestObjectFactory.alt_create(foo=1), {"foo": 1})
+ def testStaticMethodAccessible(self):
+ class TestObjectFactory(factory.Factory):
+ @staticmethod
+ def alt_create(**kwargs):
+ return kwargs
+
+ self.assertEqual(TestObjectFactory.alt_create(foo=1), {"foo": 1})
+
class SubFactoryTestCase(unittest.TestCase):
def testSubFactory(self):