aboutsummaryrefslogtreecommitdiffstats
path: root/examples/blogpost/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/blogpost/tests.py')
-rw-r--r--examples/blogpost/tests.py164
1 files changed, 83 insertions, 81 deletions
diff --git a/examples/blogpost/tests.py b/examples/blogpost/tests.py
index 9b9a682f..e55f0f90 100644
--- a/examples/blogpost/tests.py
+++ b/examples/blogpost/tests.py
@@ -7,79 +7,80 @@ from django.core.urlresolvers import reverse
from django.utils import simplejson as json
from djangorestframework.compat import RequestFactory
-
-from blogpost import views, models
-import blogpost
-
-
-class AcceptHeaderTests(TestCase):
- """Test correct behaviour of the Accept header as specified by RFC 2616:
-
- http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1"""
-
- def assert_accept_mimetype(self, mimetype, expect=None):
- """Assert that a request with given mimetype in the accept header,
- gives a response with the appropriate content-type."""
- if expect is None:
- expect = mimetype
-
- resp = self.client.get(reverse(views.RootResource), HTTP_ACCEPT=mimetype)
-
- self.assertEquals(resp['content-type'], expect)
-
-
- def dont_test_accept_json(self):
- """Ensure server responds with Content-Type of JSON when requested."""
- self.assert_accept_mimetype('application/json')
-
- def dont_test_accept_xml(self):
- """Ensure server responds with Content-Type of XML when requested."""
- self.assert_accept_mimetype('application/xml')
-
- def dont_test_accept_json_when_prefered_to_xml(self):
- """Ensure server responds with Content-Type of JSON when it is the client's prefered choice."""
- self.assert_accept_mimetype('application/json;q=0.9, application/xml;q=0.1', expect='application/json')
-
- def dont_test_accept_xml_when_prefered_to_json(self):
- """Ensure server responds with Content-Type of XML when it is the client's prefered choice."""
- self.assert_accept_mimetype('application/json;q=0.1, application/xml;q=0.9', expect='application/xml')
-
- def dont_test_default_json_prefered(self):
- """Ensure server responds with JSON in preference to XML."""
- self.assert_accept_mimetype('application/json,application/xml', expect='application/json')
-
- def dont_test_accept_generic_subtype_format(self):
- """Ensure server responds with an appropriate type, when the subtype is left generic."""
- self.assert_accept_mimetype('text/*', expect='text/html')
-
- def dont_test_accept_generic_type_format(self):
- """Ensure server responds with an appropriate type, when the type and subtype are left generic."""
- self.assert_accept_mimetype('*/*', expect='application/json')
-
- def dont_test_invalid_accept_header_returns_406(self):
- """Ensure server returns a 406 (not acceptable) response if we set the Accept header to junk."""
- resp = self.client.get(reverse(views.RootResource), HTTP_ACCEPT='invalid/invalid')
- self.assertNotEquals(resp['content-type'], 'invalid/invalid')
- self.assertEquals(resp.status_code, 406)
-
- def dont_test_prefer_specific_over_generic(self): # This test is broken right now
- """More specific accept types have precedence over less specific types."""
- self.assert_accept_mimetype('application/xml, */*', expect='application/xml')
- self.assert_accept_mimetype('*/*, application/xml', expect='application/xml')
-
-
-class AllowedMethodsTests(TestCase):
- """Basic tests to check that only allowed operations may be performed on a Resource"""
-
- def dont_test_reading_a_read_only_resource_is_allowed(self):
- """GET requests on a read only resource should default to a 200 (OK) response"""
- resp = self.client.get(reverse(views.RootResource))
- self.assertEquals(resp.status_code, 200)
-
- def dont_test_writing_to_read_only_resource_is_not_allowed(self):
- """PUT requests on a read only resource should default to a 405 (method not allowed) response"""
- resp = self.client.put(reverse(views.RootResource), {})
- self.assertEquals(resp.status_code, 405)
+from djangorestframework.views import InstanceModelView, ListOrCreateModelView
+
+from blogpost import models, urls
+#import blogpost
+
+
+# class AcceptHeaderTests(TestCase):
+# """Test correct behaviour of the Accept header as specified by RFC 2616:
+#
+# http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1"""
+#
+# def assert_accept_mimetype(self, mimetype, expect=None):
+# """Assert that a request with given mimetype in the accept header,
+# gives a response with the appropriate content-type."""
+# if expect is None:
+# expect = mimetype
+#
+# resp = self.client.get(reverse(views.RootResource), HTTP_ACCEPT=mimetype)
+#
+# self.assertEquals(resp['content-type'], expect)
+#
+#
+# def dont_test_accept_json(self):
+# """Ensure server responds with Content-Type of JSON when requested."""
+# self.assert_accept_mimetype('application/json')
+#
+# def dont_test_accept_xml(self):
+# """Ensure server responds with Content-Type of XML when requested."""
+# self.assert_accept_mimetype('application/xml')
+#
+# def dont_test_accept_json_when_prefered_to_xml(self):
+# """Ensure server responds with Content-Type of JSON when it is the client's prefered choice."""
+# self.assert_accept_mimetype('application/json;q=0.9, application/xml;q=0.1', expect='application/json')
+#
+# def dont_test_accept_xml_when_prefered_to_json(self):
+# """Ensure server responds with Content-Type of XML when it is the client's prefered choice."""
+# self.assert_accept_mimetype('application/json;q=0.1, application/xml;q=0.9', expect='application/xml')
+#
+# def dont_test_default_json_prefered(self):
+# """Ensure server responds with JSON in preference to XML."""
+# self.assert_accept_mimetype('application/json,application/xml', expect='application/json')
+#
+# def dont_test_accept_generic_subtype_format(self):
+# """Ensure server responds with an appropriate type, when the subtype is left generic."""
+# self.assert_accept_mimetype('text/*', expect='text/html')
+#
+# def dont_test_accept_generic_type_format(self):
+# """Ensure server responds with an appropriate type, when the type and subtype are left generic."""
+# self.assert_accept_mimetype('*/*', expect='application/json')
+#
+# def dont_test_invalid_accept_header_returns_406(self):
+# """Ensure server returns a 406 (not acceptable) response if we set the Accept header to junk."""
+# resp = self.client.get(reverse(views.RootResource), HTTP_ACCEPT='invalid/invalid')
+# self.assertNotEquals(resp['content-type'], 'invalid/invalid')
+# self.assertEquals(resp.status_code, 406)
+#
+# def dont_test_prefer_specific_over_generic(self): # This test is broken right now
+# """More specific accept types have precedence over less specific types."""
+# self.assert_accept_mimetype('application/xml, */*', expect='application/xml')
+# self.assert_accept_mimetype('*/*, application/xml', expect='application/xml')
+#
+#
+# class AllowedMethodsTests(TestCase):
+# """Basic tests to check that only allowed operations may be performed on a Resource"""
+#
+# def dont_test_reading_a_read_only_resource_is_allowed(self):
+# """GET requests on a read only resource should default to a 200 (OK) response"""
+# resp = self.client.get(reverse(views.RootResource))
+# self.assertEquals(resp.status_code, 200)
+#
+# def dont_test_writing_to_read_only_resource_is_not_allowed(self):
+# """PUT requests on a read only resource should default to a 405 (method not allowed) response"""
+# resp = self.client.put(reverse(views.RootResource), {})
+# self.assertEquals(resp.status_code, 405)
#
# def test_reading_write_only_not_allowed(self):
# resp = self.client.get(reverse(views.WriteOnlyResource))
@@ -178,32 +179,33 @@ class TestRotation(TestCase):
models.BlogPost.objects.all().delete()
def test_get_to_root(self):
- '''Simple test to demonstrate how the requestfactory needs to be used'''
+ '''Simple get to the *root* url of blogposts'''
request = self.factory.get('/blog-post')
- view = views.BlogPosts.as_view()
+ view = ListOrCreateModelView.as_view(resource=urls.BlogPostResource)
response = view(request)
self.assertEqual(response.status_code, 200)
def test_blogposts_not_exceed_MAX_POSTS(self):
'''Posting blog-posts should not result in more than MAX_POSTS items stored.'''
- for post in range(views.MAX_POSTS + 5):
+ for post in range(models.MAX_POSTS + 5):
form_data = {'title': 'This is post #%s' % post, 'content': 'This is the content of post #%s' % post}
request = self.factory.post('/blog-post', data=form_data)
- view = views.BlogPosts.as_view()
+ view = ListOrCreateModelView.as_view(resource=urls.BlogPostResource)
view(request)
- self.assertEquals(len(models.BlogPost.objects.all()),views.MAX_POSTS)
+ self.assertEquals(len(models.BlogPost.objects.all()),models.MAX_POSTS)
def test_fifo_behaviour(self):
'''It's fine that the Blogposts are capped off at MAX_POSTS. But we want to make sure we see FIFO behaviour.'''
for post in range(15):
form_data = {'title': '%s' % post, 'content': 'This is the content of post #%s' % post}
request = self.factory.post('/blog-post', data=form_data)
- view = views.BlogPosts.as_view()
+ view = ListOrCreateModelView.as_view(resource=urls.BlogPostResource)
view(request)
request = self.factory.get('/blog-post')
- view = views.BlogPosts.as_view()
+ view = ListOrCreateModelView.as_view(resource=urls.BlogPostResource)
response = view(request)
response_posts = json.loads(response.content)
response_titles = [d['title'] for d in response_posts]
- self.assertEquals(response_titles, ['%s' % i for i in range(views.MAX_POSTS - 5, views.MAX_POSTS + 5)])
+ response_titles.reverse()
+ self.assertEquals(response_titles, ['%s' % i for i in range(models.MAX_POSTS - 5, models.MAX_POSTS + 5)])
\ No newline at end of file