From f4a74e6fd08244910a46c763fa4cf8fa931c9259 Mon Sep 17 00:00:00 2001 From: Carl van Tonder Date: Tue, 1 May 2018 13:16:09 -0400 Subject: [PATCH] Fix map tests, add files tests --- apps/files/tests.py | 64 ++++++++++++++++++++++++++++++++++++++++++- apps/map/tests.py | 66 ++++++++++++++++++++++----------------------- 2 files changed, 95 insertions(+), 35 deletions(-) diff --git a/apps/files/tests.py b/apps/files/tests.py index 7ce503c..2be7872 100644 --- a/apps/files/tests.py +++ b/apps/files/tests.py @@ -1,3 +1,65 @@ +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 -# Create your tests here. +from override_storage import override_storage + +from .models import File + + +@override_storage() +class FileTests(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') + + self.file = File.objects.create(user=test_user1) + + def login(self): + return self.client.login(username=self.test_user, password=self.test_pass) + + def test_post_not_logged_in(self): + url = reverse('files:upload') + + next_url = QueryDict.fromkeys(['next',], url) + login_url = reverse('auth_login') + '?' + next_url.urlencode() + + response = self.client.post(url, follow=True) + self.assertRedirects(response, login_url) + + def test_delete_not_logged_in(self): + url = reverse('files:delete', kwargs={'pk': self.file.pk}) + + next_url = QueryDict.fromkeys(['next',], url) + login_url = reverse('auth_login') + '?' + next_url.urlencode() + + response = self.client.post(url, follow=True) + self.assertRedirects(response, login_url) + + def test_post_and_delete(self): + login = self.login() + + with open('apps/map/static/map/ojuso-logo-white.png', 'rb') as fp: + response = self.client.post(reverse('files:upload'), { + 'file': fp + }) + + data = response.json() + + self.assertEqual(data['is_valid'], True) + + response = self.client.post(reverse('files:delete', kwargs={ + 'pk': data['id'] + })) + + data = response.json() + + self.assertEqual(data['success'], True) diff --git a/apps/map/tests.py b/apps/map/tests.py index 306f6d3..7c31f7e 100644 --- a/apps/map/tests.py +++ b/apps/map/tests.py @@ -1,10 +1,10 @@ -from django.test import TestCase - -from .models import CaseStudy - 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 CaseStudyDraft + +from .models import CaseStudy, CaseStudyDraft class CaseStudyDraftAPITests(TestCase): @@ -16,20 +16,26 @@ class CaseStudyDraftAPITests(TestCase): 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')) - self.assertEqual(response.status_code, 403) + 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')) - self.assertEqual(response.status_code, 403) + 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')) - self.assertEqual(response.status_code, 403) + response = self.client.delete(reverse('drafts'), follow=True) + self.assertRedirects(response, self.login_url) def test_get_and_put(self): login = self.login() @@ -90,33 +96,25 @@ class CaseStudyTests(TestCase): def test_get_renewable_generation_detail_with_wind(self): """get_renewable_generation_detail() should return the description prefixed with 'wind power'""" case_study = CaseStudy(generation_technology='SSWE') - self.assertEqual(case_study.get_renewable_generation_detail(), "Wind energy – Small-scale (less than 500kW)") + self.assertEqual(case_study.get_renewable_generation_detail(), "Wind energy – Small-scale (less than 500 kW)") def test_get_renewable_generation_detail_with_other(self): """get_renewable_generation_detail() should return the detail provided in .generation_technology_other""" case_study = CaseStudy(generation_technology='OTHR', generation_technology_other='Warp drive') self.assertEqual(case_study.get_renewable_generation_detail(), "Warp drive") -# These tests are commented out because they are not working, but the code -# in production is. When running as a test, get_negative_case_reasons_no_other() -# is returning a list of coded options, like -# ['V', 'O', 'L', 'R', ',', 'A', 'L', 'A', 'B'] -# instead of a list of text like -# ['Violation of land rights', 'Abusive labour practices'] -#  I am too much of a Django newbie to know why. – Anna + def test_get_negative_case_reasons_no_other_1(self): + """Test with case having no 'other' entry""" + case_study = CaseStudy(negative_case_reasons=['VOLR','ALAB']) + self.assertEqual(case_study.get_negative_case_reasons_no_other(), + [ 'Violation of land rights' + , 'Abusive labour practices' + ]) -# def test_get_negative_case_reasons_no_other_1(self): -# """Test with case having no 'other' entry""" -# case_study = CaseStudy(negative_case_reasons='VOLR,ALAB') -# self.assertEqual(case_study.get_negative_case_reasons_no_other(), -# [ 'Violation of land rights' -# , 'Abusive labour practices' -# ]) -# -# def test_get_negative_case_reasons_no_other_2(self): -# """Test with case having an 'other' entry""" -# case_study = CaseStudy(negative_case_reasons='VOLR,ALAB,OTHR') -# self.assertEqual(case_study.get_negative_case_reasons_no_other(), -# [ 'Violation of land rights' -# , 'Abusive labour practices' -# ]) + def test_get_negative_case_reasons_no_other_2(self): + """Test with case having an 'other' entry""" + case_study = CaseStudy(negative_case_reasons=['VOLR','ALAB','OTHR']) + self.assertEqual(case_study.get_negative_case_reasons_no_other(), + [ 'Violation of land rights' + , 'Abusive labour practices' + ])