def __init__(self, **kwargs): backend_cls = kwargs.pop("backend", None) if backend_cls is None: raise AttributeError("Missing 'backend' parameter.") self.backend = import_class(backend_cls)(self) schema = kwargs.pop("schema", None) if schema is None: raise AttributeError("Missing 'schema' parameter.") elif isinstance(schema, dict): self.schema = DBSchema.from_dict(schema) elif isinstance(schema, str): self.schema = DBSchema.from_json(schema) self.options = kwargs
def test_dbschema_load_from_json(): sample_schema_dict = { "users": { "fields": { 'name': {'type': 'nimoy.fields.TextField', 'required': False}, 'email': {'type': 'nimoy.fields.TextField', 'required': True} }, "indexes": [('email',)], }, "posts": { "fields": { 'id': {'type': 'nimoy.fields.IDField', 'required': True}, 'title': {'type': 'nimoy.fields.TextField', 'required': True}, 'created_at': {'type': 'nimoy.fields.DatetimeField', 'required': True} }, "indexes": [('id',)] } } dbschema = DBSchema.from_json(json_string=json.dumps(sample_schema_dict)) dbschema_json = dbschema.to_json() assert isinstance(dbschema._schemas['users'], DocumentSchema) assert isinstance(dbschema._schemas['posts'], DocumentSchema) assert dbschema_json is not None