/src/views/tutorial/tests.py

https://bitbucket.org/blaflamme/pylonswiking · Python · 101 lines · 89 code · 12 blank · 0 comment · 0 complexity · f083565c6c3cf6015d5f0eb7feff9ee9 MD5 · raw file

  1. import unittest
  2. from pylons.configuration import Configurator
  3. from repoze.bfg import testing
  4. class TestWikiHandler(unittest.TestCase):
  5. def setUp(self):
  6. self.session = self._initTestingDB()
  7. self.config = Configurator()
  8. self.config.begin()
  9. self.config.add_route('root', '/')
  10. self.config.add_route('wiki_action', '/wiki/{pagename}/{action}')
  11. def tearDown(self):
  12. self.session.remove()
  13. self.config.end()
  14. def _initTestingDB(self):
  15. from tutorial.models import DBSession
  16. from tutorial.models import Base
  17. from sqlalchemy import create_engine
  18. engine = create_engine('sqlite://')
  19. DBSession.configure(bind=engine)
  20. Base.metadata.bind = engine
  21. Base.metadata.create_all(engine)
  22. return DBSession
  23. def _makeOne(self, request):
  24. from tutorial.handlers import WikiHandler
  25. return WikiHandler(request)
  26. def test___call__(self):
  27. request = testing.DummyRequest()
  28. handler = self._makeOne(request)
  29. response = handler()
  30. self.assertEqual(response.location,
  31. 'http://example.com/wiki/FrontPage/view')
  32. def test_view(self):
  33. request = testing.DummyRequest()
  34. handler = self._makeOne(request)
  35. from tutorial.models import Page
  36. request.matchdict['pagename'] = 'IDoExist'
  37. page = Page('IDoExist', 'Hello CruelWorld IDoExist')
  38. self.session.add(page)
  39. info = handler.view()
  40. self.assertEqual(info['page'], page)
  41. self.assertEqual(
  42. info['content'],
  43. '<div class="document">\n'
  44. '<p>Hello <a href="http://example.com/wiki/CruelWorld/add">'
  45. 'CruelWorld</a> '
  46. '<a href="http://example.com/wiki/IDoExist/view">'
  47. 'IDoExist</a>'
  48. '</p>\n</div>\n')
  49. self.assertEqual(info['edit_url'],
  50. 'http://example.com/wiki/IDoExist/edit')
  51. def test_add_notsubmitted(self):
  52. request = testing.DummyRequest()
  53. request.matchdict = {'pagename':'AnotherPage'}
  54. handler = self._makeOne(request)
  55. info = handler.add()
  56. self.assertEqual(info['page'].data,'')
  57. self.assertEqual(info['save_url'],
  58. 'http://example.com/wiki/AnotherPage/add')
  59. def test_add_submitted(self):
  60. from tutorial.models import Page
  61. request = testing.DummyRequest({'form.submitted':True,
  62. 'body':'Hello yo!'})
  63. request.matchdict = {'pagename':'AnotherPage'}
  64. handler = self._makeOne(request)
  65. handler.add()
  66. page = self.session.query(Page).filter_by(name='AnotherPage').one()
  67. self.assertEqual(page.data, 'Hello yo!')
  68. def test_edit_notsubmitted(self):
  69. from tutorial.models import Page
  70. request = testing.DummyRequest()
  71. request.matchdict = {'pagename':'abc'}
  72. page = Page('abc', 'hello')
  73. self.session.add(page)
  74. handler = self._makeOne(request)
  75. info = handler.edit()
  76. self.assertEqual(info['page'], page)
  77. self.assertEqual(info['save_url'],
  78. 'http://example.com/wiki/abc/edit')
  79. def test_edit_submitted(self):
  80. from tutorial.models import Page
  81. request = testing.DummyRequest({'form.submitted':True,
  82. 'body':'Hello yo!'})
  83. request.matchdict = {'pagename':'abc'}
  84. page = Page('abc', 'hello')
  85. self.session.add(page)
  86. handler = self._makeOne(request)
  87. response = handler.edit()
  88. self.assertEqual(response.location, 'http://example.com/wiki/abc/view')
  89. self.assertEqual(page.data, 'Hello yo!')