1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
from flask import render_template_string
from flask_wtf import FlaskForm
from flask_bootstrap import SwitchField
from wtforms import IntegerRangeField, DecimalRangeField
def test_switch_field(app, client):
class TestForm(FlaskForm):
remember = SwitchField('Remember me', description='Just check this')
@app.route('/switch')
def test_switch():
form = TestForm()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form) }}
''', form=form)
response = client.get('/switch')
data = response.get_data(as_text=True)
assert 'Remember me' in data
assert 'custom-control custom-switch' not in data
assert 'form-check form-switch' in data
assert 'role="switch"' in data
assert '<small class="form-text text-muted">Just check this</small>' in data
# test render IntegerRangeField and DecimalRangeField
def test_range_fields(app, client):
class TestForm(FlaskForm):
decimal_slider = DecimalRangeField()
integer_slider = IntegerRangeField(render_kw={'min': '0', 'max': '4'})
@app.route('/range')
def test_range():
form = TestForm()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form) }}
''', form=form)
response = client.get('/range')
data = response.get_data(as_text=True)
assert 'Decimal Slider' in data
assert 'Integer Slider' in data
assert 'form-range' in data
def test_form_group_class(app, client, hello_form):
@app.route('/default')
def test_default():
form = hello_form()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form) }}
''', form=form)
@app.route('/custom')
def test_custom():
form = hello_form()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form, form_group_classes='mb-2') }}
''', form=form)
response = client.get('/default')
data = response.get_data(as_text=True)
assert '<div class="mb-3' in data
response = client.get('/custom')
data = response.get_data(as_text=True)
assert '<div class="mb-3' not in data
assert '<div class="mb-2' in data
def test_form_group_class_config(app, client, hello_form):
app.config['BOOTSTRAP_FORM_GROUP_CLASSES'] = 'mb-4'
@app.route('/config')
def test_config():
form = hello_form()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form) }}
''', form=form)
response = client.get('/config')
data = response.get_data(as_text=True)
assert '<div class="mb-3' not in data
assert '<div class="mb-4' in data
def test_form_inline_classes(app, client, hello_form):
@app.route('/default')
def test_default():
form = hello_form()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form, form_type='inline') }}
''', form=form)
@app.route('/custom')
def test_custom():
form = hello_form()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form, form_type='inline', form_inline_classes='custom-inline-classes') }}
''', form=form)
response = client.get('/default')
data = response.get_data(as_text=True)
assert '<div class="mb-3' not in data
assert '<div class="col-12' in data
assert 'row row-cols-lg-auto g-3 align-items-center' in data
assert '<label class="sr-only' not in data
assert '<label class="visually-hidden' in data
response = client.get('/custom')
data = response.get_data(as_text=True)
assert 'row row-cols-lg-auto g-3 align-items-center' not in data
assert 'custom-inline-classes' in data
def test_form_inline_classes_config(app, client, hello_form):
app.config['BOOTSTRAP_FORM_INLINE_CLASSES'] = 'custom-inline-classes'
@app.route('/config')
def test_config():
form = hello_form()
return render_template_string('''
{% from 'bootstrap5/form.html' import render_form %}
{{ render_form(form, form_type='inline') }}
''', form=form)
response = client.get('/config')
data = response.get_data(as_text=True)
assert 'row row-cols-lg-auto g-3 align-items-center' not in data
assert 'custom-inline-classes' in data
|