Пример #1
0
def test_list_operations():
    herd = Herd(animals=[Bird('A', 'f'), Worm('X'), Bird('B', 'm'), Worm('Y')])
    assert isinstance(herd.animals, ObjectList)
    assert len(herd.animals) == 4
    assert herd.animals[0] == Bird('A', 'f')
    assert herd.animals[-1] == Worm('Y')
    assert list(herd.animals.instances_of(Worm)) == [Worm('X'), Worm('Y')]
Пример #2
0
def test_normal_list_in_polylist_assign_again():
    herd = Herd()
    assert isinstance(herd.animals, ObjectList)
    herd.animals = [Worm('X'), Worm('B')]
    assert isinstance(herd.animals, ObjectList)
    herd.animals = [Worm('Y'), Worm('A')]
    assert isinstance(herd.animals, ObjectList)
    herd.save()
Пример #3
0
def test_polyfield_without_superclass():
    owner = NonAnimal('Owner')
    contents = ObjectList([NonAnimal('A'), Worm('Wax'), NonAnimal('B')])
    obj = FunnyContainer(owner=owner, contents=contents)
    obj.save()
    loaded = FunnyContainer.objects.get(pk=obj.pk)
    assert loaded.owner == owner
    assert loaded.contents == contents
Пример #4
0
def test_pickled_with_django_serializer():
    """
    Test serializing Django object with pickled field to a stream.

    Note: When serializing objects with Django serialization interface
    (django.core.serializers), the dump method of the serializer_class
    is not called, but serialize method is.  This means that data is
    serialized in the dictionary format, but it is not pickled.
    """
    # Create object
    leader = Bird('Boss', 'f')
    animals = ObjectList([Worm('Joe'), Bird('Andy', 'm')])
    obj = PickledHerd(leader=leader, animals=animals)
    obj.save()

    # Serialize
    objects = PickledHerd.objects.filter(pk=obj.pk)
    json_string = serializers.serialize('json', objects)

    # Check serialized data
    serialized_data = json.loads(json_string)
    assert serialized_data == [{
        'model': 'testapp_polyfield_basic.pickledherd',
        'pk': obj.pk,
        'fields': {
            'animals': [{
                'D': {
                    'name': 'Joe',
                    'age': 0
                },
                'T': 'testapp_polyfield_basic.animals.Worm'
            }, {
                'D': {
                    'name': 'Andy',
                    'sex': 'm'
                },
                'T': 'testapp_polyfield_basic.animals.Bird'
            }],
            'leader': {
                'D': {
                    'name': 'Boss',
                    'sex': 'f'
                },
                'T': 'testapp_polyfield_basic.animals.Bird'
            },
        },
    }]
Пример #5
0
def test_serialization_roundtrip():
    """
    Test serialized data can be deserialized correctly.
    """
    # Create object
    owner = NonAnimal('Owner')
    contents = ObjectList([NonAnimal('A'), Worm('Wax'), NonAnimal('B')])
    obj = FunnyContainer(owner=owner, contents=contents)
    obj.save()

    # Serialize
    objects = FunnyContainer.objects.filter(pk=obj.pk)
    json_string = serializers.serialize('json', objects)

    # Deserialize
    deserialized_objs = list(serializers.deserialize('json', json_string))
    deserialized_obj = deserialized_objs[0].object

    # Check object data
    assert deserialized_obj.owner == owner
    assert deserialized_obj.contents == contents
    assert deserialized_obj.parent is None
    assert isinstance(deserialized_obj.owner, NonAnimal)
    assert isinstance(deserialized_obj.contents[0], NonAnimal)
Пример #6
0
def get_objs():
    check_postgres_support()

    from testapp_polyfield_pg.models import PostgresJsonObject

    # Create the objects
    for i in range(0, 10):
        bird = Bird('Bird ' + chr(ord('A') + i), ['f', 'm'][i % 2])
        PostgresJsonObject.objects.create(obj=bird, bare_json=bird.to_dict())
    for i in range(0, 20):
        worm = Worm('Worm ' + chr(ord('A') + i))
        worm.set_age(i + 1)
        PostgresJsonObject.objects.create(obj=worm, bare_json=worm.to_dict())

    # Test instances
    bird_b = Bird('Bird B', 'm')
    worm_b = Worm.from_dict({'name': 'Worm B', 'age': 2})

    return (PostgresJsonObject.objects, bird_b, worm_b)
Пример #7
0
def test_full_clean():
    herd = FunnyContainer(owner=Worm('X'), contents=ObjectList([Worm('A')]))
    herd.full_clean()  # Doesn't raise
Пример #8
0
def test_polylistfield_roundtrip():
    herd = Herd()
    herd.animals.extend([Bird('Bob', 'm'), Worm('Wally')])
    herd.save()
    assert Herd.objects.get(pk=herd.pk).animals == herd.animals
Пример #9
0
def test_pickled_polylistfield_roundtrip():
    herd = PickledHerd()
    herd.animals = ObjectList([Bird('Bob', 'm'), Worm('Wally')])
    herd.save()
    assert PickledHerd.objects.get(pk=herd.pk).animals == herd.animals
Пример #10
0
def test_normal_list_in_polylist_init():
    herd = Herd(animals=[Worm('X'), Worm('B')])
    assert isinstance(herd.animals, ObjectList)
    herd.save()
Пример #11
0
def test_normal_list_in_polylist_create():
    herd = Herd.objects.create(animals=[Worm('X'), Worm('B')])
    assert isinstance(herd.animals, ObjectList)