Webapp test changes, GET for Event API

This commit is contained in:
Aarni Halinen
2019-11-09 21:09:25 +02:00
parent 8dc576983c
commit 72b2a18c63
7 changed files with 125 additions and 40 deletions
+1 -1
View File
@@ -12,5 +12,5 @@ from itertools import islice
import tempfile
class TagsTestCase(APITestCase):
class ContactsTestCase(APITestCase):
pass
+99 -9
View File
@@ -1,16 +1,106 @@
from django.test import TestCase
from django.core.files import File
from django.utils import timezone
from django.contrib.auth.models import User
from rest_framework.test import APITestCase
from rest_framework.test import APITestCase, APIRequestFactory, force_authenticate
from rest_framework import status
from rest_framework.test import force_authenticate
from webapp.models import Tag, Feed
from webapp.serializers import TagSerializer, FeedSerializer
from webapp.models import Tag, Event
from webapp.serializers import EventSerializer
from collections import OrderedDict
from itertools import islice
import tempfile
class TagsTestCase(APITestCase):
pass
class EventTestCase(APITestCase):
def setUp(self):
self.icon = tempfile.NamedTemporaryFile(suffix=".jpg").name
Tag.objects.create(slug='testtag1', name='test1', icon=self.icon)
tag1 = Tag.objects.get(slug="testtag1")
Tag.objects.create(slug="testtag2", name='test2', icon=self.icon)
tag2 = Tag.objects.get(slug="testtag2")
self.assertEqual(Tag.objects.count(), 2)
# Visible and relevant
Event.objects.create(
title="TestEvent1",
visible=True,
description="diidadaapa",
content="lorem ipsum",
start_time=timezone.datetime(2019, 11, 9, 12, 0, 0),
end_time=timezone.datetime(2020, 11, 9, 13, 0, 0),
location="Testimaa"
)
# Invisible but relevant
Event.objects.create(
title="TestEvent2",
visible=False,
description="diidadaapa",
content="lorem ipsum",
start_time=timezone.datetime(2018, 12, 9, 12, 0, 0),
end_time=timezone.datetime(2020, 12, 9, 13, 0, 0),
location="Testimaan kerhohuone"
)
# Visible but unrelevant
Event.objects.create(
title="TestEvent3",
visible=True,
description="diidadaapa",
content="lorem ipsum",
start_time=timezone.datetime(2018, 12, 9, 12, 0, 0),
end_time=timezone.datetime(2018, 12, 9, 13, 0, 0),
location="Testimaan kerhohuone"
)
# Visible and relevant
Event.objects.create(
title="TestEvent4",
visible=True,
description="diidadaapa",
content="lorem ipsum",
start_time=timezone.datetime(2018, 12, 9, 12, 0, 0),
end_time=timezone.datetime(2020, 12, 9, 13, 0, 0),
location="Testimaan kerhohuone"
)
Event.objects.get(title="TestEvent1").tags.add(tag1)
Event.objects.get(title="TestEvent2").tags.add(tag2)
self.assertEqual(Event.objects.count(), 4)
username, password = 'test_admin', 'password123'
self.authClient = User.objects.create_superuser(username, 'myemail@test.com', password)
self.testEventId = Event.objects.get(title="TestEvent1").id
def test_get_events(self):
# Get from API
response = self.client.get("/api/events/", format="json")
# Response 200
self.assertTrue(status.is_success(response.status_code))
# Response should not have old events
self.assertEqual(len(response.data["results"]), 2)
# Check that serialized data is equal to received response
expected_events = EventSerializer(
Event.objects.filter(title__in=("TestEvent1", "TestEvent4")).order_by("start_time"),
many=True,
context={
"request": APIRequestFactory().get(r"http://testserver/api/events/")
}
)
self.assertEqual(response.data["results"], expected_events.data)
def test_get_single_event(self):
response = self.client.get(f"/api/events/{self.testEventId}/", format="json")
result = response.data
# Remove tags because of API call having also domain name added to icon URL
result.pop("tags")
serialized = EventSerializer(Event.objects.get(title="TestEvent1")).data
serialized.pop("tags")
self.assertEqual(
result,
serialized
)
def test_post_event(self):
pass
def test_update_event(self):
pass
def test_delete_event(self):
pass
+3 -6
View File
@@ -1,14 +1,11 @@
from django.test import TestCase
from django.core.files import File
from django.contrib.auth.models import User
from rest_framework.test import APITestCase
from rest_framework import status
from rest_framework.test import force_authenticate
from webapp.models import Tag, Feed
from webapp.serializers import TagSerializer, FeedSerializer
from webapp.serializers import FeedSerializer
from collections import OrderedDict
from itertools import islice
import tempfile
@@ -51,7 +48,7 @@ class FeedTestCase(APITestCase):
tag1_id = Tag.objects.get(slug="test1").id
tag2_id = Tag.objects.get(slug="test2").id
data = {'tags': [tag1_id, tag2_id], 'title': 'testtitle', 'visible': 'True', 'description': 'liirumlaarum', 'content': 'lorem ipsum'}
data = {'tags': [tag1_id, tag2_id], 'title_fi': 'testtitle', 'title_en': 'testtitle', 'visible': 'True', 'description_fi': 'liirumlaarum', 'description_en': 'liirumlaarum', 'content_fi': 'lorem ipsum', 'content_en': 'lorem ipsum'}
# Try post without authentication
response = self.client.post('/api/feed/', data, format='multipart')
self.assertTrue(status.is_client_error(response.status_code))
@@ -63,6 +60,6 @@ class FeedTestCase(APITestCase):
self.assertTrue(status.is_success(response.status_code))
self.assertEqual(Feed.objects.count(), 2)
created = Feed.objects.get(title="testtitle")
created = Feed.objects.get(title_fi="testtitle")
print(created.tags)
# self.assertEqual(created.tags.count(), 2)
+1 -1
View File
@@ -12,5 +12,5 @@ from itertools import islice
import tempfile
class TagsTestCase(APITestCase):
class SignupTestCase(APITestCase):
pass
+11 -14
View File
@@ -1,11 +1,8 @@
from django.test import TestCase
from django.core.files import File
from django.contrib.auth.models import User
from rest_framework.test import APITestCase
from rest_framework import status
from rest_framework.test import force_authenticate
from webapp.models import Tag, Feed
from webapp.serializers import TagSerializer, FeedSerializer
from rest_framework.test import APITestCase
from webapp.models import Tag
from webapp.serializers import TagSerializer
from collections import OrderedDict
from itertools import islice
@@ -16,7 +13,7 @@ class TagsTestCase(APITestCase):
def setUp(self):
self.icon = tempfile.NamedTemporaryFile(suffix=".jpg").name
Tag.objects.create(slug='Party', name='Bileet', icon=self.icon)
Tag.objects.create(slug='Party', name_fi='Bileet', name_en="Partytime", icon=self.icon)
def test_get_single_tag(self):
self.assertEqual(Tag.objects.count(), 1)
@@ -26,7 +23,7 @@ class TagsTestCase(APITestCase):
# We dont care about icon, so response is sliced
sliced_response = OrderedDict(islice(response.data['results'][0].items(), 3))
tag1 = Tag.objects.get(slug="Party")
self.assertEqual(sliced_response, {'id': tag1.id, 'slug': 'Party', 'name': 'Bileet'})
self.assertEqual(sliced_response, {'id': tag1.id, 'slug': 'Party', 'name_fi': 'Bileet'})
def test_get_single_tag_serializer(self):
response = self.client.get('/api/tags/', format='json')
@@ -43,8 +40,8 @@ class TagsTestCase(APITestCase):
def test_get_multiple_tags(self):
self.assertEqual(Tag.objects.count(), 1)
Tag.objects.create(slug='Freshmen', name='Fuksit', icon=self.icon)
Tag.objects.create(slug='International', name='Ulkkarit', icon=self.icon)
Tag.objects.create(slug='Freshmen', name_fi='Fuksit', icon=self.icon)
Tag.objects.create(slug='International', name_fi='Ulkkarit', icon=self.icon)
self.assertEqual(Tag.objects.count(), 3)
response = self.client.get('/api/tags/', format='json')
@@ -53,17 +50,17 @@ class TagsTestCase(APITestCase):
# We dont care about icon, so response is sliced
tag1 = Tag.objects.get(slug="Party")
sliced_response = OrderedDict(islice(response.data['results'][0].items(), 3))
self.assertEqual(sliced_response, {'id': tag1.id, 'slug': 'Party', 'name': 'Bileet'})
self.assertEqual(sliced_response, {'id': tag1.id, 'slug': 'Party', 'name_fi': 'Bileet'})
sliced_response = OrderedDict(islice(response.data['results'][1].items(), 3))
tag2 = Tag.objects.get(slug="Freshmen")
self.assertEqual(sliced_response, {'id': tag2.id, 'slug': 'Freshmen', 'name': 'Fuksit'})
self.assertEqual(sliced_response, {'id': tag2.id, 'slug': 'Freshmen', 'name_fi': 'Fuksit'})
sliced_response = OrderedDict(islice(response.data['results'][2].items(), 3))
tag3 = Tag.objects.get(slug="International")
self.assertEqual(sliced_response, {'id': tag3.id, 'slug': 'International', 'name': 'Ulkkarit'})
self.assertEqual(sliced_response, {'id': tag3.id, 'slug': 'International', 'name_fi': 'Ulkkarit'})
def test_create_tag(self):
self.assertEqual(Tag.objects.count(), 1)
response = self.client.post('/api/tags/', {'slug': 'Test', 'name': 'Testinimi', 'icon': self.icon}, format='multipart')
response = self.client.post('/api/tags/', {'slug': 'Test', 'name_fi': 'Testinimi', 'icon': self.icon}, format='multipart')
self.assertFalse(status.is_success(response.status_code))
self.assertEqual(Tag.objects.count(), 1)