def test_model_builder_data_keys_with_special_characters(): data = { 'foo*bar': 'foobar', 'baz/qux': 'bazqux', } birl = model_builder(data) assert birl.foo_bar == 'foobar' assert birl.baz_qux == 'bazqux'
def test_simple_preparer_lookup_data_with_object(simple_preparer, payload): obj = model_builder(payload) assert simple_preparer.lookup_data('', obj) == obj assert simple_preparer.lookup_data('type', obj) == obj.type assert simple_preparer.lookup_data('attributes.title', obj) == obj.attributes.title assert simple_preparer.lookup_data('relationships.author.data.id', obj) == obj.relationships.author.data.id
def test_model_builder_class_name(): data = { 'foo': 'foo', 'bar': 'bar', } birl = model_builder(data, class_name='Birl', recurse=False) assert birl.foo == 'foo' assert birl.bar == 'bar' assert type(birl).__name__ == 'Birl'
def test_model_builder_custom_class(): data = { 'foo*bar': 'foobar', 'baz/qux': 'bazqux', } cls = model_class_builder('Model', data) birl = model_builder(data, cls=cls) assert isinstance(birl, cls)
def test_model_builder_ignore_private_attrs(): data = { 'foo': 'foo', '_bar': 'bar', '__nope': 'nope', } birl = model_builder(data) assert birl.foo == 'foo' assert birl._bar == 'bar' assert hasattr(birl, '__nope') is False
def test_simple_preparer_prepare(simple_preparer, payload): expected = { 'type': 'articles', 'id': '1', 'title': 'JSON API paints my bikeshed!', 'body': 'The shortest article. Ever.', 'relationship_id': '42' } assert simple_preparer.prepare(payload) == expected assert simple_preparer.prepare(model_builder(payload)) == expected
def test_model_builder_recurse_false(): my_model = {'baz': 'baz', 'qux': 'qux'} data = { 'foo': 'foo', 'bar': 'bar', 'my_model': my_model, } birl = model_builder(data, recurse=False) assert birl.foo == 'foo' assert birl.bar == 'bar' assert birl.my_model == my_model
def test_preparer_with_subpreparer_prepare(preparer_with_subpreparer, payload): expected = { 'type': 'articles', 'id': '1', 'attrs': { 'title': 'JSON API paints my bikeshed!', 'body': 'The shortest article. Ever.' } } assert preparer_with_subpreparer.prepare(payload) == expected assert preparer_with_subpreparer.prepare( model_builder(payload)) == expected
def test_model_builder_recurse(): my_model = {'baz': 'baz', 'qux': 'qux'} data = { 'foo': 'foo', 'bar': 'bar', 'my_model': my_model, } birl = model_builder(data) assert birl.foo == 'foo' assert birl.bar == 'bar' assert birl.my_model.baz == 'baz' assert birl.my_model.qux == 'qux' assert type(birl.my_model).__name__ == 'MyModel' assert type(birl.my_model) not in (Model, type(birl))
def test_model_builder_recurse_iterable(iterable_class): models = iterable_class([{'baz': 'baz', 'qux': 'qux'}, 1, 2]) data = { 'foo': 'foo', 'bar': 'bar', 'models': models, } birl = model_builder(data) assert birl.foo == 'foo' assert birl.bar == 'bar' assert birl.models[0].baz == 'baz' assert birl.models[0].qux == 'qux' assert birl.models[1] == 1 assert birl.models[2] == 2 assert isinstance(birl.models[0], Model) assert type(birl.models[0]).__name__ == 'NamelessModel'
def test_preparer_with_collectionsubpreparer_prepare( preparer_with_collectionsubpreparer, payload): expected = { 'type': 'articles', 'id': '1', 'tag_list': [ { 'tag_name': 'tag-1' }, { 'tag_name': 'tag-2' }, { 'tag_name': 'tag-3' }, ] } assert preparer_with_collectionsubpreparer.prepare(payload) == expected assert preparer_with_collectionsubpreparer.prepare( model_builder(payload)) == expected
def as_obj(self) -> Model: result = self.as_dict() return model_builder(result, class_name=self.response_name)
def as_obj(self): result = self.as_dict() return model_builder(result)
def test_simple_preparer_without_fields_prepare(simple_preparer_without_fields, payload): assert simple_preparer_without_fields.prepare(payload) == payload assert simple_preparer_without_fields.prepare( model_builder(payload)) == payload