ojuso-map/apps/map/tests.py

93 lines
3.1 KiB
Python

from django.contrib.auth.models import User
from django.http import QueryDict
from django.test import TestCase
from django.utils.translation import activate
from django.urls import reverse
from .models import CaseStudy, CaseStudyDraft
class CaseStudyDraftAPITests(TestCase):
test_user = 'testuser1'
test_pass = '12345'
def setUp(self):
test_user1 = User.objects.create_user(username=self.test_user, password=self.test_pass)
test_user1.save()
activate('en-gb')
next_url = QueryDict.fromkeys(['next',], reverse('drafts'))
self.login_url = reverse('auth_login') + '?' + next_url.urlencode()
def login(self):
return self.client.login(username=self.test_user, password=self.test_pass)
def test_get_not_logged_in(self):
response = self.client.get(reverse('drafts'), follow=True)
self.assertRedirects(response, self.login_url)
def test_put_not_logged_in(self):
response = self.client.put(reverse('drafts'), follow=True)
self.assertRedirects(response, self.login_url)
def test_delete_not_logged_in(self):
response = self.client.delete(reverse('drafts'), follow=True)
self.assertRedirects(response, self.login_url)
def test_get_and_put(self):
login = self.login()
# No draft should currently exist
response = self.client.get(reverse('drafts'))
self.assertEqual(response.status_code, 404)
self.assertEqual(response.content, b"")
# Putting a draft should succeed
response = self.client.put(reverse('drafts'), '{"test":1}')
self.assertEqual(response.status_code, 201)
# We should get it back
response = self.client.get(reverse('drafts'))
self.assertEqual(response.status_code, 200)
self.assertEqual(response['Content-Type'], "application/json")
self.assertEqual(response.content, b'{"test":1}')
# Updating it should succeed
response = self.client.put(reverse('drafts'), '{"test":2}')
self.assertEqual(response.status_code, 200)
# We should get the update back
response = self.client.get(reverse('drafts'))
self.assertEqual(response.status_code, 200)
self.assertEqual(response['Content-Type'], "application/json")
self.assertEqual(response.content, b'{"test":2}')
def test_delete(self):
login = self.login()
# Create a draft
response = self.client.put(reverse('drafts'), '{"test":1}')
self.assertEqual(response.status_code, 201)
# Delete it again
response = self.client.delete(reverse('drafts'))
self.assertEqual(response.status_code, 204)
# Check it's not there
response = self.client.get(reverse('drafts'))
self.assertEqual(response.status_code, 404)
class CaseStudyTests(TestCase):
def test_youtube(self):
case_study = CaseStudy()
case_study.video = "https://www.youtube.com/watch?v=h2V4-UP7ML0"
self.assertIs(case_study.is_video_youtube(), True)
# case_study.video = "https://youtu.be/h2V4-UP7ML0"
# self.assertIs(case_study.is_video_youtube(), True)