import imp import sys import uuid from optimize_later.core import optimize_later, OptimizeReport try: import django except ImportError: pass else: from django.test import TestCase from optimize_later import apps class DjangoCallbackTest(TestCase): def make_module_path(self, function): name = 'id_%s' % (uuid.uuid4().hex,) module = imp.new_module(name) module.function = function sys.modules[name] = module return '%s.function' % (name,) def test_no_callbacks(self): apps.initialize_django_callbacks() self.assertEqual(apps.django_callbacks, []) def test_callbacks(self): reports = [] with self.settings(OPTIMIZE_LATER_CALLBACKS=[ self.make_module_path(reports.append), ]): apps.initialize_django_callbacks() with optimize_later('test'): pass self.assertEqual(len(reports), 1) self.assertIsInstance(reports[0], OptimizeReport)