atst/tests/render_vue_component.py

89 lines
2.5 KiB
Python

import pytest
from wtforms.widgets import CheckboxInput
from wtforms.fields import StringField
from wtforms.validators import InputRequired, URL
from wtforms import Form, FormField
class InitialValueForm(Form):
datafield = StringField(label="initialvalue value", default="initialvalue")
errorfield = StringField(
label="error", validators=[InputRequired(message="Test Error Message")]
)
class TaskOrderPdfForm(Form):
filename = StringField(default="initialvalue")
object_name = StringField()
errorfield = StringField(
label="error", validators=[InputRequired(message="Test Error Message")]
)
class TaskOrderForm(Form):
pdf = FormField(TaskOrderPdfForm, label="task_order_pdf")
@pytest.fixture
def env(app, scope="function"):
return app.jinja_env
@pytest.fixture
def upload_input_macro(env):
# override tojson as identity function to prevent
# wrapping strings in extra quotes
env.filters["tojson"] = lambda x: x
upload_template = env.get_template("components/upload_input.html")
return getattr(upload_template.module, "UploadInput")
@pytest.fixture
def checkbox_input_macro(env):
checkbox_template = env.get_template("components/checkbox_input.html")
return getattr(checkbox_template.module, "CheckboxInput")
@pytest.fixture
def initial_value_form(scope="function"):
return InitialValueForm()
@pytest.fixture
def task_order_form(scope="function"):
return TaskOrderForm()
@pytest.fixture
def error_task_order_form(scope="function"):
return ErrorTaskOrderForm()
def write_template(content, name):
with open("js/test_templates/{}".format(name), "w") as fh:
fh.write(content)
def test_make_checkbox_input_template(checkbox_input_macro, initial_value_form):
initial_value_form.datafield.widget = CheckboxInput()
rendered_checkbox_macro = checkbox_input_macro(initial_value_form.datafield)
write_template(rendered_checkbox_macro, "checkbox_input_template.html")
def test_make_upload_input_template(upload_input_macro, task_order_form):
rendered_upload_macro = upload_input_macro(
task_order_form.pdf, token="token", object_name="object_name"
)
write_template(rendered_upload_macro, "upload_input_template.html")
def test_make_upload_input_error_template(upload_input_macro, task_order_form):
task_order_form.validate()
rendered_upload_macro = upload_input_macro(
task_order_form.pdf, token="token", object_name="object_name"
)
write_template(rendered_upload_macro, "upload_input_error_template.html")