test_basic.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from nose.tools import eq_, ok_
  2. from wtforms import form, fields
  3. from flask_admin.contrib.pymongo import ModelView
  4. from . import setup
  5. class TestForm(form.Form):
  6. test1 = fields.StringField('Test1')
  7. test2 = fields.StringField('Test2')
  8. class TestView(ModelView):
  9. column_list = ('test1', 'test2', 'test3', 'test4')
  10. column_sortable_list = ('test1', 'test2')
  11. form = TestForm
  12. def test_model():
  13. app, db, admin = setup()
  14. view = TestView(db.test, 'Test')
  15. admin.add_view(view)
  16. # Drop existing data (if any)
  17. db.test.remove()
  18. eq_(view.name, 'Test')
  19. eq_(view.endpoint, 'testview')
  20. ok_('test1' in view._sortable_columns)
  21. ok_('test2' in view._sortable_columns)
  22. ok_(view._create_form_class is not None)
  23. ok_(view._edit_form_class is not None)
  24. eq_(view._search_supported, False)
  25. eq_(view._filters, None)
  26. # Make some test clients
  27. client = app.test_client()
  28. rv = client.get('/admin/testview/')
  29. eq_(rv.status_code, 200)
  30. rv = client.get('/admin/testview/new/')
  31. eq_(rv.status_code, 200)
  32. rv = client.post('/admin/testview/new/',
  33. data=dict(test1='test1large', test2='test2'))
  34. eq_(rv.status_code, 302)
  35. model = db.test.find()[0]
  36. print(model)
  37. eq_(model['test1'], 'test1large')
  38. eq_(model['test2'], 'test2')
  39. rv = client.get('/admin/testview/')
  40. eq_(rv.status_code, 200)
  41. ok_('test1large' in rv.data.decode('utf-8'))
  42. url = '/admin/testview/edit/?id=%s' % model['_id']
  43. rv = client.get(url)
  44. eq_(rv.status_code, 200)
  45. rv = client.post(url,
  46. data=dict(test1='test1small', test2='test2large'))
  47. eq_(rv.status_code, 302)
  48. print(db.test.find()[0])
  49. model = db.test.find()[0]
  50. eq_(model['test1'], 'test1small')
  51. eq_(model['test2'], 'test2large')
  52. url = '/admin/testview/delete/?id=%s' % model['_id']
  53. rv = client.post(url)
  54. eq_(rv.status_code, 302)
  55. eq_(db.test.count(), 0)