deepdata: core product code (backend, frontend, runtime, deepflow module)
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
import pytest
|
||||
from types import SimpleNamespace
|
||||
from app.module.collection.schema.collection import converter_to_response, converter_execution_to_response
|
||||
|
||||
from app.module.collection.schema.collection import (
|
||||
CollectionConfig,
|
||||
CollectionTaskCreate,
|
||||
CollectionTaskUpdate,
|
||||
SyncMode,
|
||||
convert_for_create,
|
||||
)
|
||||
|
||||
|
||||
def test_collection_task_update_rejects_blank_schedule_expression() -> None:
|
||||
with pytest.raises(ValueError):
|
||||
CollectionTaskUpdate(schedule_expression=" ")
|
||||
|
||||
|
||||
def test_collection_task_update_rejects_non_positive_timeout() -> None:
|
||||
with pytest.raises(ValueError):
|
||||
CollectionTaskUpdate(timeout_seconds=0)
|
||||
|
||||
|
||||
def test_convert_for_create_handles_sync_mode_schedule_expression() -> None:
|
||||
config = CollectionConfig(parameter={"k": "v"})
|
||||
|
||||
scheduled = CollectionTaskCreate(
|
||||
name="task-scheduled",
|
||||
sync_mode=SyncMode.SCHEDULED,
|
||||
schedule_expression="0 0 * * *",
|
||||
config=config,
|
||||
template_id="tpl-1",
|
||||
)
|
||||
once = CollectionTaskCreate(
|
||||
name="task-once",
|
||||
sync_mode=SyncMode.ONCE,
|
||||
schedule_expression="0 0 * * *",
|
||||
config=config,
|
||||
template_id="tpl-1",
|
||||
)
|
||||
|
||||
scheduled_record = convert_for_create(scheduled, "task-1")
|
||||
once_record = convert_for_create(once, "task-2")
|
||||
|
||||
assert scheduled_record.schedule_expression == "0 0 * * *"
|
||||
assert once_record.schedule_expression is None
|
||||
assert scheduled_record.target_path == "/dataset/local/task-1"
|
||||
|
||||
|
||||
def test_collection_task_update_accepts_positive_timeout() -> None:
|
||||
updated = CollectionTaskUpdate(timeout_seconds=30)
|
||||
assert updated.timeout_seconds == 30
|
||||
|
||||
|
||||
def test_convert_for_create_sets_pending_status() -> None:
|
||||
config = CollectionConfig(parameter={"k": "v"})
|
||||
once = CollectionTaskCreate(
|
||||
name="task-once",
|
||||
sync_mode=SyncMode.ONCE,
|
||||
config=config,
|
||||
template_id="tpl-1",
|
||||
)
|
||||
|
||||
record = convert_for_create(once, "task-3")
|
||||
|
||||
assert record.status == "PENDING"
|
||||
|
||||
|
||||
def test_collection_task_update_accepts_none_fields() -> None:
|
||||
updated = CollectionTaskUpdate()
|
||||
assert updated.timeout_seconds is None
|
||||
assert updated.config is None
|
||||
|
||||
|
||||
def test_converter_to_response_maps_json_config() -> None:
|
||||
task = SimpleNamespace(
|
||||
id="t1",
|
||||
name="task",
|
||||
description="desc",
|
||||
sync_mode="ONCE",
|
||||
template_id="tpl",
|
||||
template_name="template",
|
||||
target_path="/dataset/local/t1",
|
||||
config='{"parameter": {"a": 1}}',
|
||||
schedule_expression=None,
|
||||
status="PENDING",
|
||||
retry_count=3,
|
||||
timeout_seconds=60,
|
||||
last_execution_id="e1",
|
||||
created_at=None,
|
||||
updated_at=None,
|
||||
created_by="u",
|
||||
updated_by="u",
|
||||
)
|
||||
|
||||
response = converter_to_response(task)
|
||||
|
||||
assert response.id == "t1"
|
||||
assert response.config.parameter == {"a": 1}
|
||||
assert response.status.value == "PENDING"
|
||||
|
||||
|
||||
def test_converter_execution_to_response_maps_fields() -> None:
|
||||
execution = SimpleNamespace(
|
||||
id="e1",
|
||||
task_id="t1",
|
||||
task_name="task",
|
||||
status="RUNNING",
|
||||
log_path="/x.log",
|
||||
started_at=None,
|
||||
completed_at=None,
|
||||
duration_seconds=1,
|
||||
error_message=None,
|
||||
created_at=None,
|
||||
updated_at=None,
|
||||
created_by="u",
|
||||
updated_by="u",
|
||||
)
|
||||
|
||||
response = converter_execution_to_response(execution)
|
||||
|
||||
assert response.id == "e1"
|
||||
assert response.task_id == "t1"
|
||||
assert response.status == "RUNNING"
|
||||
|
||||
Reference in New Issue
Block a user