summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRaphaël Barrois <raphael.barrois@polytechnique.org>2015-03-26 22:53:15 +0100
committerRaphaël Barrois <raphael.barrois@polytechnique.org>2015-03-26 22:53:15 +0100
commit636ca46951d710a4b9d9fd61ec1da02294806d3d (patch)
tree23b5bd7bfd7938cccd39d72e829562ca6c515137 /tests
parent72fd943513b0e516f06c53b13ff35ca814b0a4a0 (diff)
downloadfactory-boy-636ca46951d710a4b9d9fd61ec1da02294806d3d.tar
factory-boy-636ca46951d710a4b9d9fd61ec1da02294806d3d.tar.gz
Add support for multidb with Django (Closes #171).
The ``factory.django.DjangoModelFactory`` now takes an extra option: ``` class MyFactory(factory.django.DjangoModelFactory): class Meta: model = models.MyModel database = 'replica' ``` This will create all instances of ``models.Model`` in the ``'replica'`` database.
Diffstat (limited to 'tests')
-rw-r--r--tests/djapp/settings.py3
-rw-r--r--tests/test_django.py10
-rw-r--r--tests/test_using.py6
3 files changed, 19 insertions, 0 deletions
diff --git a/tests/djapp/settings.py b/tests/djapp/settings.py
index c051faf..18e43dd 100644
--- a/tests/djapp/settings.py
+++ b/tests/djapp/settings.py
@@ -34,6 +34,9 @@ DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
},
+ 'replica': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ },
}
diff --git a/tests/test_django.py b/tests/test_django.py
index 4653305..a8f1f77 100644
--- a/tests/test_django.py
+++ b/tests/test_django.py
@@ -165,6 +165,16 @@ class ModelTests(django_test.TestCase):
self.assertRaises(factory.FactoryError, UnsetModelFactory.create)
+ def test_cross_database(self):
+ class OtherDBFactory(factory.django.DjangoModelFactory):
+ class Meta:
+ model = models.StandardModel
+ database = 'replica'
+
+ obj = OtherDBFactory()
+ self.assertFalse(models.StandardModel.objects.exists())
+ self.assertEqual(obj, models.StandardModel.objects.using('replica').get())
+
@unittest.skipIf(django is None, "Django not installed.")
class DjangoPkSequenceTestCase(django_test.TestCase):
diff --git a/tests/test_using.py b/tests/test_using.py
index 7318f2e..1d7977f 100644
--- a/tests/test_using.py
+++ b/tests/test_using.py
@@ -69,6 +69,9 @@ class FakeModel(object):
def order_by(self, *args, **kwargs):
return [1]
+ def using(self, db):
+ return self
+
objects = FakeModelManager()
def __init__(self, **kwargs):
@@ -1490,6 +1493,9 @@ class BetterFakeModelManager(object):
instance.id = 2
return instance, True
+ def using(self, db):
+ return self
+
class BetterFakeModel(object):
@classmethod