Add created-, modified- and finished_date filters to tasks
parent
0ec1da600c
commit
87f81154ec
|
@ -56,7 +56,10 @@ class TaskViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin,
|
||||||
filters.StatusesFilter,
|
filters.StatusesFilter,
|
||||||
filters.TagsFilter,
|
filters.TagsFilter,
|
||||||
filters.WatchersFilter,
|
filters.WatchersFilter,
|
||||||
filters.QFilter)
|
filters.QFilter,
|
||||||
|
filters.CreatedDateFilter,
|
||||||
|
filters.ModifiedDateFilter,
|
||||||
|
filters.FinishedDateFilter)
|
||||||
retrieve_exclude_filters = (filters.OwnersFilter,
|
retrieve_exclude_filters = (filters.OwnersFilter,
|
||||||
filters.AssignedToFilter,
|
filters.AssignedToFilter,
|
||||||
filters.StatusesFilter,
|
filters.StatusesFilter,
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
@ -451,6 +455,110 @@ def test_get_tasks_including_attachments(client):
|
||||||
assert len(response.data[0].get("attachments")) == 1
|
assert len(response.data[0].get("attachments")) == 1
|
||||||
|
|
||||||
|
|
||||||
|
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_task = f.create_task(owner=user, created_date=one_day_ago)
|
||||||
|
task = f.create_task(owner=user, subject="test")
|
||||||
|
|
||||||
|
url = reverse("tasks-list") + "?created_date=%s" % (
|
||||||
|
quote(task.created_date.isoformat())
|
||||||
|
)
|
||||||
|
|
||||||
|
client.login(task.owner)
|
||||||
|
response = client.get(url)
|
||||||
|
number_of_tasks = len(response.data)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert number_of_tasks == 1
|
||||||
|
assert response.data[0]["subject"] == task.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_task = f.create_task(owner=user, created_date=one_day_ago)
|
||||||
|
task = f.create_task(owner=user, subject="test")
|
||||||
|
|
||||||
|
url = reverse("tasks-list") + "?created_date__lt=%s" % (
|
||||||
|
quote(task.created_date.isoformat())
|
||||||
|
)
|
||||||
|
|
||||||
|
client.login(task.owner)
|
||||||
|
response = client.get(url)
|
||||||
|
number_of_tasks = len(response.data)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.data[0]["subject"] == old_task.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_task = f.create_task(owner=user, created_date=one_day_ago)
|
||||||
|
task = f.create_task(owner=user)
|
||||||
|
|
||||||
|
url = reverse("tasks-list") + "?created_date__lte=%s" % (
|
||||||
|
quote(task.created_date.isoformat())
|
||||||
|
)
|
||||||
|
|
||||||
|
client.login(task.owner)
|
||||||
|
response = client.get(url)
|
||||||
|
number_of_tasks = len(response.data)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert number_of_tasks == 2
|
||||||
|
|
||||||
|
|
||||||
|
def test_api_filter_by_modified_date__gte(client):
|
||||||
|
user = f.UserFactory(is_superuser=True)
|
||||||
|
_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
|
||||||
|
|
||||||
|
older_task = f.create_task(owner=user)
|
||||||
|
task = f.create_task(owner=user, subject="test")
|
||||||
|
# we have to refresh as it slightly differs
|
||||||
|
task.refresh_from_db()
|
||||||
|
|
||||||
|
assert older_task.modified_date < task.modified_date
|
||||||
|
|
||||||
|
url = reverse("tasks-list") + "?modified_date__gte=%s" % (
|
||||||
|
quote(task.modified_date.isoformat())
|
||||||
|
)
|
||||||
|
|
||||||
|
client.login(task.owner)
|
||||||
|
response = client.get(url)
|
||||||
|
number_of_tasks = len(response.data)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert number_of_tasks == 1
|
||||||
|
assert response.data[0]["subject"] == task.subject
|
||||||
|
|
||||||
|
|
||||||
|
def test_api_filter_by_finished_date(client):
|
||||||
|
user = f.UserFactory(is_superuser=True)
|
||||||
|
project = f.ProjectFactory.create()
|
||||||
|
status0 = f.TaskStatusFactory.create(project=project, is_closed=True)
|
||||||
|
|
||||||
|
task = f.create_task(owner=user)
|
||||||
|
finished_task = f.create_task(owner=user, status=status0, subject="test")
|
||||||
|
|
||||||
|
assert finished_task.finished_date
|
||||||
|
|
||||||
|
url = reverse("tasks-list") + "?finished_date__gte=%s" % (
|
||||||
|
quote(finished_task.finished_date.isoformat())
|
||||||
|
)
|
||||||
|
client.login(task.owner)
|
||||||
|
response = client.get(url)
|
||||||
|
number_of_tasks = len(response.data)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert number_of_tasks == 1
|
||||||
|
assert response.data[0]["subject"] == finished_task.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)
|
||||||
|
|
Loading…
Reference in New Issue