def transactional_db(django_db_blocker, request): # Django's/Pytest Django's handling of this is garbage # The database is wipe of initial data and never repopulated so we have to do # all of it ourselves django_db_blocker.unblock() request.addfinalizer(django_db_blocker.restore) from django.test import TransactionTestCase test_case = TransactionTestCase(methodName='__init__') test_case._pre_setup() # Dump all initial data into a string :+1: for connection in connections.all(): if connection.settings_dict['TEST']['MIRROR']: continue connection._test_serialized_contents = connection.creation.serialize_db_to_string( ) yield None test_case.serialized_rollback = True test_case._post_teardown() # Disconnect post save listeners because they screw up deserialization receivers, post_save.receivers = post_save.receivers, [] if test_case.available_apps is not None: apps.unset_available_apps() for connection in connections.all(): if connection.settings_dict['TEST']['MIRROR']: connection.close() continue # Everything has to be in a single transaction to avoid violating key constraints # It also makes it run significantly faster with transaction.atomic(): connection.creation.deserialize_db_from_string( connection._test_serialized_contents) if test_case.available_apps is not None: apps.set_available_apps(test_case.available_apps) post_save.receivers = receivers
def test_filter_group(self): t = TransactionTestCase() qs = fixture.group_query_filter() result = fixture.filter_group_name().filter(qs, 'ex') qs2 = GroupFilter.custom_filter(self, qs, '', 'ex') t.assertQuerysetEqual(qs2, [repr(r) for r in result])
def test_filter_from_person(self): t = TransactionTestCase() qs = fixture.from_person_query_filter() result = fixture.filter_person_name().filter(qs, 'ex') qs2 = FromPersonFilter.custom_filter(self, qs, '', 'ex') t.assertQuerysetEqual(qs2, [repr(r) for r in result])