Fixed #22979 -- Moved bug* tests
This commit is contained in:
parent
f14898a453
commit
11181a64f9
|
@ -3,12 +3,12 @@ from unittest import TestCase
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
|
|
||||||
class Bug8245Test(TestCase):
|
class AdminAutoDiscoverTests(TestCase):
|
||||||
"""
|
"""
|
||||||
Test for bug #8245 - don't raise an AlreadyRegistered exception when using
|
Test for bug #8245 - don't raise an AlreadyRegistered exception when using
|
||||||
autodiscover() and an admin.py module contains an error.
|
autodiscover() and an admin.py module contains an error.
|
||||||
"""
|
"""
|
||||||
def test_bug_8245(self):
|
def test_double_call_autodiscover(self):
|
||||||
# The first time autodiscover is called, we should get our real error.
|
# The first time autodiscover is called, we should get our real error.
|
||||||
with self.assertRaises(Exception) as cm:
|
with self.assertRaises(Exception) as cm:
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
|
@ -1,31 +0,0 @@
|
||||||
import os
|
|
||||||
import tempfile
|
|
||||||
|
|
||||||
from django.core.files.storage import FileSystemStorage
|
|
||||||
from django.db import models
|
|
||||||
from django.forms import ModelForm
|
|
||||||
|
|
||||||
|
|
||||||
temp_storage_dir = tempfile.mkdtemp(dir=os.environ['DJANGO_TEST_TEMP_DIR'])
|
|
||||||
temp_storage = FileSystemStorage(temp_storage_dir)
|
|
||||||
|
|
||||||
|
|
||||||
class Photo(models.Model):
|
|
||||||
title = models.CharField(max_length=30)
|
|
||||||
image = models.FileField(storage=temp_storage, upload_to='tests')
|
|
||||||
|
|
||||||
# Support code for the tests; this keeps track of how many times save()
|
|
||||||
# gets called on each instance.
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super(Photo, self).__init__(*args, **kwargs)
|
|
||||||
self._savecount = 0
|
|
||||||
|
|
||||||
def save(self, force_insert=False, force_update=False):
|
|
||||||
super(Photo, self).save(force_insert, force_update)
|
|
||||||
self._savecount += 1
|
|
||||||
|
|
||||||
|
|
||||||
class PhotoForm(ModelForm):
|
|
||||||
class Meta:
|
|
||||||
model = Photo
|
|
||||||
fields = '__all__'
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.7 KiB |
|
@ -1,45 +0,0 @@
|
||||||
"""
|
|
||||||
Tests for file field behavior, and specifically #639, in which Model.save()
|
|
||||||
gets called *again* for each FileField. This test will fail if calling a
|
|
||||||
ModelForm's save() method causes Model.save() to be called more than once.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
|
||||||
from django.utils._os import upath
|
|
||||||
|
|
||||||
from .models import Photo, PhotoForm, temp_storage_dir
|
|
||||||
|
|
||||||
|
|
||||||
class Bug639Test(unittest.TestCase):
|
|
||||||
|
|
||||||
def test_bug_639(self):
|
|
||||||
"""
|
|
||||||
Simulate a file upload and check how many times Model.save() gets
|
|
||||||
called.
|
|
||||||
"""
|
|
||||||
# Grab an image for testing.
|
|
||||||
filename = os.path.join(os.path.dirname(upath(__file__)), "test.jpg")
|
|
||||||
with open(filename, "rb") as fp:
|
|
||||||
img = fp.read()
|
|
||||||
|
|
||||||
# Fake a POST QueryDict and FILES MultiValueDict.
|
|
||||||
data = {'title': 'Testing'}
|
|
||||||
files = {"image": SimpleUploadedFile('test.jpg', img, 'image/jpeg')}
|
|
||||||
|
|
||||||
form = PhotoForm(data=data, files=files)
|
|
||||||
p = form.save()
|
|
||||||
|
|
||||||
# Check the savecount stored on the object (see the model).
|
|
||||||
self.assertEqual(p._savecount, 1)
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
"""
|
|
||||||
Make sure to delete the "uploaded" file to avoid clogging /tmp.
|
|
||||||
"""
|
|
||||||
p = Photo.objects.get()
|
|
||||||
p.image.delete(save=False)
|
|
||||||
shutil.rmtree(temp_storage_dir)
|
|
|
@ -407,3 +407,19 @@ class StumpJoke(models.Model):
|
||||||
class Student(models.Model):
|
class Student(models.Model):
|
||||||
character = models.ForeignKey(Character)
|
character = models.ForeignKey(Character)
|
||||||
study = models.CharField(max_length=30)
|
study = models.CharField(max_length=30)
|
||||||
|
|
||||||
|
|
||||||
|
# Model for #639
|
||||||
|
class Photo(models.Model):
|
||||||
|
title = models.CharField(max_length=30)
|
||||||
|
image = models.FileField(storage=temp_storage, upload_to='tests')
|
||||||
|
|
||||||
|
# Support code for the tests; this keeps track of how many times save()
|
||||||
|
# gets called on each instance.
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(Photo, self).__init__(*args, **kwargs)
|
||||||
|
self._savecount = 0
|
||||||
|
|
||||||
|
def save(self, force_insert=False, force_update=False):
|
||||||
|
super(Photo, self).save(force_insert, force_update)
|
||||||
|
self._savecount += 1
|
||||||
|
|
|
@ -20,7 +20,7 @@ from django.utils import six
|
||||||
from .models import (Article, ArticleStatus, Author, Author1, BetterWriter, BigInt, Book,
|
from .models import (Article, ArticleStatus, Author, Author1, BetterWriter, BigInt, Book,
|
||||||
Category, CommaSeparatedInteger, CustomFF, CustomFieldForExclusionModel,
|
Category, CommaSeparatedInteger, CustomFF, CustomFieldForExclusionModel,
|
||||||
DerivedBook, DerivedPost, Document, ExplicitPK, FilePathModel, FlexibleDatePost, Homepage,
|
DerivedBook, DerivedPost, Document, ExplicitPK, FilePathModel, FlexibleDatePost, Homepage,
|
||||||
ImprovedArticle, ImprovedArticleWithParentLink, Inventory, Person, Post, Price,
|
ImprovedArticle, ImprovedArticleWithParentLink, Inventory, Person, Photo, Post, Price,
|
||||||
Product, Publication, TextFile, Triple, Writer, WriterProfile,
|
Product, Publication, TextFile, Triple, Writer, WriterProfile,
|
||||||
Colour, ColourfulItem, DateTimePost, CustomErrorMessage,
|
Colour, ColourfulItem, DateTimePost, CustomErrorMessage,
|
||||||
test_images, StumpJoke, Character, Student)
|
test_images, StumpJoke, Character, Student)
|
||||||
|
@ -1856,6 +1856,36 @@ class FileAndImageFieldTests(TestCase):
|
||||||
form = CFFForm(data={'f': None})
|
form = CFFForm(data={'f': None})
|
||||||
form.save()
|
form.save()
|
||||||
|
|
||||||
|
def test_file_field_multiple_save(self):
|
||||||
|
"""
|
||||||
|
Simulate a file upload and check how many times Model.save() gets
|
||||||
|
called. Test for bug #639.
|
||||||
|
"""
|
||||||
|
class PhotoForm(forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = Photo
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
# Grab an image for testing.
|
||||||
|
filename = os.path.join(os.path.dirname(upath(__file__)), "test.png")
|
||||||
|
with open(filename, "rb") as fp:
|
||||||
|
img = fp.read()
|
||||||
|
|
||||||
|
# Fake a POST QueryDict and FILES MultiValueDict.
|
||||||
|
data = {'title': 'Testing'}
|
||||||
|
files = {"image": SimpleUploadedFile('test.png', img, 'image/png')}
|
||||||
|
|
||||||
|
form = PhotoForm(data=data, files=files)
|
||||||
|
p = form.save()
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Check the savecount stored on the object (see the model).
|
||||||
|
self.assertEqual(p._savecount, 1)
|
||||||
|
finally:
|
||||||
|
# Delete the "uploaded" file to avoid clogging /tmp.
|
||||||
|
p = Photo.objects.get()
|
||||||
|
p.image.delete(save=False)
|
||||||
|
|
||||||
def test_file_path_field_blank(self):
|
def test_file_path_field_blank(self):
|
||||||
"""
|
"""
|
||||||
Regression test for #8842: FilePathField(blank=True)
|
Regression test for #8842: FilePathField(blank=True)
|
||||||
|
|
Loading…
Reference in New Issue