Source code for UseCases.libs.JSONDataSerializer.import.add_present_item.Case001.CallCase
"""Import of branches by jsondata.JSONDataSerializer.branch_import().
"""
from __future__ import absolute_import
import unittest
import os
import sys
if 'ujson' in sys.argv:
import ujson as myjson
else:
import json as myjson
import jsonschema
jval = None
from jsondata.JSONDataSerializer import JSONDataSerializer as ConfigData
from jsondata.JSONDataSerializer import MODE_SCHEMA_DRAFT4
# name of application, used for several filenames as MODE_SCHEMA_DRAFT4
_APPNAME = "jsondc"
appname = _APPNAME
#
#######################
#
[docs]class CallUnits(unittest.TestCase):
[docs] def testCase000(self):
"""Create an object by load of JSON data and JSONschema from files, finally validate.
"""
global jval
global sval
global configdata
global appname
global schemafile
datafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('datafile.json')
schemafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('schema.jsd')
kargs = {}
kargs['datafile'] = datafile
kargs['schemafile'] = schemafile
kargs['nodefaultpath'] = True
kargs['nosubdata'] = True
kargs['pathlist'] = os.path.dirname(__file__)
kargs['validator'] = MODE_SCHEMA_DRAFT4
configdata = ConfigData(appname,**kargs)
assert repr(configdata.data) == "{u'phoneNumber': [{u'type': u'home', u'number': u'212 555-1234'}, {u'type': u'office', u'number': u'313 444-555'}, {u'type': u'mobile', u'number': u'777 666-555'}], u'address': {u'city': u'New York', u'streetAddress': u'21 2nd Street', u'houseNumber': 12}}"
pass
[docs] def testCase100(self):
"""Load and import data file, use in-memory schema for validation - ConfigData.BRANCH_REMOVE.
"""
global jval
global sval
global configdata
global appname
global schemafile
# branch to be loaded
datafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('branch0.json')
# partial schema for branch
schema = { 'phoneNumber':configdata.schema['properties']['phoneNumber'] }
kargs = {}
kargs['schema'] = schema
kargs['nodefaultpath'] = True
kargs['nosubdata'] = True
kargs['pathlist'] = os.path.dirname(__file__)
kargs['validator'] = MODE_SCHEMA_DRAFT4
target = configdata.data
configdata.json_import(target, 'phoneNumber', datafile, None, **kargs)
# Expected the nodes within the datafile to be removed.
# No content is checked, just the complete tree is removed.
conf_dat = repr(configdata.data)
conf_dat = """{u'phoneNumber': {u'phoneNumber': [{u'type': u'home', u'number': u'111 222-333'}]}, u'address': {u'city': u'New York', u'streetAddress': u'21 2nd Street', u'houseNumber': 12}}"""
assert repr(configdata.data) == conf_dat
#
#######################
#
if __name__ == '__main__':
unittest.main()