from .withUserTestCase import WithUserTestCase from backend_app.models.abstract.my_model import ForTestingVersioning from django.conf import settings from reversion.models import Version from backend_app.signals.__squash_revision_by_user import new_revision_saved from django.test import override_settings class VersioningTestCase(WithUserTestCase): @classmethod def setUpMoreTestData(cls): cls.testing_model = ForTestingVersioning cls.api_versioning = '/api/test/versioning/' def reset_signal_called(self): self.signal_was_called = False def test_setting_ok(self): self.assertTrue(settings.TESTING) ##### def _submit_put_test(self, client, data, pk): response = client.put( self.api_versioning + str(pk) + '/', data, format='json' ) self.assertEqual(response.status_code, 200) return response def _test_retreive_instance(self, data): matching = self.testing_model.objects.filter( bbb=data['bbb'] ) self.assertTrue(matching.exists()) return matching[0] #### @override_settings(MODERATION_ACTIVATED=False) def test_versioning(self): """ Test to check that versioning is working We also check that new_revision_saved is called """ def _test_signal_sent(sender, obj, **kwargs): self.signal_was_called = True new_revision_saved.connect(_test_signal_sent) data_1 = {'bbb': "Test 1"} response = self.authenticated_client.post( self.api_versioning, data_1, format='json' ) self.assertEqual(response.status_code, 201) instance = self._test_retreive_instance(data_1) versions = Version.objects.get_for_object(instance) self.assertEqual(len(versions), 1) self.assertTrue(self.signal_was_called) self.reset_signal_called() data_2 = {'bbb': "Test 2"} response = self.authenticated_client_2.put( self.api_versioning + str(instance.pk) + '/', data_2, format='json' ) self.assertEqual(response.status_code, 200) versions = Version.objects.get_for_object(instance) self.assertEqual(len(versions), 2) self.assertTrue(self.signal_was_called)