Пример #1
0
class TestMobileTemplatesDir(TestCase):

    def setUp(self):
        self.detection_middleware = MobileDetectionMiddleware()
        self.factory = RequestFactory()
        self.template_loader = template.Loader()

    def test_useragent_based_templatedirs(self):
        # Override the TEMPLATE_LOADERS and MIDDLEWARE_CLASSES settings
        # to use the middlewares in ``opps.contrib.mobile.middleware``
        # and the ``opps.contrib.mobile.template.Loader``
        MIDDLEWARE_CLASSES = (
            'django.middleware.common.CommonMiddleware',
            'opps.contrib.mobile.middleware.MobileDetectionMiddleware',
            'opps.contrib.mobile.middleware.MobileRedirectMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
        )
        TEMPLATE_LOADERS = (
            'opps.contrib.mobile.template.Loader',
            'django.template.loaders.app_directories.Loader',
        )
        TEMPLATE_DIRS_MOBILE = ('mobile-templates',)
        TEMPLATE_DIRS_WEB = ('web-templates',)

        custom_settings = self.settings(
            MIDDLEWARE_CLASSES=MIDDLEWARE_CLASSES,
            TEMPLATE_LOADERS=TEMPLATE_LOADERS,
            TEMPLATE_DIRS_MOBILE=TEMPLATE_DIRS_MOBILE,
            TEMPLATE_DIRS_WEB=TEMPLATE_DIRS_WEB,
            OPPS_CHECK_MOBILE=True,
            OPPS_DOMAIN_MOBILE='m.testserver'
        )
        with custom_settings:
            mobile_request = self.factory.get('/', HTTP_USER_AGENT='mobi')
            desktop_request = self.factory.get('/',
                                               HTTP_USER_AGENT='Mozilla/5.0')

            get_template_sources = self.template_loader.get_template_sources

            self.detection_middleware.process_request(desktop_request)
            self.assertEqual(
                get_template_sources('index.html').next(),
                get_template_sources('index.html', TEMPLATE_DIRS_WEB).next()
            )

            self.detection_middleware.process_request(mobile_request)
            self.assertEqual(
                get_template_sources('index.html').next(),
                get_template_sources('index.html', TEMPLATE_DIRS_MOBILE).next()
            )
Пример #2
0
class TestMobileTemplatesDir(TestCase):
    def setUp(self):
        self.detection_middleware = MobileDetectionMiddleware()
        self.factory = RequestFactory()
        self.template_loader = template.Loader()

    def test_useragent_based_templatedirs(self):
        # Override the TEMPLATE_LOADERS and MIDDLEWARE_CLASSES settings
        # to use the middlewares in ``opps.contrib.mobile.middleware``
        # and the ``opps.contrib.mobile.template.Loader``
        MIDDLEWARE_CLASSES = (
            'django.middleware.common.CommonMiddleware',
            'opps.contrib.mobile.middleware.MobileDetectionMiddleware',
            'opps.contrib.mobile.middleware.MobileRedirectMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
        )
        TEMPLATE_LOADERS = (
            'opps.contrib.mobile.template.Loader',
            'django.template.loaders.app_directories.Loader',
        )
        TEMPLATE_DIRS_MOBILE = ('mobile-templates', )
        TEMPLATE_DIRS_WEB = ('web-templates', )

        custom_settings = self.settings(
            MIDDLEWARE_CLASSES=MIDDLEWARE_CLASSES,
            TEMPLATE_LOADERS=TEMPLATE_LOADERS,
            TEMPLATE_DIRS_MOBILE=TEMPLATE_DIRS_MOBILE,
            TEMPLATE_DIRS_WEB=TEMPLATE_DIRS_WEB,
            OPPS_CHECK_MOBILE=True,
            OPPS_DOMAIN_MOBILE='m.testserver')
        with custom_settings:
            mobile_request = self.factory.get('/', HTTP_USER_AGENT='mobi')
            desktop_request = self.factory.get('/',
                                               HTTP_USER_AGENT='Mozilla/5.0')

            get_template_sources = self.template_loader.get_template_sources

            self.detection_middleware.process_request(desktop_request)
            self.assertEqual(
                get_template_sources('index.html').next(),
                get_template_sources('index.html', TEMPLATE_DIRS_WEB).next())

            self.detection_middleware.process_request(mobile_request)
            self.assertEqual(
                get_template_sources('index.html').next(),
                get_template_sources('index.html',
                                     TEMPLATE_DIRS_MOBILE).next())
Пример #3
0
 def setUp(self):
     self.detection_middleware = MobileDetectionMiddleware()
     self.factory = RequestFactory()
     self.template_loader = template.Loader()
Пример #4
0
 def setUp(self):
     self.detection_middleware = MobileDetectionMiddleware()
     self.factory = RequestFactory()
     self.template_loader = template.Loader()