def test_it__jsondict_from_model(): from alchemyjsonschema import AlsoChildrenWalker, SchemaFactory from .models import Group, User schema_factory = SchemaFactory(AlsoChildrenWalker) target = _makeOne(schema_factory, Group) group = Group(name="ravenclaw", color="blue", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) group.users = [ User(name="foo", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) ] jsondict = target.jsondict_from_object(group, verbose=True) import json assert json.dumps(jsondict) assert jsondict == { 'color': 'blue', 'name': 'ravenclaw', 'users': [{ 'name': 'foo', 'pk': None, 'created_at': '2000-01-01T10:00:00+00:00' }], 'pk': None, 'created_at': '2000-01-01T10:00:00+00:00' }
def test_it_complex2(): from alchemyjsonschema import SchemaFactory, AlsoChildrenWalker from alchemyjsonschema.dictify import ModelLookup import alchemyjsonschema.tests.models as models from datetime import datetime factory = SchemaFactory(AlsoChildrenWalker) group_schema = factory(models.Group) created_at = datetime(2000, 1, 1) created_at2 = datetime(2001, 1, 1) user_dict = dict(name="foo", created_at=created_at) # pk is not found group_dict = dict(name="ravenclaw", color="blue", created_at=created_at2, users=[user_dict]) modellookup = ModelLookup(models) result = _callFUT(group_dict, group_schema, modellookup, strict=False) assert isinstance(result, models.Group) assert result.pk is None assert result.name == "ravenclaw" assert result.color == "blue" assert result.created_at == datetime(2001, 1, 1) assert isinstance(result.users[0], models.User) assert result.users[0].name == "foo" assert result.users[0].created_at == created_at assert modellookup.name_stack == []
def test_it__object_from_dict(): from alchemyjsonschema import AlsoChildrenWalker, SchemaFactory from .models import Group, User schema_factory = SchemaFactory(AlsoChildrenWalker) target = _makeOne(schema_factory, Group) group_dict = { 'color': 'blue', 'users': [{ 'created_at': _datetime(2000, 1, 1, 10, 0, 0, 0), 'pk': None, 'name': 'foo' }], 'created_at': _datetime(2000, 1, 1, 10, 0, 0, 0), 'pk': None, 'name': 'ravenclaw' } group = target.object_from_dict(group_dict, strict=False) assert isinstance(group, Group) assert group.color == "blue" assert group.name == "ravenclaw" assert group.pk is None assert group.created_at == _datetime(2000, 1, 1, 10, 0, 0, 0) assert (len(group.users) == 1) and (isinstance(group.users[0], User)) assert group.users[0].name == "foo" assert group.users[0].pk is None assert group.users[0].created_at == _datetime(2000, 1, 1, 10, 0, 0, 0)
def test_it__dict_from_model_object(): from alchemyjsonschema import AlsoChildrenWalker, SchemaFactory from .models import Group, User schema_factory = SchemaFactory(AlsoChildrenWalker) target = _makeOne(schema_factory, Group) group = Group(name="ravenclaw", color="blue", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) group.users = [ User(name="foo", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) ] group_dict = target.dict_from_object(group) assert group_dict == { 'color': 'blue', 'users': [{ 'created_at': _datetime(2000, 1, 1, 10, 0, 0, 0), 'pk': None, 'name': 'foo' }], 'created_at': _datetime(2000, 1, 1, 10, 0, 0, 0), 'pk': None, 'name': 'ravenclaw' }
def test_it__jsondict_from_model(): from alchemyjsonschema import StructuralWalker, SchemaFactory from .models import Group, User schema_factory = SchemaFactory(StructuralWalker) target = _makeOne(schema_factory, Group) group = Group(name="ravenclaw", color="blue", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) group.users = [ User(name="foo", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) ] jsondict = target.jsondict_from_object(group, verbose=True) import json assert json.dumps(jsondict) assert jsondict == { "color": "blue", "name": "ravenclaw", "users": [{ "name": "foo", "pk": None, "created_at": "2000-01-01T10:00:00+00:00" }], "pk": None, "created_at": "2000-01-01T10:00:00+00:00", }
def test_it__dict_from_model_object(): from alchemyjsonschema import StructuralWalker, SchemaFactory from .models import Group, User schema_factory = SchemaFactory(StructuralWalker) target = _makeOne(schema_factory, Group) group = Group(name="ravenclaw", color="blue", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) group.users = [ User(name="foo", created_at=_datetime(2000, 1, 1, 10, 0, 0, 0)) ] group_dict = target.dict_from_object(group) assert group_dict == { "color": "blue", "users": [{ "created_at": _datetime(2000, 1, 1, 10, 0, 0, 0), "pk": None, "name": "foo", }], "created_at": _datetime(2000, 1, 1, 10, 0, 0, 0), "pk": None, "name": "ravenclaw", }
def test_it__object_from_dict(): from alchemyjsonschema import StructuralWalker, SchemaFactory from .models import Group, User schema_factory = SchemaFactory(StructuralWalker) target = _makeOne(schema_factory, Group) group_dict = { "color": "blue", "users": [{ "created_at": _datetime(2000, 1, 1, 10, 0, 0, 0), "pk": None, "name": "foo", }], "created_at": _datetime(2000, 1, 1, 10, 0, 0, 0), "pk": None, "name": "ravenclaw", } group = target.object_from_dict(group_dict, strict=False) assert isinstance(group, Group) assert group.color == "blue" assert group.name == "ravenclaw" assert group.pk is None assert group.created_at == _datetime(2000, 1, 1, 10, 0, 0, 0) assert (len(group.users) == 1) and (isinstance(group.users[0], User)) assert group.users[0].name == "foo" assert group.users[0].pk is None assert group.users[0].created_at == _datetime(2000, 1, 1, 10, 0, 0, 0)
def test_it_nested(): from alchemyjsonschema.tests import models from alchemyjsonschema import SchemaFactory, AlsoChildrenWalker from alchemyjsonschema.dictify import ModelLookup factory = SchemaFactory(AlsoChildrenWalker) a_schema = factory(models.A0) modellookup = ModelLookup(models) params = { "name": "a0", "children": [{ "name": "a00", "children": [{ "name": "a000" }, { "name": "a001" }, { "name": "a002" }] }, { "name": "a10", "children": [{ "name": "a010" }] }] } result = _callFUT(params, a_schema, modellookup, strict=False) assert len(result.children) == 2 assert len(result.children[0].children) == 3 assert len(result.children[1].children) == 1
def test_it_complex__relation_decision(): from alchemyjsonschema import SchemaFactory, StructuralWalker, RelationDesicion from alchemyjsonschema.dictify import ModelLookup import alchemyjsonschema.tests.models as models from datetime import datetime factory = SchemaFactory(StructuralWalker, relation_decision=RelationDesicion()) user_schema = factory(models.User) created_at = datetime(2000, 1, 1) created_at2 = datetime(2001, 1, 1) group_dict = dict(name="ravenclaw", color="blue", created_at=created_at2) user_dict = dict(name="foo", created_at=created_at, group=group_dict) # pk is not found modellookup = ModelLookup(models) result = _callFUT(user_dict, user_schema, modellookup, strict=False) assert isinstance(result, models.User) assert result.pk is None assert result.name == "foo" assert result.created_at == datetime(2000, 1, 1) assert result.group_id is None assert isinstance(result.group, models.Group) assert result.group.name == "ravenclaw" assert result.group.color == "blue" assert result.group.created_at == created_at2 assert modellookup.name_stack == []
def generate_schema_definition(model_name): model = looking_for_class_by_name(model_name) if model: factory = SchemaFactory(SingleModelWalker) return jsonify(factory(model)) else: return jsonify({})
def test_it_complex__partial4(): from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.dictify import ModelLookup import alchemyjsonschema.tests.models as models from datetime import datetime factory = SchemaFactory(StructuralWalker) group_schema = factory(models.Group) created_at2 = datetime(2001, 1, 1) group_dict = dict(name="ravenclaw", color="blue", created_at=created_at2, users=[]) modellookup = ModelLookup(models) result = _callFUT(group_dict, group_schema, modellookup, strict=False) assert isinstance(result, models.Group) assert result.pk is None assert result.name == "ravenclaw" assert result.color == "blue" assert result.created_at == datetime(2001, 1, 1) assert modellookup.name_stack == []
def test_it_complex__fullset_decision(): from alchemyjsonschema import ( SchemaFactory, StructuralWalker, UseForeignKeyIfPossibleDecision, ) from alchemyjsonschema.dictify import ModelLookup import alchemyjsonschema.tests.models as models from datetime import datetime factory = SchemaFactory( StructuralWalker, relation_decision=UseForeignKeyIfPossibleDecision()) user_schema = factory(models.User) created_at = datetime(2000, 1, 1) user_dict = dict(name="foo", created_at=created_at, group_id=1) # pk is not found modellookup = ModelLookup(models) result = _callFUT(user_dict, user_schema, modellookup, strict=False) assert isinstance(result, models.User) assert result.pk is None assert result.name == "foo" assert result.created_at == datetime(2000, 1, 1) assert result.group_id is 1 assert modellookup.name_stack == []
def test_it__dictify(): from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.tests.models import Group, User from datetime import datetime factory = SchemaFactory(StructuralWalker) group_schema = factory(Group) created_at = datetime(2000, 1, 1) users = [ User(name="foo", created_at=created_at), User(name="boo", created_at=created_at), ] group = Group(name="ravenclaw", color="blue", users=users, created_at=created_at) result = _callFUT(group, group_schema) assert result == { "pk": None, "color": "blue", "name": "ravenclaw", "created_at": created_at, "users": [ {"pk": None, "name": "foo", "created_at": created_at}, {"pk": None, "name": "boo", "created_at": created_at}, ], }
def build_transformer(self, walker, decision, layout): walker_factory = detect_walker_factory(walker) relation_decision = detect_decision(decision) schema_factory = SchemaFactory(walker_factory, relation_decision=relation_decision) transformer_factory = detect_transformer(layout) return transformer_factory(schema_factory).transform
def test_it_normalize2(): from alchemyjsonschema import SchemaFactory, AlsoChildrenWalker from alchemyjsonschema.tests.models import User factory = SchemaFactory(AlsoChildrenWalker) user_schema = factory(User) user_dict = { "pk": None, 'name': 'foo', "created_at": None, "group": { "name": "ravenclaw", "color": "blue", "pk": None, "created_at": None } } result = _callFUT2(user_dict, user_schema) assert result == { "pk": None, 'name': 'foo', "created_at": None, "group": { "name": "ravenclaw", "color": "blue", "pk": None, "created_at": None } }
def test_it_update_parent__full(): from alchemyjsonschema.tests import models as m from alchemyjsonschema import SchemaFactory, AlsoChildrenWalker from alchemyjsonschema.dictify import ModelLookup factory = SchemaFactory(AlsoChildrenWalker) a_schema = factory(m.A0) modellookup = ModelLookup(m) a0 = m.A0(pk=1, name="a0", children=[m.A1(pk=1, name="a00"), m.A1(pk=2, name=("a01"))]) assert a0.name == "a0" params = { "pk": 1, "name": "updated", "children": [{ "name": "a00", "pk": 1 }, { "name": "a01", "pk": 2 }] } _callFUT(a0, params, a_schema, modellookup) assert a0.name == "updated"
def test_it_create_child(): from alchemyjsonschema.tests import models as m from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.dictify import ModelLookup factory = SchemaFactory(StructuralWalker) a_schema = factory(m.A0) modellookup = ModelLookup(m) a0 = m.A0( pk=1, name="a0", children=[m.A1(pk=1, name="a00"), m.A1(pk=2, name=("a01"))] ) assert len(a0.children) == 2 params = { "pk": 1, "name": "a0", "children": [ {"name": "new"}, {"name": "a00", "pk": 1}, {"name": "update", "pk": 2}, ], } _callFUT(a0, params, a_schema, modellookup) assert len(a0.children) == 3
def test_it__normalize(): from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.tests.models import Group from datetime import datetime import pytz created_at = datetime(2000, 1, 1, 0, 0, 0, 0, pytz.utc) factory = SchemaFactory(StructuralWalker) group_schema = factory(Group) group_dict = { "name": "ravenclaw", "created_at": "2000-01-01T00:00:00+00:00", "color": "blue", "pk": None, "users": [ {"name": "foo", "created_at": "2000-01-01T00:00:00+00:00", "pk": None}, {"name": "boo", "created_at": "2000-01-01T00:00:00+00:00", "pk": None}, ], } result = _callFUT2(group_dict, group_schema) assert result == { "pk": None, "color": "blue", "name": "ravenclaw", "created_at": created_at, "users": [ {"pk": None, "name": "foo", "created_at": created_at}, {"pk": None, "name": "boo", "created_at": created_at}, ], }
def get_json_schema(data_type): factory = SchemaFactory(StructuralWalker) a_dict = mydict(factory(models.__dict__[data_type])) #_dict = {"properties": {"accession_number": {"title": "accession_number", "type": "string"}, "exp_name": {"title": "exp_name", "type": "string"}, "has_fastq_files": {"title": "has_fastq_files", "type": "boolean"}, "samples": {"title": "samples", "type": "array", "items": {"$ref": "#/definitions/RNASeqDataSet"}}, "_experimentmetadata": {"title": "_experimentmetadata", "type": "array", "items": {"$ref": "#/definitions/ExperimentMetadata"}}}, "type": "object", "title": "RNASeqExperiment", "definitions": {"ExperimentMetadata": {"properties": {"name": {"maxLength": 255, "type": "string", "title": "name"}, "id": {"title": "id", "type": "integer"}, "description": {"title": "description", "type": "string"}, "method": {"title": "method", "type": "array", "items": {"$ref": "#/definitions/Method"}}, "taxon": {"title": "taxon", "type": "array", "items": {"$ref": "#/definitions/Taxon"}}, "experiment_design": {"title": "experiment_design", "type": "array", "items": {"$ref": "#/definitions/ExperimentDesign"}}, "experiment_type": {"title": "experiment_type", "type": "array", "items": {"$ref": "#/definitions/ExperimentType"}}, "resource": {"title": "resource", "type": "array", "items": {"$ref": "#/definitions/Resource"}}}, "type": "object", "title": "ExperimentMetadata", "required": ["id"]}, "Conditions": {"properties": {"id": {"title": "id", "type": "integer"}, "growth_status": {"maxLength": 255, "type": "string", "title": "growth_status"}, "media": {"maxLength": 255, "type": "string", "title": "media"}, "temperature": {"title": "temperature", "type": "number"}, "ph": {"title": "ph", "type": "number"}, "growth_system": {"maxLength": 255, "type": "string", "title": "growth_system"}}, "type": "object", "title": "Conditions", "required": ["id"]}, "Characteristic": {"properties": {"id": {"title": "id", "type": "integer"}, "category": {"maxLength": 255, "type": "string", "title": "category"}, "value": {"maxLength": 255, "type": "string", "title": "value"}}, "type": "object", "title": "Characteristic", "required": ["id"]}, "ReferenceGenome": {"properties": {"namespace": {"maxLength": 255, "type": "string", "title": "namespace"}, "organism_strain": {"maxLength": 255, "type": "string", "title": "organism_strain"}, "download_url": {"maxLength": 255, "type": "string", "title": "download_url"}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}}, "type": "object", "title": "ReferenceGenome", "required": []}, "Reaction": {"properties": {"reaction_id": {"title": "reaction_id", "type": "integer"}, "coefficient": {"title": "coefficient", "type": "number"}, "_is_reactant": {"title": "_is_reactant", "type": "boolean"}, "_is_product": {"title": "_is_product", "type": "boolean"}, "_is_modifier": {"title": "_is_modifier", "type": "boolean"}, "rxn_type": {"maxLength": 255, "type": "string", "title": "rxn_type"}, "compound": {"title": "compound", "type": "array", "items": {"$ref": "#/definitions/Compound"}}, "kinetic_law": {"title": "kinetic_law", "type": "array", "items": {"$ref": "#/definitions/KineticLaw"}}}, "type": "object", "title": "Reaction", "required": ["reaction_id"]}, "ExperimentType": {"properties": {"id": {"title": "id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}}, "type": "object", "title": "ExperimentType", "required": ["id"]}, "Taxon": {"properties": {"ncbi_id": {"title": "ncbi_id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}}, "type": "object", "title": "Taxon", "required": ["ncbi_id"]}, "Metadata": {"properties": {"id": {"title": "id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}, "taxon": {"title": "taxon", "type": "array", "items": {"$ref": "#/definitions/Taxon"}}, "method": {"title": "method", "type": "array", "items": {"$ref": "#/definitions/Method"}}, "cell_line": {"title": "cell_line", "type": "array", "items": {"$ref": "#/definitions/CellLine"}}, "synonym": {"title": "synonym", "type": "array", "items": {"$ref": "#/definitions/Synonym"}}, "conditions": {"title": "conditions", "type": "array", "items": {"$ref": "#/definitions/Conditions"}}, "cell_compartment": {"title": "cell_compartment", "type": "array", "items": {"$ref": "#/definitions/CellCompartment"}}, "characteristic": {"title": "characteristic", "type": "array", "items": {"$ref": "#/definitions/Characteristic"}}, "variable": {"title": "variable", "type": "array", "items": {"$ref": "#/definitions/Variable"}}}, "type": "object", "title": "Metadata", "required": ["id"]}, "Compound": {"properties": {"compound_name": {"maxLength": 255, "type": "string", "title": "compound_name"}, "description": {"maxLength": 255, "type": "string", "title": "description"}, "comment": {"maxLength": 255, "type": "string", "title": "comment"}, "_is_name_ambiguous": {"title": "_is_name_ambiguous", "type": "boolean"}, "structure": {"title": "structure", "type": "array", "items": {"$ref": "#/definitions/Structure"}}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}, "reaction": {"title": "reaction", "type": "array", "items": {"$ref": "#/definitions/Reaction"}}, "concentration": {"title": "concentration", "type": "array", "items": {"$ref": "#/definitions/Concentration"}}}, "type": "object", "title": "Compound", "required": []}, "Synonym": {"properties": {"id": {"title": "id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}}, "type": "object", "title": "Synonym", "required": ["id"]}, "Experiment": {"properties": {"id": {"title": "id", "type": "integer"}}, "type": "object", "title": "Experiment", "required": ["id"]}, "Method": {"properties": {"id": {"title": "id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}, "comments": {"maxLength": 255, "type": "string", "title": "comments"}, "performer": {"maxLength": 255, "type": "string", "title": "performer"}, "hardware": {"maxLength": 255, "type": "string", "title": "hardware"}, "software": {"maxLength": 255, "type": "string", "title": "software"}, "_experimentmetadata": {"title": "_experimentmetadata", "type": "array", "items": {"$ref": "#/definitions/ExperimentMetadata"}}}, "type": "object", "title": "Method", "required": ["id"]}, "CellCompartment": {"properties": {"id": {"title": "id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}, "reaction": {"title": "reaction", "type": "array", "items": {"$ref": "#/definitions/Reaction"}}}, "type": "object", "title": "CellCompartment", "required": ["id"]}, "RNASeqDataSet": {"properties": {"experiment_accession_number": {"title": "experiment_accession_number", "type": "string"}, "sample_name": {"title": "sample_name", "type": "string"}, "assay": {"title": "assay", "type": "string"}, "ensembl_organism_strain": {"title": "ensembl_organism_strain", "type": "string"}, "read_type": {"title": "read_type", "type": "string"}, "full_strain_specificity": {"title": "full_strain_specificity", "type": "boolean"}, "reference_genome": {"title": "reference_genome", "type": "array", "items": {"$ref": "#/definitions/ReferenceGenome"}}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}}, "type": "object", "title": "RNASeqDataSet", "required": []}, "Variable": {"properties": {"id": {"title": "id", "type": "integer"}, "category": {"maxLength": 255, "type": "string", "title": "category"}, "value": {"maxLength": 255, "type": "string", "title": "value"}, "units": {"maxLength": 255, "type": "string", "title": "units"}}, "type": "object", "title": "Variable", "required": ["id"]}, "Structure": {"properties": {"_value_smiles": {"maxLength": 255, "type": "string", "title": "_value_smiles"}, "_value_inchi": {"maxLength": 255, "type": "string", "title": "_value_inchi"}, "_structure_formula_connectivity": {"maxLength": 255, "type": "string", "title": "_structure_formula_connectivity"}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}}, "type": "object", "title": "Structure", "required": []}, "ExperimentDesign": {"properties": {"id": {"title": "id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}}, "type": "object", "title": "ExperimentDesign", "required": ["id"]}, "CellLine": {"properties": {"id": {"title": "id", "type": "integer"}, "name": {"maxLength": 255, "type": "string", "title": "name"}}, "type": "object", "title": "CellLine", "required": ["id"]}, "ProteinSubunit": {"properties": {"subunit_name": {"maxLength": 255, "type": "string", "title": "subunit_name"}, "uniprot_id": {"maxLength": 255, "type": "string", "title": "uniprot_id"}, "entrez_id": {"title": "entrez_id", "type": "integer"}, "ec_number": {"maxLength": 255, "type": "string", "title": "ec_number"}, "gene_name": {"maxLength": 255, "type": "string", "title": "gene_name"}, "gene_syn": {"maxLength": 255, "type": "string", "title": "gene_syn"}, "class_name": {"maxLength": 255, "type": "string", "title": "class_name"}, "family_name": {"maxLength": 255, "type": "string", "title": "family_name"}, "coefficient": {"title": "coefficient", "type": "integer"}, "canonical_sequence": {"maxLength": 255, "type": "string", "title": "canonical_sequence"}, "mass": {"title": "mass", "type": "integer"}, "length": {"title": "length", "type": "integer"}, "molecular_weight": {"title": "molecular_weight", "type": "number"}, "pax_load": {"title": "pax_load", "type": "integer"}, "uniprot_checked": {"title": "uniprot_checked", "type": "boolean"}, "proteincomplex": {"title": "proteincomplex", "type": "array", "items": {"$ref": "#/definitions/ProteinComplex"}}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}}, "type": "object", "title": "ProteinSubunit", "required": []}, "Parameter": {"properties": {"parameter_id": {"title": "parameter_id", "type": "integer"}, "sabio_type": {"title": "sabio_type", "type": "integer"}, "value": {"title": "value", "type": "number"}, "error": {"title": "error", "type": "number"}, "units": {"maxLength": 255, "type": "string", "title": "units"}, "observed_name": {"maxLength": 255, "type": "string", "title": "observed_name"}, "observed_sabio_type": {"title": "observed_sabio_type", "type": "integer"}, "observed_value": {"title": "observed_value", "type": "number"}, "observed_error": {"title": "observed_error", "type": "number"}, "observed_units": {"maxLength": 255, "type": "string", "title": "observed_units"}, "compound": {"title": "compound", "type": "array", "items": {"$ref": "#/definitions/Compound"}}}, "type": "object", "title": "Parameter", "required": ["parameter_id"]}, "ProteinComplex": {"properties": {"complex_name": {"maxLength": 255, "type": "string", "title": "complex_name"}, "go_id": {"maxLength": 255, "type": "string", "title": "go_id"}, "go_dsc": {"maxLength": 255, "type": "string", "title": "go_dsc"}, "funcat_id": {"maxLength": 255, "type": "string", "title": "funcat_id"}, "funcat_dsc": {"maxLength": 255, "type": "string", "title": "funcat_dsc"}, "su_cmt": {"maxLength": 255, "type": "string", "title": "su_cmt"}, "complex_cmt": {"maxLength": 255, "type": "string", "title": "complex_cmt"}, "disease_cmt": {"maxLength": 255, "type": "string", "title": "disease_cmt"}, "class_name": {"maxLength": 255, "type": "string", "title": "class_name"}, "family_name": {"maxLength": 255, "type": "string", "title": "family_name"}, "molecular_weight": {"title": "molecular_weight", "type": "number"}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}, "protein_subunit": {"title": "protein_subunit", "type": "array", "items": {"$ref": "#/definitions/ProteinSubunit"}}, "dna_binding_dataset": {"title": "dna_binding_dataset", "type": "array", "items": {"$ref": "#/definitions/DNABindingDataset"}}}, "type": "object", "title": "ProteinComplex", "required": []}, "Concentration": {"properties": {"value": {"title": "value", "type": "number"}, "error": {"title": "error", "type": "number"}, "units": {"maxLength": 255, "type": "string", "title": "units"}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}}, "type": "object", "title": "Concentration", "required": []}, "DNABindingDataset": {"properties": {"version": {"title": "version", "type": "integer"}, "subunit": {"title": "subunit", "type": "array", "items": {"$ref": "#/definitions/ProteinSubunit"}}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}, "dna_binding_data": {"title": "dna_binding_data", "type": "array", "items": {"$ref": "#/definitions/DNABindingData"}}}, "type": "object", "title": "DNABindingDataset", "required": []}, "Resource": {"properties": {"id": {"title": "id", "type": "integer"}, "namespace": {"maxLength": 255, "type": "string", "title": "namespace"}, "_id": {"maxLength": 255, "type": "string", "title": "_id"}, "release_date": {"maxLength": 255, "type": "string", "title": "release_date"}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}}, "type": "object", "title": "Resource", "required": ["id"]}, "KineticLaw": {"properties": {"enzyme_type": {"maxLength": 255, "type": "string", "title": "enzyme_type"}, "tissue": {"maxLength": 255, "type": "string", "title": "tissue"}, "mechanism": {"maxLength": 255, "type": "string", "title": "mechanism"}, "equation": {"maxLength": 255, "type": "string", "title": "equation"}, "enzyme": {"title": "enzyme", "type": "array", "items": {"$ref": "#/definitions/ProteinComplex"}}, "_metadata": {"title": "_metadata", "type": "array", "items": {"$ref": "#/definitions/Metadata"}}, "parameter": {"title": "parameter", "type": "array", "items": {"$ref": "#/definitions/Parameter"}}}, "type": "object", "title": "KineticLaw", "required": []}, "DNABindingData": {"properties": {"position_id": {"title": "position_id", "type": "integer"}, "position": {"title": "position", "type": "integer"}, "frequency_a": {"title": "frequency_a", "type": "integer"}, "frequency_c": {"title": "frequency_c", "type": "integer"}, "frequency_g": {"title": "frequency_g", "type": "integer"}, "frequency_t": {"title": "frequency_t", "type": "integer"}, "jaspar_id": {"title": "jaspar_id", "type": "integer"}}, "type": "object", "title": "DNABindingData", "required": ["position_id"]}}} a_dict = title_properties(a_dict) a_dict = listify_properties("RNASeqExperiment", a_dict) a_dict = remove_id(a_dict) if 'definitions' in a_dict: for definition in a_dict['definitions']: #print(a_dict['definitions'][definition]) #print(remove_id(a_dict['definitions'][definition])) a_dict['definitions'][definition]["title"] = definition a_dict['definitions'][definition] = title_properties( a_dict['definitions'][definition]) a_dict['definitions'][definition] = listify_properties( definition, a_dict['definitions'][definition]) a_dict['definitions'][definition] = remove_id( a_dict['definitions'][definition]) #print(a_dict['definitions'][definition]) a_dict = mydict(a_dict) return a_dict
def test_it__prepare(): from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.tests.models import Group factory = SchemaFactory(StructuralWalker) group_schema = factory(Group) group_dict = { "name": "ravenclaw", "created_at": "2000-01-01T00:00:00+00:00", "color": "blue", "pk": 1, "users": [ {"name": "foo", "created_at": "2000-01-01T00:00:00+00:00", "pk": 12}, {"name": "boo", "created_at": "2000-01-01T00:00:00+00:00", "pk": 13}, ], } result = _callFUT3(group_dict, group_schema) assert result == { "name": "ravenclaw", "created_at": "2000-01-01T00:00:00+00:00", "color": "blue", "pk": 1, "users": [ {"name": "foo", "created_at": "2000-01-01T00:00:00+00:00", "pk": 12}, {"name": "boo", "created_at": "2000-01-01T00:00:00+00:00", "pk": 13}, ], }
def test_it_normalize__partial2(): from alchemyjsonschema import SchemaFactory, AlsoChildrenWalker from alchemyjsonschema.tests.models import User factory = SchemaFactory(AlsoChildrenWalker) user_schema = factory(User) user_dict = {'name': 'foo'} result = _callFUT2(user_dict, user_schema) assert result == {'name': 'foo', 'group': None}
def test_it_normalize__partial(): from alchemyjsonschema import SchemaFactory, AlsoChildrenWalker from alchemyjsonschema.tests.models import Group factory = SchemaFactory(AlsoChildrenWalker) group_schema = factory(Group) group_dict = {'name': 'ravenclaw', 'color': 'blue'} result = _callFUT2(group_dict, group_schema) assert result == {'color': 'blue', 'name': 'ravenclaw', 'users': []}
def test_it__prepare_partial(): from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.tests.models import Group factory = SchemaFactory(StructuralWalker) group_schema = factory(Group) group_dict = {"name": "ravenclaw", "color": "blue", "pk": 1} result = _callFUT3(group_dict, group_schema) assert result == {"name": "ravenclaw", "pk": 1, "color": "blue", "users": []}
def test_it_normalize__partial2(): from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.tests.models import User factory = SchemaFactory(StructuralWalker) user_schema = factory(User) user_dict = {"name": "foo"} result = _callFUT2(user_dict, user_schema) assert result == {"name": "foo", "group": None}
def test_no_required(): from alchemyjsonschema import StructuralWalker, SchemaFactory from alchemyjsonschema.dictify import ModelLookup from alchemyjsonschema.tests import models schema_factory = SchemaFactory(StructuralWalker) schema = schema_factory(models.MyModel, excludes=["id"]) modellookup = ModelLookup(models) params = {"name": "foo", "value": 1} _callFUT(params, schema, modellookup)
def test_it__normalize(): from alchemyjsonschema import SchemaFactory, AlsoChildrenWalker from alchemyjsonschema.tests.models import Group from datetime import datetime import pytz created_at = datetime(2000, 1, 1, 0, 0, 0, 0, pytz.utc) factory = SchemaFactory(AlsoChildrenWalker) group_schema = factory(Group) group_dict = { 'name': 'ravenclaw', 'created_at': '2000-01-01T00:00:00+00:00', 'color': 'blue', 'pk': None, 'users': [{ 'name': 'foo', 'created_at': '2000-01-01T00:00:00+00:00', 'pk': None }, { 'name': 'boo', 'created_at': '2000-01-01T00:00:00+00:00', 'pk': None }] } result = _callFUT2(group_dict, group_schema) assert result == { 'pk': None, 'color': 'blue', 'name': 'ravenclaw', "created_at": created_at, 'users': [{ 'pk': None, 'name': 'foo', "created_at": created_at }, { 'pk': None, 'name': 'boo', "created_at": created_at }] }
def test_it_reverse_update(): from alchemyjsonschema.tests import models as m from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.dictify import ModelLookup factory = SchemaFactory(StructuralWalker) a_schema = factory(m.A1) modellookup = ModelLookup(m) a0 = m.A0(pk=1, name="a0", children=[m.A1(pk=1, name="a00"), m.A1(pk=2, name=("a01"))]) assert a0.name == "a0" params = {"pk": 1, "name": "a00", "parent": {"name": "updated", "pk": 1}} _callFUT(a0.children[0], params, a_schema, modellookup) assert a0.name == "updated"
def test_it__prepare_partial(): from alchemyjsonschema import SchemaFactory, StructuralWalker from alchemyjsonschema.tests.models import Group factory = SchemaFactory(StructuralWalker) group_schema = factory(Group) group_dict = {'name': 'ravenclaw', 'color': 'blue', 'pk': 1} result = _callFUT3(group_dict, group_schema) assert result == { 'name': 'ravenclaw', 'pk': 1, 'color': 'blue', 'users': [] }
def test_it_update_parent__onlyone(): from alchemyjsonschema.tests import models as m from alchemyjsonschema import SchemaFactory, NoForeignKeyWalker from alchemyjsonschema.dictify import ModelLookup factory = SchemaFactory(NoForeignKeyWalker) a_schema = factory(m.A0) modellookup = ModelLookup(m) a0 = m.A0(pk=1, name="a0", children=[m.A1(pk=1, name="a00"), m.A1(pk=2, name=("a01"))]) assert a0.name == "a0" params = {"pk": 1, "name": "updated"} _callFUT(a0, params, a_schema, modellookup) assert a0.name == "updated" assert len(a0.children) == 2
def test_it__strict_true__then__required_are_notfound__error_raised(): from alchemyjsonschema import SchemaFactory, ForeignKeyWalker, InvalidStatus from alchemyjsonschema.dictify import ModelLookup import alchemyjsonschema.tests.models as models from datetime import datetime import pytest factory = SchemaFactory(ForeignKeyWalker) user_schema = factory(models.User) created_at = datetime(2000, 1, 1) user_dict = dict(name="foo", created_at=created_at) # pk is not found modellookup = ModelLookup(models) with pytest.raises(InvalidStatus): _callFUT(user_dict, user_schema, modellookup, strict=True)