diff options
author | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2014-07-24 15:39:24 +0100 |
---|---|---|
committer | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2014-07-24 15:39:24 +0100 |
commit | f9c45d914292a6c01e11c45143f2d4f674e86cc5 (patch) | |
tree | ec8b29967b8b495887173c89813b79f38635a9f5 | |
parent | cf7a2884a2c7005b0285f2b4b3f04363d60b7f8c (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.js | 51 | ||||
-rw-r--r-- | static/testmanualrunner/templates/testrun_execute.html | 44 | ||||
-rw-r--r-- | testmanager/testmanualrunner/models.py | 31 | ||||
-rw-r--r-- | testmanager/testmanualrunner/serializers.py | 18 | ||||
-rw-r--r-- | testmanager/testplanner/serializers.py | 8 | ||||
-rw-r--r-- | testmanager/testrunner/models.py | 4 |
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: |