54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import pytest
|
|
|
|
from disagreement.ui.view import View
|
|
from disagreement.ui.button import Button
|
|
from disagreement.ui.select import Select
|
|
from disagreement.enums import ButtonStyle, ComponentType
|
|
from disagreement.models import SelectOption
|
|
|
|
|
|
def test_basic_layout_keeps_one_item_per_row():
|
|
view = View()
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label="a"))
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label="b"))
|
|
|
|
rows = view.to_components()
|
|
assert len(rows) == 2
|
|
assert all(len(r.components) == 1 for r in rows)
|
|
|
|
|
|
def test_advanced_layout_groups_buttons():
|
|
view = View()
|
|
for i in range(6):
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label=str(i)))
|
|
|
|
rows = view.layout_components_advanced()
|
|
assert len(rows) == 2
|
|
assert len(rows[0].components) == 5
|
|
assert len(rows[1].components) == 1
|
|
|
|
|
|
def test_advanced_layout_select_separate():
|
|
view = View()
|
|
view.add_item(Select(custom_id="s", options=[SelectOption(label="A", value="a")]))
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label="b1"))
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label="b2"))
|
|
|
|
rows = view.layout_components_advanced()
|
|
assert len(rows) == 2
|
|
assert rows[0].components[0].type == ComponentType.STRING_SELECT
|
|
assert all(c.type == ComponentType.BUTTON for c in rows[1].components)
|
|
assert len(rows[1].components) == 2
|
|
|
|
|
|
def test_advanced_layout_respects_row_attribute():
|
|
view = View()
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label="x", row=1))
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label="y", row=1))
|
|
view.add_item(Button(style=ButtonStyle.PRIMARY, label="z", row=0))
|
|
|
|
rows = view.layout_components_advanced()
|
|
assert len(rows) == 2
|
|
assert len(rows[0].components) == 1
|
|
assert len(rows[1].components) == 2
|