implement delete and related unittest
[releng.git] / utils / test / testapi / opnfv_testapi / resources / scenario_models.py
index b4bb363..73bcbe9 100644 (file)
@@ -2,6 +2,14 @@ import models
 from opnfv_testapi.tornado_swagger import swagger
 
 
+def list_default(value):
+    return value if value else list()
+
+
+def dict_default(value):
+    return value if value else dict()
+
+
 @swagger.model()
 class ScenarioTI(models.ModelBase):
     def __init__(self, date=None, status='silver'):
@@ -11,7 +19,7 @@ class ScenarioTI(models.ModelBase):
 
 @swagger.model()
 class ScenarioScore(models.ModelBase):
-    def __init__(self, date=None, score=''):
+    def __init__(self, date=None, score='0'):
         self.date = date
         self.score = score
 
@@ -27,14 +35,19 @@ class ScenarioProject(models.ModelBase):
         @ptype trust_indicators: C{list} of L{ScenarioTI}
     """
     def __init__(self,
-                 name='',
+                 project='',
                  customs=None,
                  scores=None,
                  trust_indicators=None):
-        self.name = name
-        self.customs = customs
-        self.scores = scores
-        self.trust_indicator = trust_indicators
+        self.project = project
+        self.customs = list_default(customs)
+        self.scores = list_default(scores)
+        self.trust_indicators = list_default(trust_indicators)
+
+    @staticmethod
+    def attr_parser():
+        return {'scores': ScenarioScore,
+                'trust_indicators': ScenarioTI}
 
 
 @swagger.model()
@@ -43,9 +56,13 @@ class ScenarioVersion(models.ModelBase):
         @property projects:
         @ptype projects: C{list} of L{ScenarioProject}
     """
-    def __init__(self, version, projects=None):
+    def __init__(self, version=None, projects=None):
         self.version = version
-        self.projects = projects
+        self.projects = list_default(projects)
+
+    @staticmethod
+    def attr_parser():
+        return {'projects': ScenarioProject}
 
 
 @swagger.model()
@@ -54,10 +71,13 @@ class ScenarioInstaller(models.ModelBase):
         @property versions:
         @ptype versions: C{list} of L{ScenarioVersion}
     """
-    def __init__(self, installer=None, owner=None, versions=None):
+    def __init__(self, installer=None, versions=None):
         self.installer = installer
-        self.owner = owner
-        self.versions = versions if versions else list()
+        self.versions = list_default(versions)
+
+    @staticmethod
+    def attr_parser():
+        return {'versions': ScenarioVersion}
 
 
 @swagger.model()
@@ -68,7 +88,26 @@ class ScenarioCreateRequest(models.ModelBase):
     """
     def __init__(self, name='', installers=None):
         self.name = name
-        self.installers = installers if installers else list()
+        self.installers = list_default(installers)
+
+    @staticmethod
+    def attr_parser():
+        return {'installers': ScenarioInstaller}
+
+
+@swagger.model()
+class ScenarioUpdateRequest(models.ModelBase):
+    """
+        @property field: update field
+        @property op: add/delete/update
+        @property locate: information used to locate the field
+        @property term: new value
+    """
+    def __init__(self, field=None, op=None, locate=None, term=None):
+        self.field = field
+        self.op = op
+        self.locate = dict_default(locate)
+        self.term = dict_default(term)
 
 
 @swagger.model()
@@ -81,7 +120,11 @@ class Scenario(models.ModelBase):
         self.name = name
         self._id = _id
         self.creation_date = create_date
-        self.installers = installers if installers else list()
+        self.installers = list_default(installers)
+
+    @staticmethod
+    def attr_parser():
+        return {'installers': ScenarioInstaller}
 
 
 @swagger.model()