Skip to content

Commit

Permalink
finish unit test. bug fixes when no parameters are sent to ocurrence_…
Browse files Browse the repository at this point in the history
…api.
  • Loading branch information
llazzaro committed May 18, 2016
1 parent b42d762 commit 00913c7
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
15 changes: 12 additions & 3 deletions schedule/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from django.utils import timezone
from django.http import HttpResponseRedirect, Http404
from django.http import HttpResponseRedirect, Http404, HttpResponseBadRequest
from django.views.generic.base import TemplateResponseMixin
from django.views.generic.detail import DetailView
from django.views.generic.edit import (
Expand Down Expand Up @@ -305,14 +305,23 @@ def get_next_url(request, default):
next_url = _next_url
return next_url


@check_calendar_permissions
def api_occurrences(request):
utc=pytz.UTC
if not request.GET.get('start') or not request.GET.get('end'):
return HttpResponseBadRequest('Start and end parameters are required')
# version 2 of full calendar
# TODO: improve this code with date util package
if '-' in request.GET.get('start'):
convert = lambda d: datetime.datetime.strptime(d, '%Y-%m-%d')
def convert(ddatetime):
if ddatetime:
ddatetime = ddatetime.split(' ')[0]
return datetime.datetime.strptime(ddatetime, '%Y-%m-%d')
else:
convert = lambda d: datetime.datetime.utcfromtimestamp(float(d))
def convert(ddatetime):
return datetime.datetime.utcfromtimestamp(float(ddatetime))

start = utc.localize(convert(request.GET.get('start')))
end = utc.localize(convert(request.GET.get('end')))
calendar_slug = request.GET.get('calendar_slug')
Expand Down
20 changes: 11 additions & 9 deletions tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,7 @@ def test_delete_event_authenticated_user(self):
self.assertEqual(self.response.status_code, 404)
self.client.logout()

# TODO: finish this
def test_occurences_api(self):
def test_occurences_api_returns_the_expected_occurences(self):
# create a calendar and event
self.calendar = Calendar.objects.create(name="MyCal", slug='MyCalSlug')
self.rule = Rule.objects.create(frequency="DAILY")
Expand All @@ -161,13 +160,16 @@ def test_occurences_api(self):
}
self.event = Event.objects.create(**data)
# test calendar slug
self.response = self.client.get(reverse("api_occurences") + \
"?calendar={}&start={}".format(
self.response = self.client.get(reverse("api_occurences") +
"?calendar={}&start={}&end={}".format(
'MyCal',
datetime.datetime(2008, 1, 5))
)
self.assertEqual(self.response.status_code, 200)
# test no calendar slug
self.response = self.client.get(reverse("api_occurences"))
datetime.datetime(2008, 1, 5),
datetime.datetime(2008, 1, 6)
))
self.assertEqual(self.response.status_code, 200)
expected_content = '[{"start": "2008-01-05T08:00:00+00:00", "end": "2008-01-05T09:00:00+00:00", "description": null, "title": "Recent Event", "event_id": 8, "existed": false, "id": 9, "color": null}]'
self.assertEquals(self.response.content, expected_content)

def test_occurences_api_without_parameters_return_status_400(self):
self.response = self.client.get(reverse("api_occurences"))
self.assertEqual(self.response.status_code, 400)

0 comments on commit 00913c7

Please sign in to comment.