diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-10-10 04:45:05 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-10-10 04:45:05 +0000 |
| commit | 1d4c44e80f36406dd1ad1d8bf289ee92123bb208 (patch) | |
| tree | 0235aabbac4c54683d11803b8f2a1d2105879ccc /docs/tutorials | |
| parent | ca6575ada77e08f09e2679f57ed2775be2ea066a (diff) | |
| download | pyramid-1d4c44e80f36406dd1ad1d8bf289ee92123bb208.tar.gz pyramid-1d4c44e80f36406dd1ad1d8bf289ee92123bb208.tar.bz2 pyramid-1d4c44e80f36406dd1ad1d8bf289ee92123bb208.zip | |
Move to renderers.
Add tests.
Diffstat (limited to 'docs/tutorials')
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml | 15 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/views/tutorial/tests.py | 127 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/views/tutorial/views.py | 24 |
3 files changed, 125 insertions, 41 deletions
diff --git a/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml b/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml index 1e5207ebc..7eafe7c3c 100644 --- a/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml +++ b/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml @@ -21,18 +21,21 @@ path=":pagename" name="view_page" view=".views.view_page" - /> - - <route - path=":pagename/edit_page" - name="edit_page" - view=".views.edit_page" + renderer="templates/view.pt" /> <route path="add_page/:pagename" name="add_page" view=".views.add_page" + renderer="templates/edit.pt" + /> + + <route + path=":pagename/edit_page" + name="edit_page" + view=".views.edit_page" + renderer="templates/edit.pt" /> </configure> diff --git a/docs/tutorials/bfgwiki2/src/views/tutorial/tests.py b/docs/tutorials/bfgwiki2/src/views/tutorial/tests.py index 8d163ad20..2a1d43749 100644 --- a/docs/tutorials/bfgwiki2/src/views/tutorial/tests.py +++ b/docs/tutorials/bfgwiki2/src/views/tutorial/tests.py @@ -2,27 +2,120 @@ import unittest from repoze.bfg import testing def _initTestingDB(): - from tutorial.models import initialize_sql - session = initialize_sql('sqlite://') - return session + from tutorial.models import DBSession + from tutorial.models import Base + from sqlalchemy import create_engine + engine = create_engine('sqlite://') + DBSession.configure(bind=engine) + Base.metadata.bind = engine + Base.metadata.create_all(engine) + return DBSession -class TestMyView(unittest.TestCase): +def _registerRoutes(): + testing.registerRoute(':pagename', 'view_page') + testing.registerRoute(':pagename/edit_page', 'edit_page') + testing.registerRoute('add_page/:pagename', 'add_page') + +class ViewWikiTests(unittest.TestCase): + def test_it(self): + from tutorial.views import view_wiki + testing.registerRoute(':pagename', 'view_page') + request = testing.DummyRequest() + response = view_wiki(request) + self.assertEqual(response.location, 'http://example.com/FrontPage') + +class ViewPageTests(unittest.TestCase): + def setUp(self): + self.session = _initTestingDB() + + def tearDown(self): + self.session.remove() + + def _callFUT(self, request): + from tutorial.views import view_page + return view_page(request) + + def test_it(self): + from tutorial.models import Page + request = testing.DummyRequest() + request.matchdict['pagename'] = 'IDoExist' + page = Page('IDoExist', 'Hello CruelWorld IDoExist') + self.session.add(page) + _registerRoutes() + info = self._callFUT(request) + self.assertEqual(info['page'], page) + self.assertEqual( + info['content'], + '<div class="document">\n' + '<p>Hello <a href="http://example.com/add_page/CruelWorld">' + 'CruelWorld</a> ' + '<a href="http://example.com/IDoExist">' + 'IDoExist</a>' + '</p>\n</div>\n') + self.assertEqual(info['edit_url'], + 'http://example.com/IDoExist/edit_page') + + +class AddPageTests(unittest.TestCase): def setUp(self): - testing.cleanUp() - _initTestingDB() + self.session = _initTestingDB() + + def tearDown(self): + self.session.remove() + + def _callFUT(self, request): + from tutorial.views import add_page + return add_page(request) + + def test_it_notsubmitted(self): + _registerRoutes() + request = testing.DummyRequest() + request.matchdict = {'pagename':'AnotherPage'} + info = self._callFUT(request) + self.assertEqual(info['page'].data,'') + self.assertEqual(info['save_url'], + 'http://example.com/add_page/AnotherPage') + def test_it_submitted(self): + from tutorial.models import Page + _registerRoutes() + request = testing.DummyRequest({'form.submitted':True, + 'body':'Hello yo!'}) + request.matchdict = {'pagename':'AnotherPage'} + response = self._callFUT(request) + page = self.session.query(Page).filter_by(name='AnotherPage').one() + self.assertEqual(page.data, 'Hello yo!') + +class EditPageTests(unittest.TestCase): + def setUp(self): + self.session = _initTestingDB() + def tearDown(self): - testing.cleanUp() + self.session.remove() - def _callFUT(self, context, request): - from tutorial.views import my_view - return my_view(context, request) + def _callFUT(self, request): + from tutorial.views import edit_page + return edit_page(request) - def test_it(self): + def test_it_notsubmitted(self): + from tutorial.models import Page + _registerRoutes() request = testing.DummyRequest() - context = testing.DummyModel() - renderer = testing.registerDummyRenderer('templates/mytemplate.pt') - response = self._callFUT(context, request) - self.assertEqual(renderer.root.name, 'root') - self.assertEqual(renderer.request, request) - self.assertEqual(renderer.project, 'tutorial') + request.matchdict = {'pagename':'abc'} + page = Page('abc', 'hello') + self.session.add(page) + info = self._callFUT(request) + self.assertEqual(info['page'], page) + self.assertEqual(info['save_url'], 'http://example.com/abc/edit_page') + + def test_it_submitted(self): + from tutorial.models import Page + _registerRoutes() + request = testing.DummyRequest({'form.submitted':True, + 'body':'Hello yo!'}) + request.matchdict = {'pagename':'abc'} + page = Page('abc', 'hello') + self.session.add(page) + response = self._callFUT(request) + self.assertEqual(response.location, 'http://example.com/abc') + self.assertEqual(page.data, 'Hello yo!') diff --git a/docs/tutorials/bfgwiki2/src/views/tutorial/views.py b/docs/tutorials/bfgwiki2/src/views/tutorial/views.py index 9a197bd75..410d25ec0 100644 --- a/docs/tutorials/bfgwiki2/src/views/tutorial/views.py +++ b/docs/tutorials/bfgwiki2/src/views/tutorial/views.py @@ -4,7 +4,6 @@ from docutils.core import publish_parts from webob.exc import HTTPFound -from repoze.bfg.chameleon_zpt import render_template_to_response from repoze.bfg.url import route_url from tutorial.models import DBSession @@ -35,11 +34,7 @@ def view_page(request): content = publish_parts(page.data, writer_name='html')['html_body'] content = wikiwords.sub(check, content) edit_url = route_url('edit_page', request, pagename=matchdict['pagename']) - return render_template_to_response('templates/view.pt', - request = request, - page = page, - content = content, - edit_url = edit_url) + return dict(page=page, content=content, edit_url=edit_url) def add_page(request): name = request.matchdict['pagename'] @@ -52,10 +47,7 @@ def add_page(request): pagename=name)) save_url = route_url('add_page', request, pagename=name) page = Page('', '') - return render_template_to_response('templates/edit.pt', - request = request, - page = page, - save_url = save_url) + return dict(page=page, save_url=save_url) def edit_page(request): name = request.matchdict['pagename'] @@ -66,11 +58,7 @@ def edit_page(request): session.add(page) return HTTPFound(location = route_url('view_page', request, pagename=name)) - - return render_template_to_response('templates/edit.pt', - request = request, - page = page, - save_url = route_url('edit_page', - request, - pagename=name), - ) + return dict( + page=page, + save_url = route_url('edit_page', request, pagename=name), + ) |
