refactor(api): migrate console tag responses from marshal_with to BaseModel (#35208)

Co-authored-by: ai-hpc <ai-hpc@users.noreply.github.com>
This commit is contained in:
NVIDIAN
2026-04-15 09:57:27 +00:00
committed by GitHub
co-authored by ai-hpc
parent 425457cb16
commit dbceb3067e
2 changed files with 62 additions and 20 deletions
@@ -1,9 +1,11 @@
from types import SimpleNamespace
from unittest.mock import MagicMock, PropertyMock, patch
import pytest
from flask import Flask
from werkzeug.exceptions import Forbidden
import controllers.console.tag.tags as module
from controllers.console import console_ns
from controllers.console.tag.tags import (
TagBindingCreateApi,
@@ -83,13 +85,20 @@ class TestTagListApi:
),
patch(
"controllers.console.tag.tags.TagService.get_tags",
return_value=[{"id": "1", "name": "tag"}],
return_value=[
SimpleNamespace(
id="1",
name="tag",
type=TagType.KNOWLEDGE,
binding_count=1,
)
],
),
):
result, status = method(api)
assert status == 200
assert isinstance(result, list)
assert result == [{"id": "1", "name": "tag", "type": "knowledge", "binding_count": "1"}]
def test_post_success(self, app, admin_user, tag, payload_patch):
api = TagListApi()
@@ -113,6 +122,7 @@ class TestTagListApi:
assert status == 200
assert result["name"] == "test-tag"
assert result["binding_count"] == "0"
def test_post_forbidden(self, app, readonly_user, payload_patch):
api = TagListApi()
@@ -158,7 +168,7 @@ class TestTagUpdateDeleteApi:
result, status = method(api, "tag-1")
assert status == 200
assert result["binding_count"] == 3
assert result["binding_count"] == "3"
def test_patch_forbidden(self, app, readonly_user, payload_patch):
api = TagUpdateDeleteApi()
@@ -277,3 +287,13 @@ class TestTagBindingDeleteApi:
):
with pytest.raises(Forbidden):
method(api)
class TestTagResponseModel:
def test_tag_response_normalizes_enum_type(self):
payload = module.TagResponse.model_validate(
{"id": "tag-1", "name": "tag", "type": TagType.KNOWLEDGE, "binding_count": 1}
).model_dump(mode="json")
assert payload["type"] == "knowledge"
assert payload["binding_count"] == "1"