dify/api/tests/unit_tests/models/test_snippet.py
FFXN 00ac937934
feat: snippet (#37046)
Co-authored-by: JzoNg <jzongcode@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-05 09:38:42 +00:00

77 lines
2.8 KiB
Python

import json
from types import SimpleNamespace
from unittest.mock import Mock
from models.snippet import CustomizedSnippet
def test_graph_dict_returns_empty_without_workflow_id() -> None:
snippet = CustomizedSnippet(workflow_id=None)
assert snippet.graph_dict == {}
def test_graph_dict_loads_published_workflow_graph(monkeypatch) -> None:
workflow = SimpleNamespace(graph=json.dumps({"nodes": [{"id": "llm-1"}], "edges": []}))
session = SimpleNamespace(get=Mock(return_value=workflow))
monkeypatch.setattr("models.snippet.db.session", session)
snippet = CustomizedSnippet(workflow_id="workflow-1")
assert snippet.graph_dict == {"nodes": [{"id": "llm-1"}], "edges": []}
session.get.assert_called_once()
def test_graph_dict_returns_empty_when_workflow_missing(monkeypatch) -> None:
session = SimpleNamespace(get=Mock(return_value=None))
monkeypatch.setattr("models.snippet.db.session", session)
snippet = CustomizedSnippet(workflow_id="missing-workflow")
assert snippet.graph_dict == {}
def test_input_fields_list_parses_json_or_returns_empty() -> None:
assert CustomizedSnippet(input_fields=None).input_fields_list == []
assert CustomizedSnippet(input_fields=json.dumps([{"variable": "query"}])).input_fields_list == [
{"variable": "query"}
]
def test_tags_returns_query_results_or_empty(monkeypatch) -> None:
tags = [SimpleNamespace(id="tag-1")]
session = SimpleNamespace(scalars=Mock(return_value=SimpleNamespace(all=Mock(return_value=tags))))
monkeypatch.setattr("models.snippet.db.session", session)
snippet = CustomizedSnippet(id="snippet-1", tenant_id="tenant-1")
assert snippet.tags == tags
session.scalars.return_value.all.return_value = None
assert snippet.tags == []
def test_account_properties_and_author_name(monkeypatch) -> None:
account = SimpleNamespace(id="account-1", name="Ada")
updated_account = SimpleNamespace(id="account-2", name="Grace")
session = SimpleNamespace(
get=Mock(side_effect=lambda _model, account_id: account if account_id == "account-1" else updated_account)
)
monkeypatch.setattr("models.snippet.db.session", session)
snippet = CustomizedSnippet(created_by="account-1", updated_by="account-2")
assert snippet.created_by_account is account
assert snippet.author_name == "Ada"
assert snippet.updated_by_account is updated_account
def test_account_properties_return_none_without_account_ids() -> None:
snippet = CustomizedSnippet(created_by=None, updated_by=None)
assert snippet.created_by_account is None
assert snippet.author_name is None
assert snippet.updated_by_account is None
def test_version_str_returns_string_value() -> None:
snippet = CustomizedSnippet(version=7)
assert snippet.version_str == "7"