diff --git a/webapp/tests.py b/webapp/tests.py index 1418e07..2c488e1 100644 --- a/webapp/tests.py +++ b/webapp/tests.py @@ -1,5 +1,56 @@ """Tests for webapp.""" from django.test import TestCase +from django.core.files import File +from rest_framework.test import APITestCase +from rest_framework import status +from webapp.models import Tag -# Create your tests here. +from collections import OrderedDict +from itertools import islice +import tempfile + + +class TagsTestCase(APITestCase): + + + def setUp(self): + self.icon = tempfile.NamedTemporaryFile(suffix=".jpg").name + Tag.objects.create(slug='Party', name='Bileet', icon=self.icon) + + + def test_get_single_tag(self): + self.assertEqual(Tag.objects.count(), 1) + response = self.client.get('/api/tags/', format='json') + self.assertTrue(status.is_success(response.status_code)) + + #We dont care about icon, so response is sliced + sliced_response = OrderedDict(islice(response.data[0].items(),2)) + self.assertEqual(sliced_response, {'slug': 'Party', 'name': 'Bileet'}) + 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) + self.assertEqual(Tag.objects.count(), 3) + + response = self.client.get('/api/tags/', format='json') + self.assertTrue(status.is_success(response.status_code)) + + print(response.data) + #We dont care about icon, so response is sliced + sliced_response = OrderedDict(islice(response.data[0].items(),2)) + self.assertEqual(sliced_response, {'slug': 'Party', 'name': 'Bileet'}) + sliced_response = OrderedDict(islice(response.data[1].items(),2)) + self.assertEqual(sliced_response, {'slug': 'Freshmen', 'name': 'Fuksit'}) + sliced_response = OrderedDict(islice(response.data[2].items(),2)) + self.assertEqual(sliced_response, {'slug': 'International', 'name': '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') + self.assertFalse(status.is_success(response.status_code)) + self.assertEqual(Tag.objects.count(), 1) + + + \ No newline at end of file