test_mermaid.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from nicegui import ui
  2. from nicegui.testing import Screen
  3. def test_mermaid(screen: Screen):
  4. m = ui.mermaid('''
  5. graph TD;
  6. Node_A --> Node_B;
  7. ''')
  8. screen.open('/')
  9. assert screen.find('Node_A').get_attribute('class') == 'nodeLabel'
  10. m.set_content('''
  11. graph TD;
  12. Node_C --> Node_D;
  13. ''')
  14. assert screen.find('Node_C').get_attribute('class') == 'nodeLabel'
  15. screen.should_not_contain('Node_A')
  16. def test_mermaid_with_line_breaks(screen: Screen):
  17. ui.mermaid('''
  18. requirementDiagram
  19. requirement test_req {
  20. id: 1
  21. text: some test text
  22. risk: high
  23. verifymethod: test
  24. }
  25. ''')
  26. screen.open('/')
  27. screen.should_contain('<<Requirement>>')
  28. screen.should_contain('Id: 1')
  29. screen.should_contain('Text: some test text')
  30. screen.should_contain('Risk: High')
  31. screen.should_contain('Verification: Test')
  32. def test_replace_mermaid(screen: Screen):
  33. with ui.row() as container:
  34. ui.mermaid('graph LR; Node_A')
  35. def replace():
  36. container.clear()
  37. with container:
  38. ui.mermaid('graph LR; Node_B')
  39. ui.button('Replace', on_click=replace)
  40. screen.open('/')
  41. screen.should_contain('Node_A')
  42. screen.click('Replace')
  43. screen.wait(0.5)
  44. screen.should_contain('Node_B')
  45. screen.should_not_contain('Node_A')
  46. def test_create_dynamically(screen: Screen):
  47. ui.button('Create', on_click=lambda: ui.mermaid('graph LR; Node'))
  48. screen.open('/')
  49. screen.click('Create')
  50. screen.should_contain('Node')
  51. def test_error(screen: Screen):
  52. ui.mermaid('''
  53. graph LR;
  54. A --> B;
  55. A -> C;
  56. ''').on('error', lambda e: ui.label(e.args['message']))
  57. screen.open('/')
  58. screen.should_contain('Syntax error in text')
  59. screen.should_contain('Parse error on line 3')