Add a very basic view test
authorSverre Rabbelier <srabbelier@gmail.com>
Fri, 06 Mar 2009 17:14:05 +0000
changeset 1691 c1d5a67e9e33
parent 1690 376e75215f35
child 1692 b5d90a03fbe6
Add a very basic view test Mostly just a Proof of Concept. Patch by: Sverre Rabbelier
tests/app/soc/views/model/__init__.py
tests/app/soc/views/model/test_base.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/app/soc/views/model/test_base.py	Fri Mar 06 17:14:05 2009 +0000
@@ -0,0 +1,102 @@
+#!/usr/bin/python2.5
+#
+# Copyright 2009 the Melange authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+__authors__ = [
+  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+  ]
+
+
+import unittest
+
+from tests.test_utils import MockRequest
+from tests.pymox import stubout
+
+from tests.app.soc.logic.models.test_model import TestModelLogic
+
+from soc.views.helper import access
+from soc.views.helper import responses
+from soc.views.models import base
+
+
+def error_raw(error, request, template=None, context=None):
+  """
+  """
+
+  return {
+      'error': error,
+      'request': request,
+      'template': template,
+      'context': context,
+      }
+
+def respond_raw(request, template, context=None, args=None, headers=None):
+  """
+  """
+
+  return {
+      'request': request,
+      'template': template,
+      'context': context,
+      'args': args,
+      'headers': headers,
+      }
+
+
+class TestView(base.View):
+  """
+  """
+
+  def __init__(self):
+    """
+    """
+
+    rights = access.Checker(None)
+    rights['unspecified'] = ['deny']
+    rights['any_access'] = ['allow']
+    rights['show'] = ['allow']
+
+    params = {}
+    params['name'] = "Test"
+    params['logic'] = TestModelLogic()
+    params['rights'] = rights
+
+    super(TestView, self).__init__(params=params)
+
+
+class BaseTest(unittest.TestCase):
+  """Tests related to the base view.
+  """
+
+  def setUp(self):
+    """Set up required for the view tests.
+    """
+
+    self.view = TestView()
+    self.stubout = stubout.StubOutForTesting()
+    self.stubout.Set(responses, 'respond', respond_raw)
+    self.stubout.Set(responses, 'errorResponse', error_raw)
+
+  def testErrorOnNonExistantEntity(self):
+    """
+    """
+
+    request = MockRequest("/test/public")
+    access_type = "show"
+    page_name = "Show Test"
+    django_args = {'link_id': 'foo', 'scope_path': 'bar'}
+    actual = self.view.public(request, access_type, page_name=page_name, **django_args)
+    self.assertTrue('error' in actual)