def test_resource_object_constructor__with_relationships(self): ItemResponse = JsonApiResponse('item', ItemModel) item = ItemModel(name='pear', price=1.2, quantity=10) document = ItemResponse.resource_object(id='abc123', attributes=item, relationships={ 'sold_at': { 'data': { 'type': 'store', 'id': 'def456' } } }).dict() assert document == { 'id': 'abc123', 'type': 'item', 'attributes': { 'name': 'pear', 'price': 1.2, 'quantity': 10, }, 'relationships': { 'sold_at': { 'data': { 'id': 'def456', 'type': 'store', 'meta': None, }, 'links': None, 'meta': None, } } }
def test_resource_object_constructor__with_list_response(self): ItemResponse = JsonApiResponse('item', ItemModel, use_list=True) item = ItemModel(name='pear', price=1.2, quantity=10) document = ItemResponse.resource_object(id='abc123', attributes=item).dict() assert document == { 'id': 'abc123', 'type': 'item', 'attributes': { 'name': 'pear', 'price': 1.2, 'quantity': 10, }, 'relationships': None }
def test_response_constructed_with_resource_object(self): ItemResponse = JsonApiResponse('item', ItemModel) item = ItemModel(name='pear', price=1.2, quantity=10) data = ItemResponse.resource_object(id='abc123', attributes=item).dict() assert ItemResponse(data=data).dict() == { 'data': { 'id': 'abc123', 'type': 'item', 'attributes': { 'name': 'pear', 'price': 1.2, 'quantity': 10, }, } }
def test_resource_object_constructor__with_invalid_links(self): ItemResponse = JsonApiResponse('item', ItemModel) item = ItemModel(name='pear', price=1.2, quantity=10) with raises(ValidationError) as e: ItemResponse.resource_object( id='abc123', attributes=item, links='/items/abc123', ) assert e.value.errors() == [ { 'loc': ('links', ), 'msg': 'value is not a valid dict', 'type': 'type_error.dict' }, ]
def test_resource_object_constructor__with_invalid_relationship(self): ItemResponse = JsonApiResponse('item', ItemModel) item = ItemModel(name='pear', price=1.2, quantity=10) with raises(ValidationError) as e: ItemResponse.resource_object( id='abc123', attributes=item, relationships={'sold_at': { 'meta': 'rofl' }}) assert e.value.errors() == [ { 'loc': ('relationships', 'sold_at', 'meta'), 'msg': 'value is not a valid dict', 'type': 'type_error.dict' }, ]