From 8dc576983c11e0c71f944d5830edcfcfae519c11 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Sat, 9 Nov 2019 13:54:43 +0200 Subject: [PATCH] Split tests.py into multiple files --- webapp/tests/test_contact.py | 16 ++++++ webapp/tests/test_event.py | 16 ++++++ webapp/tests/test_feed.py | 68 ++++++++++++++++++++++++++ webapp/tests/test_signup.py | 16 ++++++ webapp/{tests.py => tests/test_tag.py} | 58 ---------------------- 5 files changed, 116 insertions(+), 58 deletions(-) create mode 100644 webapp/tests/test_contact.py create mode 100644 webapp/tests/test_event.py create mode 100644 webapp/tests/test_feed.py create mode 100644 webapp/tests/test_signup.py rename webapp/{tests.py => tests/test_tag.py} (56%) diff --git a/webapp/tests/test_contact.py b/webapp/tests/test_contact.py new file mode 100644 index 0000000..ad8ed59 --- /dev/null +++ b/webapp/tests/test_contact.py @@ -0,0 +1,16 @@ +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 collections import OrderedDict +from itertools import islice +import tempfile + + +class TagsTestCase(APITestCase): + pass diff --git a/webapp/tests/test_event.py b/webapp/tests/test_event.py new file mode 100644 index 0000000..ad8ed59 --- /dev/null +++ b/webapp/tests/test_event.py @@ -0,0 +1,16 @@ +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 collections import OrderedDict +from itertools import islice +import tempfile + + +class TagsTestCase(APITestCase): + pass diff --git a/webapp/tests/test_feed.py b/webapp/tests/test_feed.py new file mode 100644 index 0000000..ca55fe4 --- /dev/null +++ b/webapp/tests/test_feed.py @@ -0,0 +1,68 @@ +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 collections import OrderedDict +from itertools import islice +import tempfile + + +class FeedTestCase(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) + + Feed.objects.create(title="TestFeed", visible=True, description="diidadaapa", content="lorem ipsum") + Feed.objects.get(title="TestFeed").tags.add(tag1) + Feed.objects.get(title="TestFeed").tags.add(tag2) + self.assertEqual(Feed.objects.count(), 1) + self.assertEqual(Feed.objects.all()[0].tags.count(), 2) + + username, password = 'test_admin', 'password123' + self.authClient = User.objects.create_superuser(username, 'myemail@test.com', password) + + def test_get_feed(self): + response = self.client.get('/api/feed/', format='json') + self.assertTrue(status.is_success(response.status_code)) + + feeds = Feed.objects.all() + serializer = FeedSerializer(feeds, many=True) + + # DRF extends path given by serializer with the protocol and domain for icon + # Ignore tag on serializer and response. This is tested on TagTestCase. + # Note that we assume the length here to be 1 + response.data['results'][0].pop('tags') + serializer.data[0].pop('tags') + self.assertEqual(response.data['results'], serializer.data) + + def test_post_feed(self): + Tag.objects.create(slug="test1", name="testsds") + Tag.objects.create(slug="test2", name="testsdsd") + 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'} + # Try post without authentication + response = self.client.post('/api/feed/', data, format='multipart') + self.assertTrue(status.is_client_error(response.status_code)) + self.assertEqual(Feed.objects.count(), 1) + # Authenticate + self.client.force_authenticate(user=self.authClient) + response = self.client.post('/api/feed/', data, format='multipart') + # Return success and check object was created + self.assertTrue(status.is_success(response.status_code)) + self.assertEqual(Feed.objects.count(), 2) + + created = Feed.objects.get(title="testtitle") + print(created.tags) + # self.assertEqual(created.tags.count(), 2) diff --git a/webapp/tests/test_signup.py b/webapp/tests/test_signup.py new file mode 100644 index 0000000..ad8ed59 --- /dev/null +++ b/webapp/tests/test_signup.py @@ -0,0 +1,16 @@ +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 collections import OrderedDict +from itertools import islice +import tempfile + + +class TagsTestCase(APITestCase): + pass diff --git a/webapp/tests.py b/webapp/tests/test_tag.py similarity index 56% rename from webapp/tests.py rename to webapp/tests/test_tag.py index 067ea45..755c02c 100644 --- a/webapp/tests.py +++ b/webapp/tests/test_tag.py @@ -1,5 +1,3 @@ -"""Tests for webapp.""" - from django.test import TestCase from django.core.files import File from django.contrib.auth.models import User @@ -73,59 +71,3 @@ class TagsTestCase(APITestCase): self.assertEqual(Tag.objects.count(), 1) response = self.client.get('/api/tags/15', format='json', follow=True) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - - -class FeedTestCase(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) - - Feed.objects.create(title="TestFeed", visible=True, description="diidadaapa", content="lorem ipsum") - Feed.objects.get(title="TestFeed").tags.add(tag1) - Feed.objects.get(title="TestFeed").tags.add(tag2) - self.assertEqual(Feed.objects.count(), 1) - self.assertEqual(Feed.objects.all()[0].tags.count(), 2) - - username, password = 'test_admin', 'password123' - self.authClient = User.objects.create_superuser(username, 'myemail@test.com', password) - - def test_get_feed(self): - response = self.client.get('/api/feed/', format='json') - self.assertTrue(status.is_success(response.status_code)) - - feeds = Feed.objects.all() - serializer = FeedSerializer(feeds, many=True) - - # DRF extends path given by serializer with the protocol and domain for icon - # Ignore tag on serializer and response. This is tested on TagTestCase. - # Note that we assume the length here to be 1 - response.data['results'][0].pop('tags') - serializer.data[0].pop('tags') - self.assertEqual(response.data['results'], serializer.data) - - def test_post_feed(self): - Tag.objects.create(slug="test1", name="testsds") - Tag.objects.create(slug="test2", name="testsdsd") - 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'} - # Try post without authentication - response = self.client.post('/api/feed/', data, format='multipart') - self.assertTrue(status.is_client_error(response.status_code)) - self.assertEqual(Feed.objects.count(), 1) - # Authenticate - self.client.force_authenticate(user=self.authClient) - response = self.client.post('/api/feed/', data, format='multipart') - # Return success and check object was created - self.assertTrue(status.is_success(response.status_code)) - self.assertEqual(Feed.objects.count(), 2) - - created = Feed.objects.get(title="testtitle") - print(created.tags) - # self.assertEqual(created.tags.count(), 2)