Django 1.8 support / Project revamp #13
4 changed files with 73 additions and 9 deletions
|
@ -31,16 +31,12 @@ class DjangoContext(Vows.Context):
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super(DjangoContext, self).__init__(parent)
|
super(DjangoContext, self).__init__(parent)
|
||||||
self.ignore('start_environment', 'settings', 'modify_settings', 'get', 'post')
|
self.ignore('start_environment', 'settings', 'get', 'post')
|
||||||
|
|
||||||
def settings(self, **kwargs):
|
def settings(self, **kwargs):
|
||||||
from django.test.utils import override_settings
|
from django.test.utils import override_settings
|
||||||
return override_settings(**kwargs)
|
return override_settings(**kwargs)
|
||||||
|
|
||||||
def modify_settings(self, **kwargs):
|
|
||||||
from django.test.utils import modify_settings
|
|
||||||
return modify_settings(**kwargs)
|
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
def get(self, *args, **kwargs):
|
||||||
return http_helpers.get(*args, **kwargs)
|
return http_helpers.get(*args, **kwargs)
|
||||||
|
|
||||||
|
|
61
vows/client_vows.py
Normal file
61
vows/client_vows.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# django-pyvows extensions
|
||||||
|
# https://github.com/rafaelcaricio/django-pyvows
|
||||||
|
|
||||||
|
# Licensed under the MIT license:
|
||||||
|
# http://www.opensource.org/licenses/mit-license
|
||||||
|
# Copyright (c) 2011 Rafael Caricio rafael@caricio.com
|
||||||
|
from os.path import abspath, join, dirname
|
||||||
|
|
||||||
|
from pyvows import Vows, expect
|
||||||
|
|
||||||
|
from django_pyvows.context import DjangoContext
|
||||||
|
|
||||||
|
|
||||||
|
TEST_FILE_PATH = abspath(join(dirname(__file__), 'fixtures/the_file.txt'))
|
||||||
|
|
||||||
|
DjangoContext.start_environment("sandbox.sandbox.settings")
|
||||||
|
|
||||||
|
|
||||||
|
@Vows.batch
|
||||||
|
class DjangoHTTPTestClientCompatibilityVows(DjangoContext):
|
||||||
|
|
||||||
|
class SimpleGet(DjangoContext):
|
||||||
|
def topic(self):
|
||||||
|
return self.get('/say/')
|
||||||
|
|
||||||
|
def should_be_ok(self, topic):
|
||||||
|
expect(topic.status_code).to_equal(200)
|
||||||
|
|
||||||
|
def should_ask_for_my_name(self, topic):
|
||||||
|
expect(topic.content).to_equal('What\'s your name?')
|
||||||
|
|
||||||
|
class SimpleGetWithParams(DjangoContext):
|
||||||
|
def topic(self):
|
||||||
|
return self.get('/say/?name=Rafael')
|
||||||
|
|
||||||
|
def should_say_hello_to_me(self, topic):
|
||||||
|
expect(topic.content).to_equal('Hello, Rafael!')
|
||||||
|
|
||||||
|
class SimplePost(DjangoContext):
|
||||||
|
def topic(self):
|
||||||
|
return self.post('/post_it/', {'value': 'posted!'})
|
||||||
|
|
||||||
|
def should_be_posted(self, topic):
|
||||||
|
expect(topic.content).to_equal('posted!')
|
||||||
|
|
||||||
|
class PostFile(DjangoContext):
|
||||||
|
def topic(self):
|
||||||
|
return self.post('/post_file/', {'the_file': open(TEST_FILE_PATH)})
|
||||||
|
|
||||||
|
def should_be_posted_to_the_server(self, topic):
|
||||||
|
expect(topic.content).to_equal("the contents")
|
||||||
|
|
||||||
|
class WhenNotFound(DjangoContext):
|
||||||
|
def topic(self):
|
||||||
|
return self.post('/post_/', {'the_file': open(TEST_FILE_PATH)})
|
||||||
|
|
||||||
|
def should_be_404(self, topic):
|
||||||
|
expect(topic.status_code).to_equal(404)
|
|
@ -21,7 +21,7 @@ def say_hello(request):
|
||||||
if 'name' in request.GET:
|
if 'name' in request.GET:
|
||||||
name = request.GET['name']
|
name = request.GET['name']
|
||||||
elif SAY_HELLO_WITHOUT_NAME:
|
elif SAY_HELLO_WITHOUT_NAME:
|
||||||
name = 'guess'
|
name = 'guest'
|
||||||
else:
|
else:
|
||||||
return HttpResponse("What's your name?")
|
return HttpResponse("What's your name?")
|
||||||
return HttpResponse("Hello, %s!" % name)
|
return HttpResponse("Hello, %s!" % name)
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
# Copyright (c) 2011 Rafael Caricio rafael@caricio.com
|
# Copyright (c) 2011 Rafael Caricio rafael@caricio.com
|
||||||
|
|
||||||
from pyvows import Vows, expect
|
from pyvows import Vows, expect
|
||||||
|
from django.test.utils import override_settings
|
||||||
|
|
||||||
from django_pyvows.context import DjangoContext
|
from django_pyvows.context import DjangoContext
|
||||||
|
|
||||||
|
@ -19,7 +20,6 @@ DjangoContext.start_environment("sandbox.sandbox.settings")
|
||||||
class SettingsOverridingVows(DjangoContext):
|
class SettingsOverridingVows(DjangoContext):
|
||||||
|
|
||||||
class CannotSayHelloWithoutName(DjangoContext):
|
class CannotSayHelloWithoutName(DjangoContext):
|
||||||
|
|
||||||
def topic(self):
|
def topic(self):
|
||||||
with self.settings(SAY_HELLO_WITHOUT_NAME=False):
|
with self.settings(SAY_HELLO_WITHOUT_NAME=False):
|
||||||
return self.get('/say/')
|
return self.get('/say/')
|
||||||
|
@ -31,7 +31,6 @@ class SettingsOverridingVows(DjangoContext):
|
||||||
expect(topic.content).to_equal("What's your name?")
|
expect(topic.content).to_equal("What's your name?")
|
||||||
|
|
||||||
class SayHelloWithoutName(DjangoContext):
|
class SayHelloWithoutName(DjangoContext):
|
||||||
|
|
||||||
def topic(self):
|
def topic(self):
|
||||||
with self.settings(SAY_HELLO_WITHOUT_NAME=True):
|
with self.settings(SAY_HELLO_WITHOUT_NAME=True):
|
||||||
return self.get('/say/')
|
return self.get('/say/')
|
||||||
|
@ -40,4 +39,12 @@ class SettingsOverridingVows(DjangoContext):
|
||||||
expect(topic.status_code).to_equal(200)
|
expect(topic.status_code).to_equal(200)
|
||||||
|
|
||||||
def should_(self, topic):
|
def should_(self, topic):
|
||||||
expect(topic.content).to_equal("Hello, guess!")
|
expect(topic.content).to_equal("Hello, guest!")
|
||||||
|
|
||||||
|
class UseDecoratorToChangeSettings(DjangoContext):
|
||||||
|
@override_settings(SAY_HELLO_WITHOUT_NAME=True)
|
||||||
|
def topic(self):
|
||||||
|
return self.get('/say/')
|
||||||
|
|
||||||
|
def should_say_hello_to_guest(self, topic):
|
||||||
|
expect(topic.content).to_equal("Hello, guest!")
|
||||||
|
|
Reference in a new issue