more examples
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
"""
|
||||
Test for forms example (10_forms_demo.py).
|
||||
|
||||
This test ensures the forms example runs correctly and produces expected output.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import importlib.util
|
||||
|
||||
# Add examples to path
|
||||
examples_dir = Path(__file__).parent.parent.parent / "examples"
|
||||
sys.path.insert(0, str(examples_dir))
|
||||
|
||||
# Load the demo module
|
||||
spec = importlib.util.spec_from_file_location(
|
||||
"forms_demo",
|
||||
examples_dir / "10_forms_demo.py"
|
||||
)
|
||||
demo_module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(demo_module)
|
||||
|
||||
|
||||
def test_forms_demo_imports():
|
||||
"""Test that the forms demo can be imported without errors."""
|
||||
assert demo_module is not None
|
||||
|
||||
|
||||
def test_form_submit_callback():
|
||||
"""Test that form submit callbacks work correctly."""
|
||||
form_submit_callback = demo_module.form_submit_callback
|
||||
demo_module.form_submissions = []
|
||||
|
||||
callback = form_submit_callback("test_form")
|
||||
callback({"field1": "value1"})
|
||||
|
||||
assert len(demo_module.form_submissions) == 1
|
||||
assert demo_module.form_submissions[0][0] == "test_form"
|
||||
assert demo_module.form_submissions[0][1] == {"field1": "value1"}
|
||||
|
||||
|
||||
def test_create_example_1_text_fields():
|
||||
"""Test creating text fields example."""
|
||||
create_example_1 = demo_module.create_example_1_text_fields
|
||||
from pyWebLayout.concrete.page import Page
|
||||
|
||||
page = create_example_1()
|
||||
assert isinstance(page, Page)
|
||||
assert page.size == (500, 600)
|
||||
|
||||
|
||||
def test_create_example_2_number_fields():
|
||||
"""Test creating number fields example."""
|
||||
create_example_2 = demo_module.create_example_2_number_fields
|
||||
from pyWebLayout.concrete.page import Page
|
||||
|
||||
page = create_example_2()
|
||||
assert isinstance(page, Page)
|
||||
assert page.size == (500, 600)
|
||||
|
||||
|
||||
def test_create_example_3_selection_fields():
|
||||
"""Test creating selection fields example."""
|
||||
create_example_3 = demo_module.create_example_3_selection_fields
|
||||
from pyWebLayout.concrete.page import Page
|
||||
|
||||
page = create_example_3()
|
||||
assert isinstance(page, Page)
|
||||
assert page.size == (500, 600)
|
||||
|
||||
|
||||
def test_create_example_4_complete_form():
|
||||
"""Test creating complete form example."""
|
||||
create_example_4 = demo_module.create_example_4_complete_form
|
||||
from pyWebLayout.concrete.page import Page
|
||||
|
||||
page = create_example_4()
|
||||
assert isinstance(page, Page)
|
||||
assert page.size == (500, 700)
|
||||
|
||||
|
||||
def test_all_form_field_types():
|
||||
"""Test that all FormFieldType values are demonstrated."""
|
||||
from pyWebLayout.abstract.functional import FormFieldType
|
||||
|
||||
# All field types that should be in examples
|
||||
expected_types = {
|
||||
FormFieldType.TEXT,
|
||||
FormFieldType.PASSWORD,
|
||||
FormFieldType.EMAIL,
|
||||
FormFieldType.URL,
|
||||
FormFieldType.TEXTAREA,
|
||||
FormFieldType.NUMBER,
|
||||
FormFieldType.DATE,
|
||||
FormFieldType.TIME,
|
||||
FormFieldType.RANGE,
|
||||
FormFieldType.COLOR,
|
||||
FormFieldType.CHECKBOX,
|
||||
FormFieldType.RADIO,
|
||||
FormFieldType.SELECT,
|
||||
FormFieldType.HIDDEN
|
||||
}
|
||||
|
||||
# This test verifies that the example includes all major field types
|
||||
# (the actual verification would happen by inspecting the forms,
|
||||
# but this confirms the enum exists)
|
||||
assert len(expected_types) == 14
|
||||
|
||||
|
||||
def test_combine_pages_into_grid():
|
||||
"""Test combining pages into grid."""
|
||||
combine_pages_into_grid = demo_module.combine_pages_into_grid
|
||||
from pyWebLayout.concrete.page import Page
|
||||
from pyWebLayout.style.page_style import PageStyle
|
||||
|
||||
# Create a few pages
|
||||
page_style = PageStyle()
|
||||
pages = [
|
||||
Page(size=(200, 200), style=page_style),
|
||||
Page(size=(200, 200), style=page_style),
|
||||
Page(size=(200, 200), style=page_style),
|
||||
Page(size=(200, 200), style=page_style)
|
||||
]
|
||||
|
||||
combined = combine_pages_into_grid(pages, "Test Title")
|
||||
|
||||
# Should create a combined image
|
||||
from PIL import Image
|
||||
assert isinstance(combined, Image.Image)
|
||||
|
||||
|
||||
def test_main_function():
|
||||
"""Test that the main function runs without errors."""
|
||||
main = demo_module.main
|
||||
|
||||
# Run main (will create output files)
|
||||
result = main()
|
||||
|
||||
# Should return combined image and form submissions
|
||||
assert result is not None
|
||||
assert len(result) == 2
|
||||
|
||||
combined_image, form_submissions = result
|
||||
|
||||
# Should be a PIL image
|
||||
from PIL import Image
|
||||
assert isinstance(combined_image, Image.Image)
|
||||
|
||||
# Form submissions should be a list
|
||||
assert isinstance(form_submissions, list)
|
||||
|
||||
# Output file should exist
|
||||
output_dir = Path("docs/images")
|
||||
assert (output_dir / "example_10_forms.png").exists()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main([__file__, "-v"])
|
||||
Reference in New Issue
Block a user