mirror of
https://github.com/divkit/divkit.git
synced 2026-05-07 20:02:32 +00:00
204 lines
7.0 KiB
Python
204 lines
7.0 KiB
Python
import pydivkit as dk
|
|
|
|
|
|
def test_container_example():
|
|
container = dk.DivContainer(
|
|
items=[dk.DivGallery(items=[dk.DivText(text="Hello from pydivkit")])]
|
|
)
|
|
|
|
assert container.dict() == {
|
|
"type": "container", "items": [
|
|
{"type": "gallery", "items": [
|
|
{"type": "text", "text": "Hello from pydivkit"}]
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
def test_slider_example():
|
|
slider = dk.DivData(
|
|
log_id="sample_card",
|
|
states=[
|
|
dk.DivDataState(
|
|
state_id=0,
|
|
div=dk.DivSlider(
|
|
width=dk.DivMatchParentSize(),
|
|
max_value=10,
|
|
min_value=1,
|
|
thumb_style=dk.DivShapeDrawable(
|
|
color="#00b300",
|
|
stroke=dk.DivStroke(
|
|
color="#ffffff",
|
|
width=3,
|
|
),
|
|
shape=dk.DivRoundedRectangleShape(
|
|
item_width=dk.DivFixedSize(value=32),
|
|
item_height=dk.DivFixedSize(value=32),
|
|
corner_radius=dk.DivFixedSize(value=100)
|
|
),
|
|
),
|
|
track_active_style=dk.DivShapeDrawable(
|
|
color="#00b300",
|
|
shape=dk.DivRoundedRectangleShape(
|
|
item_height=dk.DivFixedSize(value=6)
|
|
)
|
|
),
|
|
track_inactive_style=dk.DivShapeDrawable(
|
|
color="#20000000",
|
|
shape=dk.DivRoundedRectangleShape(
|
|
item_height=dk.DivFixedSize(value=6)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
]
|
|
)
|
|
|
|
assert slider.dict() == dict(log_id="sample_card", states=[
|
|
dict(
|
|
div=dict(
|
|
type="slider",
|
|
max_value=10,
|
|
min_value=1,
|
|
thumb_style=dict(
|
|
type="shape_drawable", color="#00b300",
|
|
shape=dict(
|
|
type="rounded_rectangle",
|
|
corner_radius=dict(
|
|
type="fixed", value=100
|
|
),
|
|
item_height=dict(type="fixed", value=32),
|
|
item_width=dict(type="fixed", value=32),
|
|
),
|
|
stroke=dict(color="#ffffff", width=3)
|
|
),
|
|
track_active_style=dict(
|
|
type="shape_drawable",
|
|
color="#00b300",
|
|
shape=dict(
|
|
type="rounded_rectangle",
|
|
item_height=dict(type="fixed", value=6))),
|
|
track_inactive_style=dict(
|
|
type="shape_drawable", color="#20000000", shape=dict(
|
|
type="rounded_rectangle",
|
|
item_height=dict(type="fixed", value=6))
|
|
),
|
|
width=dict(type="match_parent")
|
|
),
|
|
state_id=0
|
|
)
|
|
])
|
|
|
|
|
|
def test_gallery():
|
|
class CategoriesItem(dk.DivContainer):
|
|
"""
|
|
Class inherited from dk.DivContainer will have a template
|
|
"""
|
|
|
|
# Special object for mark this fields a DivKit field in template
|
|
icon_url: str = dk.Field()
|
|
text: str = dk.Field()
|
|
|
|
# Set defaults layout for in the template
|
|
width = dk.DivWrapContentSize()
|
|
background = [dk.DivSolidBackground(color="#f0f0f0")]
|
|
content_alignment_vertical = dk.DivAlignmentVertical.CENTER
|
|
orientation = dk.DivContainerOrientation.HORIZONTAL
|
|
paddings = dk.DivEdgeInsets(left=12, right=12, top=10, bottom=10)
|
|
border = dk.DivBorder(corner_radius=12)
|
|
items = [
|
|
dk.DivImage(
|
|
width=dk.DivFixedSize(value=20),
|
|
height=dk.DivFixedSize(value=20),
|
|
margins=dk.DivEdgeInsets(right=6),
|
|
|
|
# Special object Ref it's a reference for Field property
|
|
image_url=dk.Ref(icon_url),
|
|
),
|
|
dk.DivText(
|
|
width=dk.DivWrapContentSize(),
|
|
max_lines=1,
|
|
|
|
# Special object Ref it's a reference for Field property
|
|
text=dk.Ref(text),
|
|
),
|
|
]
|
|
|
|
base_url = "https://leonardo.edadeal.io/dyn/re/segments/level1/96"
|
|
|
|
# So after class definition you might use all the `Field` marked property
|
|
# names as an argument.
|
|
|
|
gallery = dk.DivGallery(
|
|
items=[
|
|
CategoriesItem(
|
|
text="Food", icon_url=f"{base_url}/food.png",
|
|
),
|
|
CategoriesItem(
|
|
text="Alcohol", icon_url=f"{base_url}/alcohol.png",
|
|
),
|
|
CategoriesItem(
|
|
text="Household", icon_url=f"{base_url}/household.png",
|
|
),
|
|
]
|
|
)
|
|
|
|
template_name = CategoriesItem.template_name
|
|
|
|
assert dk.make_div(gallery) == {
|
|
'templates': {
|
|
template_name: {
|
|
'type': 'container',
|
|
'background': [{'type': 'solid', 'color': '#f0f0f0'}],
|
|
'border': {'corner_radius': 12},
|
|
'content_alignment_vertical': 'center',
|
|
'items': [
|
|
{
|
|
'type': 'image',
|
|
'height': {'type': 'fixed', 'value': 20},
|
|
'$image_url': 'icon_url',
|
|
'margins': {'right': 6},
|
|
'width': {'type': 'fixed', 'value': 20}
|
|
}, {
|
|
'type': 'text',
|
|
'max_lines': 1,
|
|
'$text': 'text',
|
|
'width': {
|
|
'type': 'wrap_content'
|
|
}
|
|
}
|
|
],
|
|
'orientation': 'horizontal',
|
|
'paddings': {'bottom': 10, 'left': 12, 'right': 12, 'top': 10},
|
|
'width': {'type': 'wrap_content'}
|
|
}
|
|
},
|
|
'card': {
|
|
'log_id': 'card',
|
|
'states': [
|
|
{
|
|
'div': {
|
|
'type': 'gallery',
|
|
'items': [
|
|
{
|
|
'type': template_name,
|
|
'icon_url': f'{base_url}/food.png',
|
|
'text': 'Food'
|
|
}, {
|
|
'type': template_name,
|
|
'icon_url': f'{base_url}/alcohol.png',
|
|
'text': 'Alcohol'
|
|
}, {
|
|
'type': template_name,
|
|
'icon_url': f'{base_url}/household.png',
|
|
'text': 'Household'
|
|
}
|
|
]
|
|
},
|
|
'state_id': 0
|
|
}
|
|
]
|
|
}
|
|
}
|