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
|
||||
|
||||
|
||||
class Bug8245Test(TestCase):
|
||||
class AdminAutoDiscoverTests(TestCase):
|
||||
"""
|
||||
Test for bug #8245 - don't raise an AlreadyRegistered exception when using
|
||||
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.
|
||||
with self.assertRaises(Exception) as cm:
|
||||
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):
|
||||
character = models.ForeignKey(Character)
|
||||
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,
|
||||
Category, CommaSeparatedInteger, CustomFF, CustomFieldForExclusionModel,
|
||||
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,
|
||||
Colour, ColourfulItem, DateTimePost, CustomErrorMessage,
|
||||
test_images, StumpJoke, Character, Student)
|
||||
|
@ -1856,6 +1856,36 @@ class FileAndImageFieldTests(TestCase):
|
|||
form = CFFForm(data={'f': None})
|
||||
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):
|
||||
"""
|
||||
Regression test for #8842: FilePathField(blank=True)
|
||||
|
|
Loading…
Reference in New Issue