def fixture_model(self): model = Model() model.entities = [ Entity('Company', attributes=[ StringAttribute('name'), ], relationships=[ Relationship('jobs', 'Job', is_optional=True, is_ordered=True), ]), Entity('Job', attributes=[ BooleanAttribute('manager', default_value=False), FloatAttribute('salary', default_value=0.0), ], relationships=[ Relationship('company', 'Company', is_optional=True, maximum_count=1), Relationship('person', 'Person', is_optional=True, maximum_count=1), ]), Entity('Person', attributes=[ StringAttribute('firstName', is_optional=True), StringAttribute('lastName', is_optional=True), StringAttribute('username', is_indexed=True), ], relationships=[ Relationship('job', 'Job', is_optional=True, maximum_count=1), ]), ] return model
def parse(cls, document): models = document.getElementsByTagName('model') if len(models) != 1: raise Exception('Invalid model file') model_document = models[0] model = Model() entities = [] for entity_document in model_document.getElementsByTagName('entity'): entity = EntityParser.parse(entity_document) entities.append(entity) model.entities = entities for entity in entities: for relationship in entity.relationships: entity = model.find_entity(relationship.destination_entity) relationship.destination_entity_class_name = entity.represented_class_name return model
def test_creation(self): model = Model()