Isolate responsabilities
This commit is contained in:
parent
89e44803de
commit
c86a0917cb
3 changed files with 38 additions and 27 deletions
|
@ -13,32 +13,27 @@ import os
|
||||||
import django
|
import django
|
||||||
from pyvows import Vows
|
from pyvows import Vows
|
||||||
|
|
||||||
from django_pyvows import http_helpers
|
from django_pyvows.http_helpers import HttpClientSupport
|
||||||
|
from django_pyvows.settings_helpers import SettingsOverrideSupport
|
||||||
|
|
||||||
|
|
||||||
class DjangoContext(Vows.Context):
|
class DjangoContext(Vows.Context, HttpClientSupport, SettingsOverrideSupport):
|
||||||
|
def __init__(self, parent):
|
||||||
|
super(DjangoContext, self).__init__(parent)
|
||||||
|
HttpClientSupport.__init__(self)
|
||||||
|
SettingsOverrideSupport.__init__(self)
|
||||||
|
self.ignore('start_environment', 'settings_module')
|
||||||
|
|
||||||
|
def settings_module(self):
|
||||||
|
return 'settings'
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def start_environment(cls, settings_path):
|
def start_environment(cls, settings_module):
|
||||||
if not settings_path:
|
if not settings_module:
|
||||||
raise ValueError('The settings_path argument is required.')
|
raise ValueError('The settings_path argument is required.')
|
||||||
|
|
||||||
os.environ.update({'DJANGO_SETTINGS_MODULE': settings_path})
|
os.environ.update({'DJANGO_SETTINGS_MODULE': settings_module})
|
||||||
django.setup()
|
django.setup()
|
||||||
|
|
||||||
from django.test.utils import setup_test_environment
|
from django.test.utils import setup_test_environment
|
||||||
setup_test_environment()
|
setup_test_environment()
|
||||||
|
|
||||||
def __init__(self, parent):
|
|
||||||
super(DjangoContext, self).__init__(parent)
|
|
||||||
self.ignore('start_environment', 'settings', 'get', 'post')
|
|
||||||
|
|
||||||
def settings(self, **kwargs):
|
|
||||||
from django.test.utils import override_settings
|
|
||||||
return override_settings(**kwargs)
|
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
return http_helpers.get(*args, **kwargs)
|
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
|
||||||
return http_helpers.post(*args, **kwargs)
|
|
||||||
|
|
|
@ -2,13 +2,20 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
def get(*args, **kwargs):
|
class HttpClientSupport(object):
|
||||||
from django.test.client import Client
|
def __init__(self):
|
||||||
client = Client()
|
self._client = None
|
||||||
return client.get(*args, **kwargs)
|
self.ignore('get', 'post')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def client(self):
|
||||||
|
if self._client is None:
|
||||||
|
from django.test.client import Client # Needs to be lazy loaded due settings config
|
||||||
|
self._client = Client()
|
||||||
|
return self._client
|
||||||
|
|
||||||
def post(*args, **kwargs):
|
def get(self, *args, **kwargs):
|
||||||
from django.test.client import Client
|
return self.client.get(*args, **kwargs)
|
||||||
client = Client()
|
|
||||||
return client.post(*args, **kwargs)
|
def post(self, *args, **kwargs):
|
||||||
|
return self.client.post(*args, **kwargs)
|
||||||
|
|
9
django_pyvows/settings_helpers.py
Normal file
9
django_pyvows/settings_helpers.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
class SettingsOverrideSupport(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.ignore('settings')
|
||||||
|
|
||||||
|
def settings(self, **kwargs):
|
||||||
|
from django.test.utils import override_settings
|
||||||
|
return override_settings(**kwargs)
|
Reference in a new issue