test_context_is_submitable.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from unittest.mock import Mock, patch
  2. import pytest
  3. from src.taipy.gui_core._context import _GuiCoreContext
  4. from taipy.config.common.scope import Scope
  5. from taipy.core import Job, Scenario, Task
  6. from taipy.core.data.pickle import PickleDataNode
  7. a_scenario = Scenario("scenario_config_id", [], {}, sequences={"sequence": {}})
  8. a_task = Task("task_config_id", {}, print)
  9. a_job = Job("JOB_job_id", a_task, "submit_id", a_scenario.id)
  10. a_job.isfinished = lambda s: True
  11. a_datanode = PickleDataNode("data_node_config_id", Scope.SCENARIO)
  12. def mock_is_submittable_false(entity_id):
  13. return False
  14. def mock_is_true(entity_id):
  15. return True
  16. def mock_core_get(entity_id):
  17. if entity_id == a_scenario.id:
  18. return a_scenario
  19. if entity_id == a_job.id:
  20. return a_job
  21. if entity_id == a_datanode.id:
  22. return a_datanode
  23. return a_task
  24. class MockState:
  25. def __init__(self, **kwargs) -> None:
  26. self.assign = kwargs.get("assign")
  27. class TestGuiCoreContext_is_submittable:
  28. def test_submit_entity(self):
  29. with patch("src.taipy.gui_core._context.core_get", side_effect=mock_core_get), patch(
  30. "src.taipy.gui_core._context.is_submittable", side_effect=mock_is_true
  31. ):
  32. gui_core_context = _GuiCoreContext(Mock())
  33. assign = Mock()
  34. gui_core_context.submit_entity(
  35. MockState(assign=assign),
  36. "",
  37. {
  38. "args": [
  39. {"name": "name", "id": a_scenario.id},
  40. ]
  41. },
  42. )
  43. assign.assert_called_once()
  44. assert assign.call_args.args[0] == "gui_core_sv_error"
  45. assert str(assign.call_args.args[1]).startswith("Error submitting entity.")
  46. with patch("src.taipy.gui_core._context.is_submittable", side_effect=mock_is_submittable_false):
  47. assign.reset_mock()
  48. gui_core_context.submit_entity(
  49. MockState(assign=assign),
  50. "",
  51. {
  52. "args": [
  53. {"name": "name", "id": a_scenario.id},
  54. ]
  55. },
  56. )
  57. assign.assert_called_once()
  58. assert assign.call_args.args[0] == "gui_core_sv_error"
  59. assert str(assign.call_args.args[1]).endswith("is not submittable.")