You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.3 KiB

from unittest import TestCase
from disco.types.base import Model, Field
class _A(Model):
a = Field(int)
b = Field(float)
c = Field(str)
class _B(Model):
a = Field(int)
b = Field(float)
c = Field(str)
class _C(Model):
a = Field(_A)
b = Field(_B)
class TestModel(TestCase):
def test_model_simple_loading(self):
inst = _A(dict(a=1, b=1.1, c='test'))
self.assertEquals(inst.a, 1)
self.assertEquals(inst.b, 1.1)
self.assertEquals(inst.c, 'test')
def test_model_load_into(self):
inst = _A()
_A.load_into(inst, dict(a=1, b=1.1, c='test'))
self.assertEquals(inst.a, 1)
self.assertEquals(inst.b, 1.1)
self.assertEquals(inst.c, 'test')
def test_model_loading_consume(self):
obj = {
'a': {
'a': 1,
'b': 2.2,
'c': '3',
'd': 'wow',
},
'b': {
'a': 3,
'b': 2.2,
'c': '1',
'z': 'wtf'
},
'g': 'lmao'
}
inst = _C()
inst.load(obj, consume=True)
self.assertEquals(inst.a.a, 1)
self.assertEquals(inst.b.c, '1')
self.assertEquals(obj, {'a': {'d': 'wow'}, 'b': {'z': 'wtf'}, 'g': 'lmao'})