Browse Source

Fixed various tests on MySQL with MyISAM storage engine.

Mariusz Felisiak 2 years ago
parent
commit
8e89dfe1c2

+ 24 - 26
tests/admin_filters/tests.py

@@ -1440,19 +1440,18 @@ class ListFiltersTests(TestCase):
 
         filterspec = changelist.get_filters(request)[0][-1]
         self.assertEqual(filterspec.title, "department")
-        choices = list(filterspec.choices(changelist))
-
-        self.assertEqual(choices[0]["display"], "All")
-        self.assertIs(choices[0]["selected"], True)
-        self.assertEqual(choices[0]["query_string"], "?")
-
-        self.assertEqual(choices[1]["display"], "Development")
-        self.assertIs(choices[1]["selected"], False)
-        self.assertEqual(choices[1]["query_string"], "?department__code__exact=DEV")
-
-        self.assertEqual(choices[2]["display"], "Design")
-        self.assertIs(choices[2]["selected"], False)
-        self.assertEqual(choices[2]["query_string"], "?department__code__exact=DSN")
+        choices = [
+            (choice["display"], choice["selected"], choice["query_string"])
+            for choice in filterspec.choices(changelist)
+        ]
+        self.assertCountEqual(
+            choices,
+            [
+                ("All", True, "?"),
+                ("Development", False, "?department__code__exact=DEV"),
+                ("Design", False, "?department__code__exact=DSN"),
+            ],
+        )
 
         # Filter by Department=='Development' --------------------------------
 
@@ -1466,19 +1465,18 @@ class ListFiltersTests(TestCase):
 
         filterspec = changelist.get_filters(request)[0][-1]
         self.assertEqual(filterspec.title, "department")
-        choices = list(filterspec.choices(changelist))
-
-        self.assertEqual(choices[0]["display"], "All")
-        self.assertIs(choices[0]["selected"], False)
-        self.assertEqual(choices[0]["query_string"], "?")
-
-        self.assertEqual(choices[1]["display"], "Development")
-        self.assertIs(choices[1]["selected"], True)
-        self.assertEqual(choices[1]["query_string"], "?department__code__exact=DEV")
-
-        self.assertEqual(choices[2]["display"], "Design")
-        self.assertIs(choices[2]["selected"], False)
-        self.assertEqual(choices[2]["query_string"], "?department__code__exact=DSN")
+        choices = [
+            (choice["display"], choice["selected"], choice["query_string"])
+            for choice in filterspec.choices(changelist)
+        ]
+        self.assertCountEqual(
+            choices,
+            [
+                ("All", False, "?"),
+                ("Development", True, "?department__code__exact=DEV"),
+                ("Design", False, "?department__code__exact=DSN"),
+            ],
+        )
 
     def test_lookup_with_dynamic_value(self):
         """

+ 3 - 0
tests/admin_views/test_multidb.py

@@ -16,6 +16,9 @@ class Router:
 
     db_for_write = db_for_read
 
+    def allow_relation(self, obj1, obj2, **hints):
+        return True
+
 
 site = admin.AdminSite(name="test_adminsite")
 site.register(Book)

+ 3 - 0
tests/auth_tests/test_admin_multidb.py

@@ -15,6 +15,9 @@ class Router:
 
     db_for_write = db_for_read
 
+    def allow_relation(self, obj1, obj2, **hints):
+        return True
+
 
 site = admin.AdminSite(name="test_adminsite")
 site.register(User, admin_class=UserAdmin)

+ 10 - 2
tests/backends/tests.py

@@ -694,8 +694,12 @@ class FkConstraintsTests(TransactionTestCase):
             a.reporter_id = 30
             with connection.constraint_checks_disabled():
                 a.save()
-                with self.assertRaises(IntegrityError):
+                try:
                     connection.check_constraints(table_names=[Article._meta.db_table])
+                except IntegrityError:
+                    pass
+                else:
+                    self.skipTest("This backend does not support integrity checks.")
             transaction.set_rollback(True)
 
     def test_check_constraints_sql_keywords(self):
@@ -705,8 +709,12 @@ class FkConstraintsTests(TransactionTestCase):
             obj.reporter_id = 30
             with connection.constraint_checks_disabled():
                 obj.save()
-                with self.assertRaises(IntegrityError):
+                try:
                     connection.check_constraints(table_names=["order"])
+                except IntegrityError:
+                    pass
+                else:
+                    self.skipTest("This backend does not support integrity checks.")
             transaction.set_rollback(True)
 
 

+ 3 - 0
tests/contenttypes_tests/test_models.py

@@ -288,6 +288,9 @@ class TestRouter:
     def db_for_write(self, model, **hints):
         return "default"
 
+    def allow_relation(self, obj1, obj2, **hints):
+        return True
+
 
 @override_settings(DATABASE_ROUTERS=[TestRouter()])
 class ContentTypesMultidbTests(TestCase):

+ 3 - 0
tests/model_forms/models.py

@@ -21,6 +21,9 @@ class Category(models.Model):
     slug = models.SlugField(max_length=20)
     url = models.CharField("The URL", max_length=40)
 
+    class Meta:
+        ordering = ("pk",)
+
     def __str__(self):
         return self.name
 

+ 1 - 1
tests/raw_query/tests.py

@@ -310,7 +310,7 @@ class RawQueryTests(TestCase):
             ("book_count", 1),
             ("book_count", 0),
         )
-        authors = Author.objects.all()
+        authors = Author.objects.order_by("pk")
         self.assertSuccessfulRawQuery(Author, query, authors, expected_annotations)
 
     def test_white_space_query(self):

+ 7 - 5
tests/serializers/test_natural.py

@@ -78,11 +78,13 @@ def natural_key_test(self, format):
 
     # Deserialize and test.
     books = list(serializers.deserialize(format, string_data))
-    self.assertEqual(len(books), 2)
-    self.assertEqual(books[0].object.title, book1["title"])
-    self.assertEqual(books[0].object.pk, adrian.pk)
-    self.assertEqual(books[1].object.title, book2["title"])
-    self.assertIsNone(books[1].object.pk)
+    self.assertCountEqual(
+        [(book.object.title, book.object.pk) for book in books],
+        [
+            (book1["title"], adrian.pk),
+            (book2["title"], None),
+        ],
+    )
 
 
 def natural_pk_mti_test(self, format):