test_echart.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. from selenium.webdriver.common.by import By
  2. from nicegui import ui
  3. from .screen import Screen
  4. def test_change_chart_series(screen: Screen):
  5. chart = ui.echart({
  6. 'xAxis': {'type': 'value'},
  7. 'yAxis': {'type': 'category', 'data': ['A', 'B'], 'inverse': True},
  8. 'legend': {'textStyle': {'color': 'gray'}},
  9. 'series': [
  10. {'type': 'bar', 'name': 'Alpha', 'data': [0.1, 0.2]},
  11. {'type': 'bar', 'name': 'Beta', 'data': [0.3, 0.4]},
  12. ],
  13. }).classes('w-full h-64')
  14. def update():
  15. chart.options['series'][0]['data'][:] = [1, 1]
  16. chart.update()
  17. ui.button('Update', on_click=update)
  18. # to be updated to for ehcart testing
  19. #
  20. # def get_series_0():
  21. # return screen.selenium.find_elements(By.CSS_SELECTOR, '.highcharts-series-0 .highcharts-point')
  22. #
  23. # screen.open('/')
  24. # screen.wait(0.5)
  25. # before = [bar.size['width'] for bar in get_series_0()] # pylint: disable=disallowed-name
  26. # screen.click('Update')
  27. # screen.wait(0.5)
  28. # after = [bar.size['width'] for bar in get_series_0()] # pylint: disable=disallowed-name
  29. # assert before[0] < after[0]
  30. # assert before[1] < after[1]
  31. def test_adding_chart_series(screen: Screen):
  32. chart = ui.echart({
  33. 'xAxis': {'type': 'category', 'data': ['A', 'B']},
  34. 'series': [],
  35. }).classes('w-full h-64')
  36. def add():
  37. chart.options['series'].append({'type':'bar', 'name': 'X', 'data': [0.1, 0.2]})
  38. chart.update()
  39. ui.button('Add', on_click=add)
  40. # to be updated to for ehcart testing
  41. #
  42. # screen.open('/')
  43. # screen.click('Add')
  44. # screen.wait(0.5)
  45. # assert len(screen.selenium.find_elements(By.CSS_SELECTOR, '.highcharts-point')) == 3
  46. def test_removing_chart_series(screen: Screen):
  47. chart = ui.echart({
  48. 'xAxis': {'type': 'category', 'data': ['A', 'B']},
  49. 'series': [
  50. {'type':'bar', 'name': 'Alpha', 'data': [0.1, 0.2]},
  51. {'type':'bar', 'name': 'Beta', 'data': [0.3, 0.4]},
  52. ],
  53. }).classes('w-full h-64')
  54. def remove():
  55. chart.options['series'].pop(0)
  56. chart.update()
  57. ui.button('Remove', on_click=remove)
  58. # to be updated to for ehcart testing
  59. #
  60. # screen.open('/')
  61. # screen.click('Remove')
  62. # screen.wait(0.5)
  63. # assert len(screen.selenium.find_elements(By.CSS_SELECTOR, '.highcharts-point')) == 3
  64. def test_replace_chart(screen: Screen):
  65. with ui.row() as container:
  66. ui.echart({'series': [{'type':'bar', 'name': 'A'}]})
  67. def replace():
  68. container.clear()
  69. with container:
  70. ui.echart({'series': [{'type':'bar', 'name': 'B'}]})
  71. ui.button('Replace', on_click=replace)
  72. # to be updated to for ehcart testing
  73. #
  74. # screen.open('/')
  75. # screen.should_contain('A')
  76. # screen.click('Replace')
  77. # screen.should_contain('B')
  78. # screen.should_not_contain('A')
  79. def test_create_dynamically(screen: Screen):
  80. ui.button('Create', on_click=lambda: ui.echart({}))
  81. # to be updated to for ehcart testing
  82. #
  83. # screen.open('/')
  84. # screen.click('Create')
  85. # screen.should_contain('Chart title')