コード例 #1
0
    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])
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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