예제 #1
0
    def test_list_of_references(self):
        p = ObjectParty()

        homer = Person(name='Homer')
        bart = Person(name='Bart')
        lisa = Person(name='Lisa')

        homer.children = [Reference(bart), Reference(lisa)]

        bart.father = Reference(homer)
        lisa.father = Reference(homer)

        homer_uuid = p.store(homer)
        self.assertEqual(p.count(), 3)

        homerobj = p.get(homer_uuid, how='decoded')
        child0_uuid = homerobj['children'][0]['$ref']
        child1_uuid = homerobj['children'][1]['$ref']

        child0_obj = p.get(child0_uuid, how='decoded')
        child1_obj = p.get(child1_uuid, how='decoded')

        self.assertEqual(child0_obj['name'], "Bart")
        self.assertEqual(child1_obj['name'], "Lisa")
        self.assertEqual(child0_obj['father']['$ref'], homer_uuid)
        self.assertEqual(child1_obj['father']['$ref'], homer_uuid)
예제 #2
0
    def test_implicitly_stored_reference(self):
        p = ObjectParty()

        homer = Person(name='Homer')
        bart = Person(name='Bart')

        homer.son = Reference(bart)

        # bart should get stored implicitly
        homer_uuid = p.store(homer)
        self.assertEqual(p.count(), 2)

        homerobj = p.get(homer_uuid, how='decoded')

        bart_uuid = homerobj['son']['$ref']
        bartobj = p.get(bart_uuid, how='decoded')

        self.assertEqual(bartobj['name'], 'Bart')

        # store bart explicitly
        old_bart_uuid = bart_uuid
        bart_uuid = p.store(bart)
        bartobj = p.get(bart_uuid, how='decoded')
        self.assertEqual(p.count(), 2)

        self.assertEqual(bartobj['name'], 'Bart')
        self.assertEqual(old_bart_uuid, bart_uuid,
            "uuid after explicitly storing implicitly stored object")
예제 #3
0
    def test_mutually_referential(self):
        p = ObjectParty()

        homer = Person(name='Homer')
        marge = Person(name='Marge')

        homer.spouse = Reference(marge)
        marge.spouse = Reference(homer)

        homer_uuid = p.store(homer)
        self.assertEqual(p.count(), 2)

        homerobj = p.get(homer_uuid, how='decoded')
        marge_uuid = homerobj['spouse']['$ref']

        margeobj = p.get(marge_uuid, how='decoded')

        # check that the references are pointing to each other properly
        self.assertEqual(homerobj['spouse']['$ref'], margeobj['id'])
        self.assertEqual(margeobj['spouse']['$ref'], homerobj['id'])
예제 #4
0
    def test_simple(self):
        p = ObjectParty()

        homer = Person(name='Homer')

        homer_uuid = p.store(homer)
        del(homer)
        self.assertEqual(p.count(), 1)

        homer = p.get(homer_uuid)
        self.assertEqual(homer.name, 'Homer')
예제 #5
0
    def test_simple(self):
        p = ObjectParty()

        homer = Person(name='Homer')
        homer_uuid = p.store(homer)

        homerobj = p.get(homer_uuid, how='decoded')

        self.assertEqual(p.count(), 1)
        self.assert_(homerobj.has_key('id'))
        self.assert_(homerobj['name'], 'Homer')
        self.assertEqual(homerobj['__class_name__'], 'test_objectparty.Person')
        self.assertEqual(p.count(), 1)
예제 #6
0
    def test_non_reference_member_object(self):
        p = ObjectParty()
        bart = Person(name='Bart')
        lisa = Person(name='Lisa')

        dog = Dog(name="Santa's Little Helper")
        lisa.dog = bart.dog = dog

        bart_uuid = p.store(bart)

        # lisa not stored yet
        self.assertEqual(p.count(), 2)
        lisa_uuid = p.store(lisa)
        self.assertEqual(p.count(), 3)

        bart_obj = p.get(bart_uuid, how='decoded')
        lisa_obj = p.get(lisa_uuid, how='decoded')
        dog_obj = p.get(bart_obj['dog']['$ref'], how='decoded')

        self.assertEqual(dog_obj['name'], "Santa's Little Helper")
        self.assertEqual(bart_obj['dog']['$ref'], dog_obj['id'])
        self.assertEqual(lisa_obj['dog']['$ref'], dog_obj['id'])