test_postgres.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from nose.tools import eq_, ok_
  2. from . import setup_postgres
  3. from .test_basic import CustomModelView
  4. from sqlalchemy.dialects.postgresql import HSTORE, JSON
  5. def test_hstore():
  6. app, db, admin = setup_postgres()
  7. class Model(db.Model):
  8. id = db.Column(db.Integer, primary_key=True, autoincrement=True)
  9. hstore_test = db.Column(HSTORE)
  10. db.create_all()
  11. view = CustomModelView(Model, db.session)
  12. admin.add_view(view)
  13. client = app.test_client()
  14. rv = client.get('/admin/model/')
  15. eq_(rv.status_code, 200)
  16. rv = client.post('/admin/model/new/', data={
  17. 'hstore_test-0-key': 'test_val1',
  18. 'hstore_test-0-value': 'test_val2'
  19. })
  20. eq_(rv.status_code, 302)
  21. rv = client.get('/admin/model/')
  22. eq_(rv.status_code, 200)
  23. data = rv.data.decode('utf-8')
  24. ok_('test_val1' in data)
  25. ok_('test_val2' in data)
  26. rv = client.get('/admin/model/edit/?id=1')
  27. eq_(rv.status_code, 200)
  28. data = rv.data.decode('utf-8')
  29. ok_('test_val1' in data)
  30. ok_('test_val2' in data)
  31. def test_json():
  32. app, db, admin = setup_postgres()
  33. class JSONModel(db.Model):
  34. id = db.Column(db.Integer, primary_key=True, autoincrement=True)
  35. json_test = db.Column(JSON)
  36. db.create_all()
  37. view = CustomModelView(JSONModel, db.session)
  38. admin.add_view(view)
  39. client = app.test_client()
  40. rv = client.get('/admin/jsonmodel/')
  41. eq_(rv.status_code, 200)
  42. rv = client.post('/admin/jsonmodel/new/', data={
  43. 'json_test': '{"test_key1": "test_value1"}',
  44. })
  45. eq_(rv.status_code, 302)
  46. rv = client.get('/admin/jsonmodel/')
  47. eq_(rv.status_code, 200)
  48. data = rv.data.decode('utf-8')
  49. ok_('json_test' in data)
  50. ok_('{"test_key1": "test_value1"}' in data)
  51. rv = client.get('/admin/jsonmodel/edit/?id=1')
  52. eq_(rv.status_code, 200)
  53. data = rv.data.decode('utf-8')
  54. ok_('json_test' in data)
  55. ok_('>{"test_key1": "test_value1"}<' in data)