Implement an analizing for a whole test plan
test_run field can accept an ID for test plan.
Code will detect automatically which Id was entered: TestRun's or TestPlan's
The list of analized test will be stored in the TestRun model
and will not be proceeded in the case of reruning TestRun
PRODX-35956
Change-Id: I91b59a6a6abc932e2026b05428d408a5dec31134
diff --git a/testrail_bot/control/models.py b/testrail_bot/control/models.py
index e7bea45..f0e014f 100644
--- a/testrail_bot/control/models.py
+++ b/testrail_bot/control/models.py
@@ -2,15 +2,42 @@
from django.core.files.storage import FileSystemStorage
from django.db import models
-from django import forms
+
+
+class IntegerListField(models.Field):
+ def __init__(self, *args, **kwargs):
+ kwargs['editable'] = False
+ super(IntegerListField, self).__init__(*args, **kwargs)
+
+ def db_type(self, connection):
+ return 'text'
+
+ def from_db_value(self, value, expression, connection):
+ if not value:
+ return []
+ return [int(x) for x in value.split(',')]
+
+ def to_python(self, value):
+ if isinstance(value, list):
+ return value
+ if not value:
+ return []
+ return [int(x) for x in value.split(',')]
+
+ def get_prep_value(self, value):
+ if not value:
+ return ''
+ return ','.join(str(int(x)) for x in value)
class TestRailTestRun(models.Model):
- project_name = models.CharField(max_length=300, default="Mirantis Cloud Platform")
+ project_name = models.CharField(max_length=300,
+ default="Mirantis Cloud Platform")
plan_name = models.CharField(max_length=300, default="[MCP2.0]OSCORE")
run_name = models.CharField(max_length=300, blank=True)
test_pattern = models.CharField(max_length=300, blank=True)
run_id = models.CharField(max_length=300)
+ checked_tests = IntegerListField(default=list())
created_by_id = models.IntegerField(default='109')
filter_func = models.TextField(null=True, blank=True)
ip_filter = models.BooleanField(default=True)
@@ -18,6 +45,25 @@
filter_last_traceback = models.BooleanField(default=False)
timestamp = models.DateField(default=datetime.date.today())
+ @property
+ def text_filters(self):
+ return {
+ "filter_last_traceback": self.filter_last_traceback,
+ "uuid_filter": self.uuid_filter,
+ "ip_filter": self.ip_filter,
+ "filter_func": self.filter_func,
+ }
+
+ @property
+ def testrail_filters(self):
+ return {
+ "created_by_id": self.created_by_id,
+ "created_before": self.timestamp,
+ "run_name": self.run_name,
+ "plan_name": self.plan_name,
+ "test_pattern": self.test_pattern,
+ }
+
fs = FileSystemStorage()