mirror of
https://github.com/langgenius/dify.git
synced 2026-06-17 11:50:44 +08:00
refactor: replace dict params with BaseModel payloads in TagService (#34422)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
+6
-2
@@ -970,8 +970,10 @@ class TestDatasetTagBindingApiPost:
|
||||
result = api.post(_=None)
|
||||
|
||||
assert result == ("", 204)
|
||||
from services.tag_service import TagBindingCreatePayload
|
||||
|
||||
mock_tag_svc.save_tag_binding.assert_called_once_with(
|
||||
{"tag_ids": ["tag-1"], "target_id": "ds-1", "type": "knowledge"}
|
||||
TagBindingCreatePayload(tag_ids=["tag-1"], target_id="ds-1", type="knowledge")
|
||||
)
|
||||
|
||||
@patch("controllers.service_api.dataset.dataset.current_user")
|
||||
@@ -1019,8 +1021,10 @@ class TestDatasetTagUnbindingApiPost:
|
||||
result = api.post(_=None)
|
||||
|
||||
assert result == ("", 204)
|
||||
from services.tag_service import TagBindingDeletePayload
|
||||
|
||||
mock_tag_svc.delete_tag_binding.assert_called_once_with(
|
||||
{"tag_id": "tag-1", "target_id": "ds-1", "type": "knowledge"}
|
||||
TagBindingDeletePayload(tag_id="tag-1", target_id="ds-1", type="knowledge")
|
||||
)
|
||||
|
||||
@patch("controllers.service_api.dataset.dataset.current_user")
|
||||
|
||||
@@ -12,7 +12,13 @@ from models import Account, Tenant, TenantAccountJoin, TenantAccountRole
|
||||
from models.dataset import Dataset
|
||||
from models.enums import DataSourceType, TagType
|
||||
from models.model import App, Tag, TagBinding
|
||||
from services.tag_service import TagService
|
||||
from services.tag_service import (
|
||||
SaveTagPayload,
|
||||
TagBindingCreatePayload,
|
||||
TagBindingDeletePayload,
|
||||
TagService,
|
||||
UpdateTagPayload,
|
||||
)
|
||||
|
||||
|
||||
class TestTagService:
|
||||
@@ -685,7 +691,7 @@ class TestTagService:
|
||||
db_session_with_containers, mock_external_service_dependencies
|
||||
)
|
||||
|
||||
tag_args = {"name": "test_tag_name", "type": "knowledge"}
|
||||
tag_args = SaveTagPayload(name="test_tag_name", type="knowledge")
|
||||
|
||||
# Act: Execute the method under test
|
||||
result = TagService.save_tags(tag_args)
|
||||
@@ -725,7 +731,7 @@ class TestTagService:
|
||||
)
|
||||
|
||||
# Create first tag
|
||||
tag_args = {"name": "duplicate_tag", "type": "app"}
|
||||
tag_args = SaveTagPayload(name="duplicate_tag", type="app")
|
||||
TagService.save_tags(tag_args)
|
||||
|
||||
# Act & Assert: Verify proper error handling
|
||||
@@ -749,11 +755,11 @@ class TestTagService:
|
||||
)
|
||||
|
||||
# Create a tag to update
|
||||
tag_args = {"name": "original_name", "type": "knowledge"}
|
||||
tag_args = SaveTagPayload(name="original_name", type="knowledge")
|
||||
tag = TagService.save_tags(tag_args)
|
||||
|
||||
# Update args
|
||||
update_args = {"name": "updated_name", "type": "knowledge"}
|
||||
update_args = UpdateTagPayload(name="updated_name", type="knowledge")
|
||||
|
||||
# Act: Execute the method under test
|
||||
result = TagService.update_tags(update_args, tag.id)
|
||||
@@ -793,7 +799,7 @@ class TestTagService:
|
||||
|
||||
non_existent_tag_id = str(uuid.uuid4())
|
||||
|
||||
update_args = {"name": "updated_name", "type": "knowledge"}
|
||||
update_args = UpdateTagPayload(name="updated_name", type="knowledge")
|
||||
|
||||
# Act & Assert: Verify proper error handling
|
||||
with pytest.raises(NotFound) as exc_info:
|
||||
@@ -817,14 +823,14 @@ class TestTagService:
|
||||
)
|
||||
|
||||
# Create two tags
|
||||
tag1_args = {"name": "first_tag", "type": "app"}
|
||||
tag1_args = SaveTagPayload(name="first_tag", type="app")
|
||||
tag1 = TagService.save_tags(tag1_args)
|
||||
|
||||
tag2_args = {"name": "second_tag", "type": "app"}
|
||||
tag2_args = SaveTagPayload(name="second_tag", type="app")
|
||||
tag2 = TagService.save_tags(tag2_args)
|
||||
|
||||
# Try to update second tag with first tag's name
|
||||
update_args = {"name": "first_tag", "type": "app"}
|
||||
update_args = UpdateTagPayload(name="first_tag", type="app")
|
||||
|
||||
# Act & Assert: Verify proper error handling
|
||||
with pytest.raises(ValueError) as exc_info:
|
||||
@@ -988,8 +994,10 @@ class TestTagService:
|
||||
dataset = self._create_test_dataset(db_session_with_containers, mock_external_service_dependencies, tenant.id)
|
||||
|
||||
# Act: Execute the method under test
|
||||
binding_args = {"type": "knowledge", "target_id": dataset.id, "tag_ids": [tag.id for tag in tags]}
|
||||
TagService.save_tag_binding(binding_args)
|
||||
binding_payload = TagBindingCreatePayload(
|
||||
type="knowledge", target_id=dataset.id, tag_ids=[tag.id for tag in tags]
|
||||
)
|
||||
TagService.save_tag_binding(binding_payload)
|
||||
|
||||
# Assert: Verify the expected outcomes
|
||||
|
||||
@@ -1030,11 +1038,11 @@ class TestTagService:
|
||||
app = self._create_test_app(db_session_with_containers, mock_external_service_dependencies, tenant.id)
|
||||
|
||||
# Create first binding
|
||||
binding_args = {"type": "app", "target_id": app.id, "tag_ids": [tag.id]}
|
||||
TagService.save_tag_binding(binding_args)
|
||||
binding_payload = TagBindingCreatePayload(type="app", target_id=app.id, tag_ids=[tag.id])
|
||||
TagService.save_tag_binding(binding_payload)
|
||||
|
||||
# Act: Try to create duplicate binding
|
||||
TagService.save_tag_binding(binding_args)
|
||||
TagService.save_tag_binding(binding_payload)
|
||||
|
||||
# Assert: Verify the expected outcomes
|
||||
|
||||
@@ -1071,11 +1079,10 @@ class TestTagService:
|
||||
non_existent_target_id = str(uuid.uuid4())
|
||||
|
||||
# Act & Assert: Verify proper error handling
|
||||
binding_args = {"type": "invalid_type", "target_id": non_existent_target_id, "tag_ids": [tag.id]}
|
||||
from pydantic import ValidationError
|
||||
|
||||
with pytest.raises(NotFound) as exc_info:
|
||||
TagService.save_tag_binding(binding_args)
|
||||
assert "Invalid binding type" in str(exc_info.value)
|
||||
with pytest.raises(ValidationError):
|
||||
TagBindingCreatePayload(type="invalid_type", target_id=non_existent_target_id, tag_ids=[tag.id])
|
||||
|
||||
def test_delete_tag_binding_success(self, db_session_with_containers: Session, mock_external_service_dependencies):
|
||||
"""
|
||||
@@ -1113,8 +1120,8 @@ class TestTagService:
|
||||
assert binding_before is not None
|
||||
|
||||
# Act: Execute the method under test
|
||||
delete_args = {"type": "knowledge", "target_id": dataset.id, "tag_id": tag.id}
|
||||
TagService.delete_tag_binding(delete_args)
|
||||
delete_payload = TagBindingDeletePayload(type="knowledge", target_id=dataset.id, tag_id=tag.id)
|
||||
TagService.delete_tag_binding(delete_payload)
|
||||
|
||||
# Assert: Verify the expected outcomes
|
||||
# Verify tag binding was deleted
|
||||
@@ -1149,8 +1156,8 @@ class TestTagService:
|
||||
app = self._create_test_app(db_session_with_containers, mock_external_service_dependencies, tenant.id)
|
||||
|
||||
# Act: Try to delete non-existent binding
|
||||
delete_args = {"type": "app", "target_id": app.id, "tag_id": tag.id}
|
||||
TagService.delete_tag_binding(delete_args)
|
||||
delete_payload = TagBindingDeletePayload(type="app", target_id=app.id, tag_id=tag.id)
|
||||
TagService.delete_tag_binding(delete_payload)
|
||||
|
||||
# Assert: Verify the expected outcomes
|
||||
# No error should be raised, and database state should remain unchanged
|
||||
|
||||
Reference in New Issue
Block a user