aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilosz Wasilewski <milosz.wasilewski@linaro.org>2014-07-24 15:39:24 +0100
committerMilosz Wasilewski <milosz.wasilewski@linaro.org>2014-07-24 15:39:24 +0100
commitf9c45d914292a6c01e11c45143f2d4f674e86cc5 (patch)
treeec8b29967b8b495887173c89813b79f38635a9f5
parentcf7a2884a2c7005b0285f2b4b3f04363d60b7f8c (diff)
testmanualrunner: fixed bug in creating test run from test plan
Signed-off-by: Milosz Wasilewski <milosz.wasilewski@linaro.org>
-rw-r--r--static/testmanualrunner/main.js51
-rw-r--r--static/testmanualrunner/templates/testrun_execute.html44
-rw-r--r--testmanager/testmanualrunner/models.py31
-rw-r--r--testmanager/testmanualrunner/serializers.py18
-rw-r--r--testmanager/testplanner/serializers.py8
-rw-r--r--testmanager/testrunner/models.py4
6 files changed, 82 insertions, 74 deletions
diff --git a/static/testmanualrunner/main.js b/static/testmanualrunner/main.js
index 9ee24d6..5927e4c 100644
--- a/static/testmanualrunner/main.js
+++ b/static/testmanualrunner/main.js
@@ -21,7 +21,7 @@ function Index($scope, $window, $routeParams, TestRun) {
}
function Execute($scope, $window, $routeParams, $q,
- TestRun, TestPlan, Status, TestRunResult, TestRunResultBug,
+ TestRun, Status, TestRunResult, TestRunResultBug,
Build, DefinitionYaml, Trackers) {
$q.all([
@@ -43,84 +43,75 @@ function Execute($scope, $window, $routeParams, $q,
}).then(function(responses) {
$scope.build = responses[0];
$scope.test_run_results = responses[1];
- $scope.test_plan = $scope.test_run.test_plan;
$scope.test_run_results_by_test_definition = _.indexBy(
$scope.test_run_results,
'test_definition'
);
- if ($scope.test_plan.tests_definitions.length) {
- $scope.set_active_test_definition($scope.test_plan.tests_definitions[0]);
+ if ($scope.test_run_results.length) {
+ $scope.set_active_test_result($scope.test_run_results[0]);
}
})
- $scope.get_status = function(test_definition) {
- var status = $scope.test_run_results_by_test_definition[test_definition.id].status;
- if (status) {
- return $scope.statuses_by_id[status]
+ $scope.get_status = function(test_result) {
+ if (test_result.status) {
+ return $scope.statuses_by_id[test_result.status]
}
return {}
}
- $scope.set_status = function(status, test_definition) {
- var test_run_result = $scope.test_run_results_by_test_definition[test_definition.id];
+ $scope.set_status = function(status, test_result) {
if (status) {
- test_run_result.status = status.id;
+ test_result.status = status.id;
} else {
- test_run_result.status = null;
+ test_result.status = null;
}
- TestRunResult.update({id: test_run_result.id}, test_run_result);
+ TestRunResult.update({id: test_result.id}, test_result);
}
- $scope.set_active_test_definition = function(test_definition) {
- $scope.active_test_definition = test_definition;
- DefinitionYaml.get({id:test_definition.id}, function(data) {
+ $scope.set_active_test_result = function(test_result) {
+ $scope.active_test_result = test_result;
+ DefinitionYaml.get({id:test_result.test_definition.id}, function(data) {
//$scope.yaml = jsyaml.load(data.yaml)
$scope.yaml = data.yaml
});
}
- $scope.add_bug = function(alias, tracker, test_definition) {
- var test_run_result = $scope.test_run_results_by_test_definition[test_definition.id];
+ $scope.add_bug = function(alias, tracker, test_result) {
TestRunResultBug.add(
- {id:test_run_result.id},
+ {id:test_result.id},
{alias:alias, tracker:tracker, action:"add"}).$promise
.then(function(bug) {
missing = true;
- _.each(test_run_result.bugs, function(value, i) {
+ _.each(test_result.bugs, function(value, i) {
if (value.id == bug.id) {
missing = false
}
});
if (missing) {
- test_run_result.bugs.unshift(bug);
+ test_result.bugs.unshift(bug);
}
});
}
- $scope.remove_bug = function(bug, test_definition) {
- var test_run_result = $scope.test_run_results_by_test_definition[test_definition.id];
+ $scope.remove_bug = function(bug, test_result) {
TestRunResultBug.remove(
- {id:test_run_result.id},
+ {id:test_result.id},
{alias:bug.alias, tracker:bug.tracker, action:"remove"}).$promise
.then(function(bug) {
var index = -1;
- _.each(test_run_result.bugs, function(value, i) {
+ _.each(test_result.bugs, function(value, i) {
if (value.id == bug.id) {
index = i;
}
});
if (index != -1) {
- test_run_result.bugs.splice(index, 1);
+ test_result.bugs.splice(index, 1);
}
});
}
- $scope.get_test_run_results = function(test_definition) {
- return $scope.test_run_results_by_test_definition[test_definition.id];
- }
-
$scope.close = function(state) {
$scope.test_run.closed = state;
TestRun.update({id: $scope.test_run.id}, $scope.test_run);
diff --git a/static/testmanualrunner/templates/testrun_execute.html b/static/testmanualrunner/templates/testrun_execute.html
index 509a3d5..06e5015 100644
--- a/static/testmanualrunner/templates/testrun_execute.html
+++ b/static/testmanualrunner/templates/testrun_execute.html
@@ -18,21 +18,21 @@
<div class="col-md-7">
<div class="list-group results closed" ng-show="test_run.closed">
- <a ng-style="{'color': get_status(test_definition).color }"
- ng-repeat-start="test_definition in test_plan.tests_definitions"
- ng-click="set_active_test_definition(test_definition)"
- ng-class="{'disabled': active_test_definition == test_definition}"
+ <a ng-style="{'color': get_status(test_result).color }"
+ ng-repeat-start="test_result in test_run_results"
+ ng-click="set_active_test_result(test_result)"
+ ng-class="{'disabled': active_test_result == test_result}"
class="list-group-item">
- <span class="badge">// get_test_run_results(test_definition).bugs.length //</span>
- // test_definition.name //
+ <span class="badge">// test_result.bugs.length //</span>
+ // test_result.test_definition.name //
</a>
- <div ng-repeat-end class="list-group-item bugs" ng-show="active_test_definition == test_definition && get_test_run_results(test_definition).bugs.length > 0"
- ng-class="{'active-test': active_test_definition == test_definition}">
+ <div ng-repeat-end class="list-group-item bugs" ng-show="active_test_result == test_result && test_result.bugs.length > 0"
+ ng-class="{'active-test': active_test_result == test_result}">
<table class="table">
- <tr ng-repeat="bug in get_test_run_results(test_definition).bugs">
+ <tr ng-repeat="bug in test_result.bugs">
<td><a target="blank" ng-href="//bug.data.weblink//">// bug.alias //</a></td>
<td><a target="blank" ng-href="//bug.data.weblink//">// bug.tracker //</a></td>
<td><a target="blank" ng-href="//bug.data.weblink//"><b>// bug.data.description //</a><b></td>
@@ -43,35 +43,35 @@
</div>
<div class="list-group open" ng-hide="test_run.closed">
- <a ng-style="{'color': get_status(test_definition).color }"
- ng-repeat-start="test_definition in test_plan.tests_definitions"
- ng-click="set_active_test_definition(test_definition)"
- ng-class="{'active': active_test_definition == test_definition}"
+ <a ng-style="{'color': get_status(test_result).color }"
+ ng-repeat-start="test_result in test_run_results"
+ ng-click="set_active_test_result(test_result)"
+ ng-class="{'active': active_test_result == test_result}"
class="list-group-item">
- <span class="badge pull-left">// get_test_run_results(test_definition).bugs.length //</span>
- // test_definition.name //
+ <span class="badge pull-left">// test_result.bugs.length //</span>
+ // test_result.test_definition.name //
<button href="" title="Remove Status" class="pull-right btn btn-default btn-xs"
- ng-click='set_status(null, test_definition)'>
+ ng-click='set_status(null, test_result)'>
<span class="glyphicon glyphicon-question-sign" class="glyphicon"></span>
</button>
<div class="btn-group pull-right">
<button title="// status.name //"
- ng-click='set_status(status, test_definition)'
+ ng-click='set_status(status, test_result)'
ng-style="{'color': status.color}"
class="btn btn-default btn-xs"
- ng-class="{active: get_status(test_definition) == status.id}"
+ ng-class="{active: get_status(test_result) == status.id}"
ng-repeat="status in statuses">
<span ng-class="status.icon" class="glyphicon"></span>
</button>
</div>
</a>
- <div ng-repeat-end class="list-group-item" ng-show="active_test_definition == test_definition" ng-class="{'active-test': active_test_definition == test_definition}">
+ <div ng-repeat-end class="list-group-item" ng-show="active_test_result == test_result" ng-class="{'active-test': active_test_result == test_result}">
- <form class="form-inline" role="form" ng-submit="add_bug(alias, tracker, test_definition)">
+ <form class="form-inline" role="form" ng-submit="add_bug(alias, tracker, test_result)">
<div class="form-group">
<input type="text" ng-model="alias" class="form-control input-sm" placeholder="issue" />
@@ -90,7 +90,7 @@
<table class="table">
<tbody>
- <tr ng-repeat="bug in get_test_run_results(test_definition).bugs">
+ <tr ng-repeat="bug in test_result.bugs">
<td><a ng-href="//bug.data.weblink//">// bug.alias //</a></td>
<td><a ng-href="//bug.data.weblink//">// bug.tracker //</a></td>
<td><a ng-href="//bug.data.weblink//"><b>// bug.data.description //</a><b></td>
@@ -104,7 +104,7 @@
<span style="color:green" class="pull-right glyphicon glyphicon-remove "></span>
</a>
- <a href="" ng-click="remove_bug(bug, test_definition)" ng-show="bug.to_remove" title="remove">
+ <a href="" ng-click="remove_bug(bug, test_result)" ng-show="bug.to_remove" title="remove">
<span style="color:red" class="pull-right glyphicon glyphicon-ok"></span>
</a>
diff --git a/testmanager/testmanualrunner/models.py b/testmanager/testmanualrunner/models.py
index 8125144..ae0d35f 100644
--- a/testmanager/testmanualrunner/models.py
+++ b/testmanager/testmanualrunner/models.py
@@ -23,6 +23,9 @@ class TestRun(models.Model):
return ret
+ def get_run_results(self):
+ return self.results.all()
+
def get_bug_count(self):
b = Bug.objects.filter(testrunresult__in=list(self.results.all()))
return b.distinct().count()
@@ -30,21 +33,23 @@ class TestRun(models.Model):
def update_results(self):
test_definition_restuls_ids = self.results\
.values_list('test_definition', flat=True)
- test_definition_ids = self.test_plan.testplantestdefinition_set\
- .values_list('test_definition_id', flat=True)
+ # execute this code only on initial object creation
+ if not test_definition_restuls_ids:
+ test_definition_ids = self.test_plan.testplantestdefinition_set\
+ .values_list('test_definition_id', flat=True)
- for test_definition_id in set(test_definition_ids) - set(test_definition_restuls_ids):
- TestRunResult.objects.create(
- test_run=self,
- test_definition_id=test_definition_id
- )
+ for test_definition_id in set(test_definition_ids) - set(test_definition_restuls_ids):
+ TestRunResult.objects.create(
+ test_run=self,
+ test_definition_id=test_definition_id
+ )
- for test_definition_id in set(test_definition_restuls_ids) - set(test_definition_ids):
- TestRunResult.objects.get(
- test_run=self,
- test_definition_id=test_definition_id
- ).delete()
+ for test_definition_id in set(test_definition_restuls_ids) - set(test_definition_ids):
+ TestRunResult.objects.get(
+ test_run=self,
+ test_definition_id=test_definition_id
+ ).delete()
def save(self, *args, **kwargs):
super(TestRun, self).save(*args, **kwargs)
@@ -57,6 +62,8 @@ class TestRunResult(models.Model):
test_run = models.ForeignKey('TestRun', related_name='results')
test_definition = models.ForeignKey('testplanner.TestDefinition')
+ # add revision field so the proper data is taken into use
+ #test_definition_revision = models.ForeignKey('testplanner.TestDefinitionRevision')
status = models.ForeignKey('TestStatus', null=True, blank=True)
bugs = models.ManyToManyField('testrunner.Bug', blank=True)
diff --git a/testmanager/testmanualrunner/serializers.py b/testmanager/testmanualrunner/serializers.py
index e445268..4d2f958 100644
--- a/testmanager/testmanualrunner/serializers.py
+++ b/testmanager/testmanualrunner/serializers.py
@@ -19,7 +19,7 @@
from rest_framework import serializers
from testmanager.testmanualrunner import models
from testmanager.testrunner.serializers import BugSerializer
-from testmanager.testplanner.serializers import TestPlanSerializer
+from testmanager.testplanner.serializers import TestPlanSimpleSerializer, TestDefinitionSerializer
class TestRunSimpleSerializer(serializers.ModelSerializer):
@@ -29,20 +29,22 @@ class TestRunSimpleSerializer(serializers.ModelSerializer):
model = models.TestRun
+class TestRunResultSerializer(serializers.ModelSerializer):
+ bugs = BugSerializer(many=True, read_only=True)
+ test_definition = TestDefinitionSerializer(read_only=True)
+ class Meta:
+ model = models.TestRunResult
+
+
class TestRunSerializer(serializers.ModelSerializer):
result = serializers.Field(source='get_results')
- test_plan = TestPlanSerializer()
+ results = TestRunResultSerializer(source='get_run_results')
+ test_plan = TestPlanSimpleSerializer(read_only=True)
class Meta:
model = models.TestRun
-class TestRunResultSerializer(serializers.ModelSerializer):
- bugs = BugSerializer(many=True, read_only=True)
- class Meta:
- model = models.TestRunResult
-
-
class TestStatusSerializer(serializers.ModelSerializer):
class Meta:
model = models.TestStatus
diff --git a/testmanager/testplanner/serializers.py b/testmanager/testplanner/serializers.py
index b53b90b..3351a09 100644
--- a/testmanager/testplanner/serializers.py
+++ b/testmanager/testplanner/serializers.py
@@ -25,6 +25,14 @@ class DeviceSerializer(serializers.ModelSerializer):
model = models.Device
+class TestPlanSimpleSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = models.TestPlan
+
+ owner = serializers.RelatedField()
+ device= serializers.RelatedField()
+
+
class TestPlanSerializer(serializers.ModelSerializer):
class Meta:
model = models.TestPlan
diff --git a/testmanager/testrunner/models.py b/testmanager/testrunner/models.py
index 9b5f8fd..4b5d3d1 100644
--- a/testmanager/testrunner/models.py
+++ b/testmanager/testrunner/models.py
@@ -270,8 +270,8 @@ class Bug(models.Model):
try:
buglist = proxy.Bug.get(query_dict)
for bug in buglist['bugs']:
- if bug['id'] == self.alias:
- self.summary = bug['summry']
+ if str(bug['id']) == self.alias:
+ self.summary = bug['summary']
self.status = bug['status']
self.severity = bug['severity']
except: