Add created-, modified- and finish_date filters to userstories

remotes/origin/issue/4795/notification_even_they_are_disabled
Michael Jurke 2016-09-02 11:02:04 +02:00
parent 87f81154ec
commit dfdea74c58
3 changed files with 115 additions and 1 deletions

View File

@ -31,6 +31,7 @@
- Cleanup hooks code. - Cleanup hooks code.
- Add created-, modified-, finished- and finish_date queryset filters - Add created-, modified-, finished- and finish_date queryset filters
- Support exact match, gt, gte, lt, lte - Support exact match, gt, gte, lt, lte
- added issues, tasks and userstories accordingly
### Misc ### Misc
- [API] Improve performance of some calls over list. - [API] Improve performance of some calls over list.

View File

@ -64,7 +64,10 @@ class UserStoryViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixi
filters.TagsFilter, filters.TagsFilter,
filters.WatchersFilter, filters.WatchersFilter,
filters.QFilter, filters.QFilter,
filters.OrderByFilterMixin) filters.OrderByFilterMixin,
filters.CreatedDateFilter,
filters.ModifiedDateFilter,
filters.FinishDateFilter)
retrieve_exclude_filters = (filters.OwnersFilter, retrieve_exclude_filters = (filters.OwnersFilter,
filters.AssignedToFilter, filters.AssignedToFilter,
filters.StatusesFilter, filters.StatusesFilter,

View File

@ -19,6 +19,10 @@
import uuid import uuid
import csv import csv
import pytz
from datetime import datetime, timedelta
from urllib.parse import quote
from unittest import mock from unittest import mock
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
@ -501,6 +505,112 @@ def test_get_total_points(client):
assert us_mixed.get_total_points() == 1.0 assert us_mixed.get_total_points() == 1.0
def test_api_filter_by_created_date(client):
user = f.UserFactory(is_superuser=True)
one_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
old_userstory = f.create_userstory(owner=user, created_date=one_day_ago)
userstory = f.create_userstory(owner=user, subject="test")
url = reverse("userstories-list") + "?created_date=%s" % (
quote(userstory.created_date.isoformat())
)
client.login(userstory.owner)
response = client.get(url)
number_of_userstories = len(response.data)
assert response.status_code == 200
assert number_of_userstories == 1
assert response.data[0]["subject"] == userstory.subject
def test_api_filter_by_created_date__lt(client):
user = f.UserFactory(is_superuser=True)
one_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
old_userstory = f.create_userstory(
owner=user, created_date=one_day_ago, subject="old test"
)
userstory = f.create_userstory(owner=user)
url = reverse("userstories-list") + "?created_date__lt=%s" % (
quote(userstory.created_date.isoformat())
)
client.login(userstory.owner)
response = client.get(url)
number_of_userstories = len(response.data)
assert response.status_code == 200
assert response.data[0]["subject"] == old_userstory.subject
def test_api_filter_by_created_date__lte(client):
user = f.UserFactory(is_superuser=True)
one_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
old_userstory = f.create_userstory(owner=user, created_date=one_day_ago)
userstory = f.create_userstory(owner=user)
url = reverse("userstories-list") + "?created_date__lte=%s" % (
quote(userstory.created_date.isoformat())
)
client.login(userstory.owner)
response = client.get(url)
number_of_userstories = len(response.data)
assert response.status_code == 200
assert number_of_userstories == 2
def test_api_filter_by_modified_date__gte(client):
user = f.UserFactory(is_superuser=True)
older_userstory = f.create_userstory(owner=user)
userstory = f.create_userstory(owner=user, subject="test")
# we have to refresh as it slightly differs
userstory.refresh_from_db()
assert older_userstory.modified_date < userstory.modified_date
url = reverse("userstories-list") + "?modified_date__gte=%s" % (
quote(userstory.modified_date.isoformat())
)
client.login(userstory.owner)
response = client.get(url)
number_of_userstories = len(response.data)
assert response.status_code == 200
assert number_of_userstories == 1
assert response.data[0]["subject"] == userstory.subject
def test_api_filter_by_finish_date(client):
user = f.UserFactory(is_superuser=True)
one_day_later = datetime.now(pytz.utc) + timedelta(days=1)
userstory = f.create_userstory(owner=user)
userstory_to_finish = f.create_userstory(
owner=user, finish_date=one_day_later, subject="test"
)
assert userstory_to_finish.finish_date
url = reverse("userstories-list") + "?finish_date__gte=%s" % (
quote(userstory_to_finish.finish_date.isoformat())
)
client.login(userstory.owner)
response = client.get(url)
number_of_userstories = len(response.data)
assert response.status_code == 200
assert number_of_userstories == 1
assert response.data[0]["subject"] == userstory_to_finish.subject
def test_api_filters_data(client): def test_api_filters_data(client):
project = f.ProjectFactory.create() project = f.ProjectFactory.create()
user1 = f.UserFactory.create(is_superuser=True) user1 = f.UserFactory.create(is_superuser=True)