This commit is contained in:
Leonhard Strohmidel 2020-09-11 23:07:19 +02:00
parent e655e1598a
commit baca596603
10 changed files with 70 additions and 73 deletions

View File

@ -19,6 +19,7 @@ easy-thumbnails = "*"
image = "*"
django-widget-tweaks = "*"
django-taggit = "*"
# Commented out to not explicitly specify Python 3 subversion.
# [requires]
# python_version = "3.8"
[requires]
python_version = "3.7"

View File

@ -1,13 +1,11 @@
from django.db import models as django_models
from django.test import TestCase
from django.contrib.auth.models import User
class BaseData(TestCase):
def mock_user():
explorer_list = User.objects.all()
if len(explorer_list) <= 0:
return User.objects.create_user(
@classmethod
def setUpTestData(cls):
User.objects.create_user(
username='testpeter',
password='Develop123'
)
else:
return explorer_list[0]
).save()

View File

@ -1,14 +1,21 @@
from django.db import models
from django.contrib.auth.models import User
from django.core.exceptions import FieldDoesNotExist
from django.test import TestCase
# Creating a test user
class ModelTestCase:
'''
Base class for Lostplaces models
'''
model = None
model_name = None
def setUp(self):
self.object = self.model.objects.get(id=1)
self.model_name = type(self.model).__name__
def _test_field(self, field_name, field_class, must_have={}, must_not_have={}):
'''
Tests if a field exists under the given name and

View File

@ -3,13 +3,16 @@ from django.db import models
from django.contrib.auth.models import User
from lostplaces_app.models import Explorer
from lostplaces_app.tests import mock_user
class ExplorerTestCase(TestCase):
def setUp(self):
mock_user()
@classmethod
def setUpTestData(self):
User.objects.create_user(
username='testpeter',
)
def test_epxlorer_creation(self):
'''
Tests if the explorer profile will be automticly
@ -43,7 +46,7 @@ class ExplorerTestCase(TestCase):
Tests if the Explorer objects get's deleted when the User instance is deleted
'''
user = User.objects.get(id=1)
user = User.objects.get(username='testpeter')
explorer_id = user.explorer.id
user.delete()
with self.assertRaises(models.ObjectDoesNotExist,

View File

@ -8,36 +8,33 @@ from django.db import models
from django.core.files import File
from django.conf import settings
from lostplaces_app.models import PlaceImage
from lostplaces_app.models import PlaceImage, Place
from lostplaces_app.tests.models import SubmittableTestCase
from lostplaces_app.tests import mock_user
from lostplaces_app.tests.models.test_place_model import mock_place
from lostplaces_app.tests.models.test_place_model Test
from easy_thumbnails.fields import ThumbnailerImageField
def mock_place_image():
all_place_images = PlaceImage.objects.all()
if len(all_place_images) <= 0:
class TestPlaceImage(SubmittableTestCase, TestCase):
model = PlaceImage
@classmethod
def setUpTestData(cls):
Place.setUpTestData()
current_dir = os.path.dirname(os.path.abspath(__file__))
if not os.path.isfile(os.path.join(settings.MEDIA_ROOT, 'im_a_image_copy.jpeg')):
shutil.copyfile(
os.path.join(current_dir, 'im_a_image.jpeg'),
os.path.join(settings.MEDIA_ROOT, 'im_a_image_copy.jpeg')
)
return PlaceImage.objects.create(
PlaceImage.objects.create(
description='Im a description',
filename=os.path.join(settings.MEDIA_ROOT, 'im_a_image_copy.jpeg'),
place=mock_place(),
place=Place.objects.get(id=1),
submitted_when=datetime.datetime.now(),
submitted_by=mock_user().explorer
submitted_by=User.objects.get(username='testpeter').explorer
)
return all_place_images[0]
class TestPlaceImage(SubmittableTestCase, TestCase):
model_name = 'PlaceImage'
def setUp(self):
self.object = mock_place_image()
def test_description(self):
self._test_field('description', models.TextField)

View File

@ -3,34 +3,36 @@ import datetime
from django.test import TestCase
from django.db import models
from django.contrib.auth.models import User
from lostplaces_app.models import Place
from lostplaces_app.tests import BaseData
from lostplaces_app.tests.models import SubmittableTestCase
from lostplaces_app.tests import mock_user
from taggit.managers import TaggableManager
def mock_place():
place = Place.objects.create(
name='Im a place',
submitted_when=datetime.datetime.now(),
submitted_by=mock_user().explorer,
location='Testtown',
latitude=50.5,
longitude=7.0,
description='This is just a test, do not worry'
)
place.tags.add('I a tag', 'testlocation')
return place
class PlaceTestCase(SubmittableTestCase, TestCase):
model_name = 'Place'
model = Place
related_name = 'places'
nullable = True
def setUp(self):
self.place = mock_place()
self.object = self.place
@classmethod
def setUpTestData(cls):
BaseData.setUpTestData()
place = Place.objects.create(
name='Im a place',
submitted_when=datetime.datetime.now(),
submitted_by=User.objects.get(username='testpeter').explorer,
location='Testtown',
latitude=50.5,
longitude=7.0,
description='This is just a test, do not worry'
)
place.tags.add('I a tag', 'testlocation')
place.save()
def test_name_field(self):
self._test_char_field(
@ -72,10 +74,12 @@ class PlaceTestCase(SubmittableTestCase, TestCase):
of 10 places
'''
place_list = []
place = Place.objects.get(id=1)
place.id = None
for i in range(10):
place = mock_place()
place.latitude = i+1
place.longitude = i+10
place.save()
place_list.append(place)
avg_latlon = Place.average_latlon(place_list)
@ -95,7 +99,7 @@ class PlaceTestCase(SubmittableTestCase, TestCase):
Tests the average latitude/longitude calculation of a list
of one place
'''
place = mock_place()
place = Place.objects.get(id=1)
avg_latlon = Place.average_latlon([place])
self.assertEqual(avg_latlon[0], place.latitude,
msg='%s:(one place) average latitude missmatch' % (

View File

@ -7,19 +7,16 @@ from lostplaces_app.models import Voucher
from lostplaces_app.tests.models import ModelTestCase
def mock_voucher():
return Voucher.objects.create(
class VoucheTestCase(ModelTestCase, TestCase):
model = Voucher
@classmethod
def setUpTestData(cls):
Voucher.objects.create(
code='ayDraJCCwfhcFiYmSR5GrcjcchDfcahv',
expires=datetime.datetime.now() + datetime.timedelta(days=1)
)
class VoucheTestCase(ModelTestCase, TestCase):
model_name = 'Voucher'
def setUp(self):
self.object = mock_voucher()
def test_voucher_code(self):
self._test_char_field(
'code',

View File

@ -4,14 +4,11 @@ from django.urls import reverse_lazy
from lostplaces_app.models import Place
from django.contrib.auth.models import User
from lostplaces_app.tests.models.test_place_model import mock_place
from lostplaces_app.tests import mock_user
class TestIsAuthenticated(TestCase):
def setUp(self):
self. client = Client()
mock_place()
mock_user()
def test_logged_in(self):
self.client.login(username='testpeter', password='Develop123')
@ -38,8 +35,6 @@ class TestIsPlaceSubmitter(TestCase):
def setUp(self):
self. client = Client()
mock_place()
mock_user()
def test_is_submitter(self):
self.client.login(username='testpeter', password='Develop123')

View File

@ -3,15 +3,10 @@ from django.urls import reverse_lazy
from lostplaces_app.models import Place
from lostplaces_app.tests.models.test_place_model import mock_place
from lostplaces_app.tests import mock_user
class TestPlaceCreateView(TestCase):
def setUp(self):
self. client = Client()
mock_place()
mock_user()
def test_url_logged_in(self):
self.client.login(username='testpeter', password='Develop123')