diff options
author | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2015-03-26 22:53:15 +0100 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2015-03-26 22:53:15 +0100 |
commit | 636ca46951d710a4b9d9fd61ec1da02294806d3d (patch) | |
tree | 23b5bd7bfd7938cccd39d72e829562ca6c515137 /tests | |
parent | 72fd943513b0e516f06c53b13ff35ca814b0a4a0 (diff) | |
download | factory-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.py | 3 | ||||
-rw-r--r-- | tests/test_django.py | 10 | ||||
-rw-r--r-- | tests/test_using.py | 6 |
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 |