def test_render_view_renders_rst_sensibly(self, mock_render, mock_publish_parts, mock_exists): mock_exists.return_value = True mock_open = Mock() read_results = "The rest contents" mock_open.return_value.__enter__ = Mock() mock_open.return_value.__enter__.return_value.read.return_value = read_results mock_open.return_value.__exit__ = Mock() mock_publish_parts.return_value = { "title": "I am a dashing -- title", "body": "<div>I am a processed rest body with double --s</div>" } orig_open = open __builtins__['open'] = mock_open try: response = render_view(self.request, "foo") finally: __builtins__['open'] = orig_open contents_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'content')) self.assertCalledOnce(mock_open, os.path.join(contents_dir, 'foo.txt'), "r") self.assertCalledOnce(mock_publish_parts, source=read_results, writer_name="html4css1") self.assert_render_template_was(mock_render, "tutorial_base.html") self.assertRenderedWith(mock_render, "title", "I am a dashing — title") self.assertRenderedWith(mock_render, "body", "<div>I am a processed rest body with double —s</div>")
def test_render_view_handles_root_request_sensibly(self): self.request.META['QUERY_STRING'] = '' response = render_view(self.request, '') self.assertIsInstance(response, HttpResponsePermanentRedirect) self.assertEquals( response['Location'], reverse('render_view', args=['index']) )
def test_render_view_404s_for_existing_file_outside_of_content_directory(self): with self.assertRaises(Http404): render_view(self.request, '../../README')
def test_render_view_404s_for_nonexistent_file(self, mock_exists): mock_exists.return_value = False with self.assertRaises(Http404): render_view(self.request, '9')