Skip to content

Commit

Permalink
Update test to use fixtures
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelhwilliams committed Jul 20, 2024
1 parent 7c4b581 commit 3e41595
Showing 1 changed file with 69 additions and 68 deletions.
137 changes: 69 additions & 68 deletions flask_admin/tests/sqla/test_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -2645,75 +2645,76 @@ def test_export_csv(app, db, admin):


def test_string_null_behavior(app, db, admin):
class StringTestModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
test_no = db.Column(db.Integer, nullable=False)
string_field = db.Column(db.String)
string_field_nonull = db.Column(db.String, nullable=False)
string_field_nonull_default = db.Column(db.String, nullable=False, default='')
text_field = db.Column(db.Text)
text_field_nonull = db.Column(db.Text, nullable=False)
text_field_nonull_default = db.Column(db.Text, nullable=False, default='')
with app.app_context():
class StringTestModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
test_no = db.Column(db.Integer, nullable=False)
string_field = db.Column(db.String)
string_field_nonull = db.Column(db.String, nullable=False)
string_field_nonull_default = db.Column(db.String, nullable=False, default='')
text_field = db.Column(db.Text)
text_field_nonull = db.Column(db.Text, nullable=False)
text_field_nonull_default = db.Column(db.Text, nullable=False, default='')

db.create_all()
db.create_all()

view = CustomModelView(StringTestModel, db.session)
admin.add_view(view)
view = CustomModelView(StringTestModel, db.session)
admin.add_view(view)

client = app.test_client()
client = app.test_client()

valid_params = {
"test_no": 1,
"string_field_nonull": STRING_CONSTANT,
"text_field_nonull": STRING_CONSTANT,
}
rv = client.post('/admin/stringtestmodel/new/',
data=valid_params)
assert rv.status_code == 302

# Assert on defaults
valid_inst = db.session.query(StringTestModel).filter(StringTestModel.test_no == 1).one()
assert valid_inst.string_field is None
assert valid_inst.string_field_nonull == STRING_CONSTANT
assert valid_inst.string_field_nonull_default == ''
assert valid_inst.text_field is None
assert valid_inst.text_field_nonull == STRING_CONSTANT
assert valid_inst.text_field_nonull_default == ''

# Assert that nulls are caught on the non-null fields
invalid_string_field = {
"test_no": 2,
"string_field_nonull": None,
"text_field_nonull": STRING_CONSTANT,
}
rv = client.post('/admin/stringtestmodel/new/',
data=invalid_string_field)
assert rv.status_code == 200
assert b'This field is required.' in rv.data
assert db.session.query(StringTestModel).filter(StringTestModel.test_no == 2).all() == []

invalid_text_field = {
"test_no": 3,
"string_field_nonull": STRING_CONSTANT,
"text_field_nonull": None,
}
rv = client.post('/admin/stringtestmodel/new/',
data=invalid_text_field)
assert rv.status_code == 200
assert b'This field is required.' in rv.data
assert db.session.query(StringTestModel).filter(StringTestModel.test_no == 3).all() == []

# Assert that empty strings are converted to None on nullable fields.
empty_strings = {
"test_no": 4,
"string_field": "",
"text_field": "",
"string_field_nonull": STRING_CONSTANT,
"text_field_nonull": STRING_CONSTANT,
}
rv = client.post('/admin/stringtestmodel/new/',
data=empty_strings)
assert rv.status_code == 302
empty_string_inst = db.session.query(StringTestModel).filter(StringTestModel.test_no == 4).one()
assert empty_string_inst.string_field is None
assert empty_string_inst.text_field is None
valid_params = {
"test_no": 1,
"string_field_nonull": STRING_CONSTANT,
"text_field_nonull": STRING_CONSTANT,
}
rv = client.post('/admin/stringtestmodel/new/',
data=valid_params)
assert rv.status_code == 302

# Assert on defaults
valid_inst = db.session.query(StringTestModel).filter(StringTestModel.test_no == 1).one()
assert valid_inst.string_field is None
assert valid_inst.string_field_nonull == STRING_CONSTANT
assert valid_inst.string_field_nonull_default == ''
assert valid_inst.text_field is None
assert valid_inst.text_field_nonull == STRING_CONSTANT
assert valid_inst.text_field_nonull_default == ''

# Assert that nulls are caught on the non-null fields
invalid_string_field = {
"test_no": 2,
"string_field_nonull": None,
"text_field_nonull": STRING_CONSTANT,
}
rv = client.post('/admin/stringtestmodel/new/',
data=invalid_string_field)
assert rv.status_code == 200
assert b'This field is required.' in rv.data
assert db.session.query(StringTestModel).filter(StringTestModel.test_no == 2).all() == []

invalid_text_field = {
"test_no": 3,
"string_field_nonull": STRING_CONSTANT,
"text_field_nonull": None,
}
rv = client.post('/admin/stringtestmodel/new/',
data=invalid_text_field)
assert rv.status_code == 200
assert b'This field is required.' in rv.data
assert db.session.query(StringTestModel).filter(StringTestModel.test_no == 3).all() == []

# Assert that empty strings are converted to None on nullable fields.
empty_strings = {
"test_no": 4,
"string_field": "",
"text_field": "",
"string_field_nonull": STRING_CONSTANT,
"text_field_nonull": STRING_CONSTANT,
}
rv = client.post('/admin/stringtestmodel/new/',
data=empty_strings)
assert rv.status_code == 302
empty_string_inst = db.session.query(StringTestModel).filter(StringTestModel.test_no == 4).one()
assert empty_string_inst.string_field is None
assert empty_string_inst.text_field is None

0 comments on commit 3e41595

Please sign in to comment.