The simplest would be to
class ATestCase(TestCase):
def setUp(self):
super(ATestCase, self).setUp()
self.user = UserFactory()
self.workplace = WorkplaceFactory()
self.workplace.employees_set.add(self.user)
def test_foobar(self):
# how do I add self.user to self.workplace ?
self.assertEqual(self.workplace.employees_set.all(), 1)
Note that you probably want to use create instead of build so that the
objects are saved to the database
On Tuesday, November 20, 2012 11:36:16 AM UTC-6, Craig Blaszczyk wrote:
>
> Hi Guys,
>
> I'm using FactoryBoy in my tests, but I have a model which has
> a ManyToManyField to another model. Does anyone know if it's possible to
> make factoryboy use a factory to represent this relationship?
>
> For reference, here are a sample model and factory:
>
> --models.py
> from django.contrib.auth.models import User
> from django.db.models import ManyToManyField
> class Workplace(models.Model):
> employees = ManyToManyField(User)
>
> --tests.py
> import factory
> from models import Workplace
>
> # This will set the default strategy for all factories that don't define a
> default build strategy
> factory.Factory.default_strategy = factory.BUILD_STRATEGY
>
> class WorkplaceFactory(factory.Factory):
> FACTORY_FOR = Workplace
>
>
> class UserFactory(factory.Factory):
> FACTORY_FOR = User
>
>
> class ATestCase(TestCase):
>
> def setUp(self):
> super(ATestCase, self).setUp()
> self.user = UserFactory.build()
> self.workplace = WorkplaceFactory.build()
>
> def test_foobar(self):
> # how do I add self.user to self.workplace ?
> self.assertEqual(self.workplace.employees_set.all(), 1)
>
>
>
> --Craig
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/django-users/-/PO1F2ERL5CwJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.