def test_lazyness(self): f = declarations.RelatedFactory('factory.declarations.Sequence', x=3) self.assertEqual(None, f.factory) self.assertEqual({'x': 3}, f.defaults) factory_class = f.get_factory() self.assertEqual(declarations.Sequence, factory_class)
class Ordered(base.Factory): class Meta: model = mock.MagicMock() a = declarations.RelatedFactory(Related) z = declarations.RelatedFactory(Related) @helpers.post_generation def a1(*args, **kwargs): postgen_results.append('a1') @helpers.post_generation def zz(*args, **kwargs): postgen_results.append('zz') @helpers.post_generation def aa(*args, **kwargs): postgen_results.append('aa')
def test_deprecate_name(self): with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') f = declarations.RelatedFactory('datetime.date', name='blah') self.assertEqual('blah', f.name) self.assertEqual(1, len(w)) self.assertIn('RelatedFactory', str(w[0].message)) self.assertIn('factory_related_name', str(w[0].message))
def test_cache(self): """Ensure that RelatedFactory tries to import only once.""" orig_date = datetime.date f = declarations.RelatedFactory('datetime.date') self.assertEqual(None, f.factory) factory_class = f.get_factory() self.assertEqual(orig_date, factory_class) try: # Modify original value datetime.date = None # Repeat import factory_class = f.get_factory() self.assertEqual(orig_date, factory_class) finally: # IMPORTANT: restore attribute. datetime.date = orig_date