def test_association_many_to_one(self): Factory.define(Vine, tomatoes=Factory.many( Factory.association(Tomato, color="red"), Factory.association(Tomato, color="green") )) Factory.define(Tomato) v = Factory(Vine) tomato = v.tomatoes[0] assert_is_instance(tomato, Tomato) assert_true(tomato is tomato) assert_equals("red", tomato.color) tomato = v.tomatoes[1] assert_is_instance(tomato, Tomato) assert_true(tomato is tomato) assert_equals("green", tomato.color) assert_false(tomato is Factory(Vine).tomatoes[1])
def test_association_one_to_many(self): # note the implicit laziness test via declaration order Factory.define(Tomato, vine=Factory.association(Vine)) Factory.define(Vine) t = Factory(Tomato) assert_is_instance(t.vine, Vine) assert_true(t.vine is t.vine) # make sure we only make one assert_false(t.vine is Factory(Tomato).vine)
def test_extend_factory_with_differing_associations(self): Factory.define(Tomato, color=None) Factory.define(Vine, tomatoes=Factory.many( Factory.association(Tomato), Factory.association(Tomato) )) Factory.extend(Vine) ( "with special tomatoes", tomatoes=Factory.many( Factory.association(Tomato, color="red"), Factory.association(Tomato, color="green") ) ) pure_vine = Factory(Vine) rich_vine = Factory(Vine, "with special tomatoes") assert_equals("green", rich_vine.tomatoes[1].color) assert_equals(None, pure_vine.tomatoes[1].color)
def test_recursive_association(self): Factory.define(Tomato, vine=Factory.association(Vine)) Factory.define(Vine, tomato=Factory.association(Tomato)) t=Factory(Tomato) # will error out if we're eagerly loading