mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #22979 -- Moved bug* tests
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						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) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user