mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #32469 -- Made assertQuerysetEqual() respect maxDiff when ordered=False.
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							87acbf0631
						
					
				
				
					commit
					0e4e35722a
				
			| @@ -1062,7 +1062,7 @@ class TransactionTestCase(SimpleTestCase): | |||||||
|         if transform is not None: |         if transform is not None: | ||||||
|             items = map(transform, items) |             items = map(transform, items) | ||||||
|         if not ordered: |         if not ordered: | ||||||
|             return self.assertEqual(Counter(items), Counter(values), msg=msg) |             return self.assertDictEqual(Counter(items), Counter(values), msg=msg) | ||||||
|         # For example qs.iterator() could be passed as qs, but it does not |         # For example qs.iterator() could be passed as qs, but it does not | ||||||
|         # have 'ordered' attribute. |         # have 'ordered' attribute. | ||||||
|         if len(values) > 1 and hasattr(qs, 'ordered') and not qs.ordered: |         if len(values) > 1 and hasattr(qs, 'ordered') and not qs.ordered: | ||||||
|   | |||||||
| @@ -325,6 +325,37 @@ class AssertQuerysetEqualTests(TestCase): | |||||||
|             ordered=False |             ordered=False | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|  |     def test_maxdiff(self): | ||||||
|  |         names = ['Joe Smith %s' % i for i in range(20)] | ||||||
|  |         Person.objects.bulk_create([Person(name=name) for name in names]) | ||||||
|  |         names.append('Extra Person') | ||||||
|  |  | ||||||
|  |         with self.assertRaises(AssertionError) as ctx: | ||||||
|  |             self.assertQuerysetEqual( | ||||||
|  |                 Person.objects.filter(name__startswith='Joe'), | ||||||
|  |                 names, | ||||||
|  |                 ordered=False, | ||||||
|  |                 transform=lambda p: p.name, | ||||||
|  |             ) | ||||||
|  |         self.assertIn('Set self.maxDiff to None to see it.', str(ctx.exception)) | ||||||
|  |  | ||||||
|  |         original = self.maxDiff | ||||||
|  |         self.maxDiff = None | ||||||
|  |         try: | ||||||
|  |             with self.assertRaises(AssertionError) as ctx: | ||||||
|  |                 self.assertQuerysetEqual( | ||||||
|  |                     Person.objects.filter(name__startswith='Joe'), | ||||||
|  |                     names, | ||||||
|  |                     ordered=False, | ||||||
|  |                     transform=lambda p: p.name, | ||||||
|  |                 ) | ||||||
|  |         finally: | ||||||
|  |             self.maxDiff = original | ||||||
|  |         exception_msg = str(ctx.exception) | ||||||
|  |         self.assertNotIn('Set self.maxDiff to None to see it.', exception_msg) | ||||||
|  |         for name in names: | ||||||
|  |             self.assertIn(name, exception_msg) | ||||||
|  |  | ||||||
|  |  | ||||||
| class AssertQuerysetEqualDeprecationTests(TestCase): | class AssertQuerysetEqualDeprecationTests(TestCase): | ||||||
|     @classmethod |     @classmethod | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user