Fixed #25251 -- Made data migrations available in TransactionTestCase when using --keepdb.

Data loaded in migrations were restored at the beginning of each
TransactionTestCase and all the tables are truncated at the end of
these test cases. If there was a TransactionTestCase at the end of
the test suite, the migrated data weren't restored in the database
(especially unexpected when using --keepdb). Now data is restored
at the end of each TransactionTestCase.
This commit is contained in:
romgar 2016-11-07 22:08:40 +00:00 committed by Tim Graham
parent ecac6d7a2a
commit b3b1d3d45f
9 changed files with 217 additions and 15 deletions

View file

@ -223,3 +223,31 @@ class DiscoverRunnerTest(TestCase):
with captured_stdout() as stdout:
runner.build_suite(['test_runner_apps.tagged.tests'])
self.assertIn('Excluding test tag(s): bar, foo.\n', stdout.getvalue())
def test_transaction_test_case_before_simple_test_case(self):
runner = DiscoverRunner()
suite = runner.build_suite(['test_discovery_sample3.tests_transaction_test_case_ordering'])
suite = tuple(suite)
# TransactionTestCase is second after TestCase.
self.assertIn('TestTransactionTestCase', suite[1].id())
def test_transaction_test_case_next_serialized_rollback_option(self):
runner = DiscoverRunner()
suite = runner.build_suite(['test_discovery_sample3.tests_transaction_test_case_mixed'])
django_test_case, first_transaction_test_case, middle_transaction_test_case, \
last_transaction_test_case, vanilla_test_case = suite
# TransactionTestCase1._next_serialized_rollback is
# TransactionTestCase2.serialize_rollback.
self.assertEqual(
first_transaction_test_case._next_serialized_rollback,
middle_transaction_test_case.serialized_rollback
)
# TransactionTestCase2._next_serialized_rollback is
# TransactionTestCase3.serialize_rollback.
self.assertEqual(
middle_transaction_test_case._next_serialized_rollback,
last_transaction_test_case.serialized_rollback
)
# The last TransactionTestCase of the suite has
# _next_serialized_rollback to = True.
self.assertIs(last_transaction_test_case._next_serialized_rollback, True)