Merge pull request #156 from taigaio/bug/1552/us-points-undefined-when-tasks-points-are-undefined

User story points are undefined if the task points are undefined
remotes/origin/enhancement/email-actions
Jesús Espino 2014-11-18 13:48:37 +01:00
commit 80445d7afd
2 changed files with 40 additions and 3 deletions

View File

@ -126,9 +126,15 @@ class UserStory(OCCModelMixin, WatchedModelMixin, BlockedMixin, TaggedMixin, mod
return self.role_points
def get_total_points(self):
not_null_role_points = self.role_points.select_related("points").\
exclude(points__value__isnull=True)
#If we only have None values the sum should be None
if not not_null_role_points:
return None
total = 0.0
for rp in self.role_points.select_related("points"):
if rp.points.value:
total += rp.points.value
for rp in not_null_role_points:
total += rp.points.value
return total

View File

@ -200,3 +200,34 @@ def test_archived_filter(client):
data = {"is_archived": 1}
response = client.get(url, data)
assert len(json.loads(response.content)) == 1
def test_get_total_points(client):
project = f.ProjectFactory.create()
role1 = f.RoleFactory.create(project=project)
role2 = f.RoleFactory.create(project=project)
points1 = f.PointsFactory.create(project=project, value=None)
points2 = f.PointsFactory.create(project=project, value=1)
points3 = f.PointsFactory.create(project=project, value=2)
us_with_points = f.UserStoryFactory.create(project=project)
us_with_points.role_points.all().delete()
f.RolePointsFactory.create(user_story=us_with_points, role=role1, points=points2)
f.RolePointsFactory.create(user_story=us_with_points, role=role2, points=points3)
assert us_with_points.get_total_points() == 3.0
us_without_points = f.UserStoryFactory.create(project=project)
us_without_points.role_points.all().delete()
f.RolePointsFactory.create(user_story=us_without_points, role=role1, points=points1)
f.RolePointsFactory.create(user_story=us_without_points, role=role2, points=points1)
assert us_without_points.get_total_points() is None
us_mixed = f.UserStoryFactory.create(project=project)
us_mixed.role_points.all().delete()
f.RolePointsFactory.create(user_story=us_mixed, role=role1, points=points1)
f.RolePointsFactory.create(user_story=us_mixed, role=role2, points=points2)
assert us_mixed.get_total_points() == 1.0