Create hierarchy levels with environment
This commit is contained in:
parent
3bee93dc4f
commit
92c2e02ef7
|
@ -111,6 +111,7 @@ class Component(flask_restful.Resource):
|
|||
environment_fields = {
|
||||
'id': fields.Integer,
|
||||
'components': fields.List(fields.Integer(attribute='id')),
|
||||
'hierarchy_levels': fields.List(fields.String(attribute='name')),
|
||||
}
|
||||
|
||||
|
||||
|
@ -127,7 +128,15 @@ class Environment(flask_restful.Resource):
|
|||
def post(self):
|
||||
component_ids = flask.request.json['components']
|
||||
components = [db.Component.query.get_or_404(i) for i in component_ids]
|
||||
environment = db.Environment(components=components)
|
||||
|
||||
hierarchy_levels = []
|
||||
level = None
|
||||
for name in flask.request.json['hierarchy_levels']:
|
||||
level = db.EnvironmentHierarchyLevel(name=name, parent=level)
|
||||
hierarchy_levels.append(level)
|
||||
|
||||
environment = db.Environment(components=components,
|
||||
hierarchy_levels=hierarchy_levels)
|
||||
db.db.session.add(environment)
|
||||
db.db.session.commit()
|
||||
return environment, 201
|
||||
|
|
|
@ -77,6 +77,23 @@ class Environment(db.Model):
|
|||
components = db.relationship(Component, secondary=_environment_components)
|
||||
|
||||
|
||||
class EnvironmentHierarchyLevel(db.Model):
|
||||
id = pk()
|
||||
environment_id = fk(Environment)
|
||||
environment = db.relationship(Environment, backref='hierarchy_levels')
|
||||
name = db.Column(db.String(128))
|
||||
parent_id = db.Column(pk_type,
|
||||
db.ForeignKey('environment_hierarchy_level.id'))
|
||||
parent = db.relationship('EnvironmentHierarchyLevel',
|
||||
backref=db.backref('child', uselist=False),
|
||||
remote_side=[id])
|
||||
|
||||
__table_args__ = (
|
||||
db.UniqueConstraint(environment_id, name),
|
||||
db.UniqueConstraint(environment_id, parent_id),
|
||||
)
|
||||
|
||||
|
||||
class EnvironmentSchemaValues(db.Model):
|
||||
environment_id = fk(Environment, primary_key=True)
|
||||
schema_id = fk(Schema, primary_key=True)
|
||||
|
|
|
@ -68,6 +68,12 @@ class TestApp(base.TestCase):
|
|||
)
|
||||
db.db.session.add(component)
|
||||
environment = db.Environment(id=9, components=[component])
|
||||
hierarchy_levels = [
|
||||
db.EnvironmentHierarchyLevel(name="lvl1"),
|
||||
db.EnvironmentHierarchyLevel(name="lvl2"),
|
||||
]
|
||||
hierarchy_levels[1].parent = hierarchy_levels[0]
|
||||
environment.hierarchy_levels = hierarchy_levels
|
||||
db.db.session.add(environment)
|
||||
db.db.session.commit()
|
||||
|
||||
|
@ -200,13 +206,15 @@ class TestApp(base.TestCase):
|
|||
self._fixture()
|
||||
res = self.client.get('/environments')
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertEqual(res.json, [{'id': 9, 'components': [7]}])
|
||||
self.assertEqual(res.json, [{'id': 9, 'components': [7],
|
||||
'hierarchy_levels': ['lvl1', 'lvl2']}])
|
||||
|
||||
def test_get_one_environment(self):
|
||||
self._fixture()
|
||||
res = self.client.get('/environments/9')
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertEqual(res.json, {'id': 9, 'components': [7]})
|
||||
self.assertEqual(res.json, {'id': 9, 'components': [7],
|
||||
'hierarchy_levels': ['lvl1', 'lvl2']})
|
||||
|
||||
def test_get_one_environment_404(self):
|
||||
res = self.client.get('/environments/9')
|
||||
|
@ -214,13 +222,16 @@ class TestApp(base.TestCase):
|
|||
|
||||
def test_post_environment(self):
|
||||
self._fixture()
|
||||
res = self.client.post('/environments', data={'components': [7]})
|
||||
json = {'components': [7], 'hierarchy_levels': ['lvla', 'lvlb']}
|
||||
res = self.client.post('/environments', data=json)
|
||||
self.assertEqual(res.status_code, 201)
|
||||
self.assertEqual(res.json, {'id': 10, 'components': [7]})
|
||||
json['id'] = 10
|
||||
self.assertEqual(res.json, json)
|
||||
|
||||
def test_post_environment_404(self):
|
||||
self._fixture()
|
||||
res = self.client.post('/environments', data={'components': [8]})
|
||||
json = {'components': [8], 'hierarchy_levels': ['lvla', 'lvlb']}
|
||||
res = self.client.post('/environments', data=json)
|
||||
self.assertEqual(res.status_code, 404)
|
||||
|
||||
def test_delete_environment(self):
|
||||
|
|
Loading…
Reference in New Issue