[Checkins] SVN: zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/ Add a browser-geared fixture for sphinx docs.

Uli Fouquet uli at gnufix.de
Sun Jan 23 22:32:44 EST 2011


Log message for revision 119857:
  Add a browser-geared fixture for sphinx docs.

Changed:
  A   zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/browser.py
  U   zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/configure.zcml
  U   zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/ftesting.zcml
  A   zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/tests/test_browser.py

-=-
Added: zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/browser.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/browser.py	                        (rev 0)
+++ zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/browser.py	2011-01-24 03:32:43 UTC (rev 119857)
@@ -0,0 +1,7 @@
+from zope.publisher.browser import BrowserPage
+
+class SampleAppView(BrowserPage):
+
+    def __call__(self):
+        self.request.response.setHeader('Content-Type', 'text/plain')
+        return u'Hello from SampleAppView!'

Modified: zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/configure.zcml
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/configure.zcml	2011-01-23 21:46:42 UTC (rev 119856)
+++ zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/configure.zcml	2011-01-24 03:32:43 UTC (rev 119857)
@@ -1,10 +1,34 @@
 <configure
    xmlns="http://namespaces.zope.org/zope"
+   xmlns:browser="http://namespaces.zope.org/browser"
    >
 
-  <include package="zope.component" file="meta.zcml" />
-  <utility component=".app.FooUtility" 
-	   provides=".interfaces.IFoo" 
-	   name="foo utility" />
+  <!-- Basic configuration. -->
+   <include package="zope.component" file="meta.zcml" />
+   <include package="zope.component" />
 
+   <!-- Those next ZCML includes are required by zope.app.appsetup. -->
+   <include package="zope.security" file="meta.zcml" />
+   <include package="zope.security" />
+
+   <include package="zope.location" />
+   <include package="zope.traversing" />
+   <include package="zope.container" />
+   <include package="zope.site" />
+
+   <include package="zope.app.appsetup" />
+
+   <utility 
+       component=".app.FooUtility"
+       provides=".interfaces.IFoo"
+       name="foo utility"
+       />
+
+   <browser:page
+       for=".interfaces.ISampleApp"
+       name="index.html"
+       class=".browser.SampleAppView"
+       permission="zope.View"
+       />
+
 </configure>

Modified: zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/ftesting.zcml
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/ftesting.zcml	2011-01-23 21:46:42 UTC (rev 119856)
+++ zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/ftesting.zcml	2011-01-24 03:32:43 UTC (rev 119857)
@@ -1,8 +1,58 @@
 <configure
    xmlns="http://namespaces.zope.org/zope"
+   xmlns:browser="http://namespaces.zope.org/browser"
    package="mypkg"
    >
 
+  <!-- This file is the equivalent of site.zcml and it is -->
+  <!-- used for functional testing setup -->
+  <include package="zope.component" file="meta.zcml" />
+  <include package="zope.security" file="meta.zcml" />
+  <include package="zope.publisher" file="meta.zcml" />
+  <include package="zope.browserpage" file="meta.zcml" />
+  <include package="zope.app.publication" file="meta.zcml" />
+  <include package="zope.securitypolicy" file="meta.zcml" />
+
+  <include package="zope.app.wsgi" />
+  <include package="zope.app.zcmlfiles" />
+
+  <securityPolicy
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
+
+  <role id="zope.Manager" title="Site Manager" />
+
+  <grantAll role="zope.Manager" />
+
+  <!-- Principals -->
+  <unauthenticatedPrincipal
+      id="zope.anybody"
+      title="Unauthenticated User" />
+  <grant
+      permission="zope.View"
+      principal="zope.anybody" />
+
+  <!-- Principal that tests generally run as -->
+  <principal
+      id="zope.mgr"
+      title="Manager"
+      login="mgr"
+      password="mgrpw" />
+
+  <grant role="zope.Manager" principal="zope.mgr" />
+
+  <utility 
+      component=".app.FooUtility"
+      provides=".interfaces.IFoo"
+      name="foo utility"
+      />
+
+  <browser:page
+      for=".interfaces.ISampleApp"
+      name="index.html"
+      class=".browser.SampleAppView"
+      permission="zope.View"
+      />
+
   <include package="mypkg" file="configure.zcml" />
 
 </configure>

Added: zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/tests/test_browser.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/tests/test_browser.py	                        (rev 0)
+++ zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg/tests/test_browser.py	2011-01-24 03:32:43 UTC (rev 119857)
@@ -0,0 +1,27 @@
+import mypkg
+from webob import Request
+from zope.component import getMultiAdapter
+from zope.publisher.browser import TestRequest
+from zope.pytest import configure, create_app
+from mypkg.app import SampleApp
+
+def pytest_funcarg__apps(request):
+    app = SampleApp()
+    return app, create_app(request, app)
+
+def pytest_funcarg__config(request):
+    return configure(request, mypkg, 'ftesting.zcml')
+
+def test_view_sampleapp(config, apps):
+    zope_app, wsgi_app = apps
+    view = getMultiAdapter(
+        (zope_app, TestRequest()), name="index.html")
+    rendered_view = view()
+    assert view() == u'Hello from SampleAppView!'
+
+def test_browser(config, apps):
+    zope_app, wsgi_app = apps
+    http_request = Request.blank('http://localhost/test/index.html')
+    response = http_request.get_response(wsgi_app)
+    assert response.body == 'Hello from SampleAppView!'
+    assert response.status == "200 Ok"



More information about the checkins mailing list