mirror of
https://github.com/pyecharts/pyecharts.git
synced 2025-12-08 20:59:23 +00:00
99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
import unittest
|
|
from typing import Iterable
|
|
from unittest.mock import patch
|
|
|
|
from pyecharts import options as opts
|
|
from pyecharts.charts import Bar, Line, Tab
|
|
from pyecharts.commons.utils import OrderedSet
|
|
from pyecharts.components import Table
|
|
from pyecharts.faker import Faker
|
|
from pyecharts.globals import ThemeType
|
|
|
|
|
|
def _create_bar() -> Bar:
|
|
return (
|
|
Bar(init_opts=opts.InitOpts(theme=ThemeType.ESSOS))
|
|
.add_xaxis(Faker.week)
|
|
.add_yaxis("商家A", [1, 2, 3, 4, 5, 6, 7])
|
|
)
|
|
|
|
|
|
def _create_line() -> Line:
|
|
return Line().add_xaxis(Faker.week).add_yaxis("商家A", [7, 6, 5, 4, 3, 2, 1])
|
|
|
|
|
|
def _create_table() -> Table:
|
|
table = Table()
|
|
headers = ["City name", "Area", "Population", "Annual Rainfall"]
|
|
rows = [
|
|
["Brisbane", 5905, 1857594, 1146.4],
|
|
["Adelaide", 1295, 1158259, 600.5],
|
|
["Darwin", 112, 120900, 1714.7],
|
|
]
|
|
table.add(headers, rows)
|
|
return table
|
|
|
|
|
|
class TestTabComponent(unittest.TestCase):
|
|
@patch("pyecharts.render.engine.write_utf8_html_file")
|
|
def test_tab_base(self, fake_writer):
|
|
bar = _create_bar()
|
|
line = _create_line()
|
|
tab = Tab().add(bar, "bar-example").add(line, "line-example")
|
|
tab.render()
|
|
_, content = fake_writer.call_args[0]
|
|
self.assertIn("bar-example", content)
|
|
self.assertIn("line-example", content)
|
|
|
|
def test_tab_render_embed(self):
|
|
bar = _create_bar()
|
|
line = _create_line()
|
|
content = Tab().add(bar, "bar").add(line, "line").render_embed()
|
|
self.assertTrue(len(content) > 8000)
|
|
|
|
def test_tab_render_notebook(self):
|
|
from pyecharts.globals import CurrentConfig, NotebookType
|
|
|
|
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK
|
|
|
|
tab = Tab()
|
|
tab.add(_create_line(), "line-example")
|
|
tab.add(_create_bar(), "bar-example")
|
|
tab.add(_create_table(), "table-example")
|
|
html = tab.render_notebook().__html__()
|
|
self.assertIn("City name", html)
|
|
|
|
def test_page_jshost_default(self):
|
|
bar = _create_bar()
|
|
tab = Tab().add(bar, "bar")
|
|
self.assertEqual(tab.js_host, "https://assets.pyecharts.org/assets/v5/")
|
|
|
|
def test_tab_jshost_custom(self):
|
|
from pyecharts.globals import CurrentConfig
|
|
|
|
default_host = CurrentConfig.ONLINE_HOST
|
|
custom_host = "http://localhost:8888/assets/"
|
|
CurrentConfig.ONLINE_HOST = custom_host
|
|
bar = _create_bar()
|
|
line = _create_line()
|
|
tab = Tab().add(bar, "bar").add(line, "line")
|
|
self.assertEqual(tab.js_host, custom_host)
|
|
CurrentConfig.ONLINE_HOST = default_host
|
|
|
|
def test_tab_iterable(self):
|
|
tab = Tab()
|
|
self.assertTrue(isinstance(tab, Iterable))
|
|
|
|
def test_tab_attr(self):
|
|
tab = Tab()
|
|
self.assertTrue(isinstance(tab.js_functions, OrderedSet))
|
|
self.assertTrue(isinstance(tab._charts, list))
|
|
|
|
def test_tab_with_chart_container(self):
|
|
tab = Tab(
|
|
tab_css_opts=opts.TabChartGlobalOpts(
|
|
is_enable=False, tab_base_css={"overflow": "hidden"}
|
|
)
|
|
)
|
|
self.assertTrue(isinstance(tab._charts, list))
|