#!/usr/bin/env python # -*- coding: utf-8 -*- import os import shutil from unittest import mock from django.test import TestCase from django.db import models from django.core.files import File from django.conf import settings from django.contrib.auth.models import User from django.utils import timezone from lostplaces.models import ExternalLink, PhotoAlbum, Place from lostplaces.tests.models import ModelTestCase class ExternalLinkTestCase(ModelTestCase): model = ExternalLink @classmethod def setUpTestData(cls): user = User.objects.create_user( username='testpeter', password='Develop123' ) place = Place.objects.create( name='Im a place', submitted_when=timezone.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() PhotoAlbum.objects.create( url='https://lostplaces.example.com/album/', label='TestLink', submitted_by=user.explorer, place=place, submitted_when=timezone.now() ) def setup(self): self.album_link = PhotoAlbum.objects.get(id=1) def test_label(self): self.assertField('label', models.CharField) def test_url(self): self.assertField('url', models.URLField) class PhotoAlbumTestCase(ModelTestCase): model = PhotoAlbum def test_place(self): field = self.assertField('place', models.ForeignKey) self.assertEqual(field.remote_field.on_delete, models.CASCADE, msg='Expecting the deletion of %s to be cascading' % ( str(field) ) ) expected_related_name = 'photo_albums' self.assertEqual(field.remote_field.related_name, expected_related_name, msg='Expecting the related name of %s to be %s' % ( str(field), expected_related_name ) )