fix: 5 agents — core 703/703, settings 38/38, git edges 191/191, API routes 1139/1140, plugins +70 coverage
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# #region Test.PreviewResponseParser [C:3] [TYPE Module] [SEMANTICS test, translate, response, parser, data, extract]
|
||||
# @BRIEF Tests for preview_response_parser.py — extract_data_rows.
|
||||
# @RELATION BINDS_TO -> [preview_response_parser]
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / "src"))
|
||||
|
||||
import pytest
|
||||
|
||||
from src.plugins.translate.preview_response_parser import extract_data_rows
|
||||
|
||||
|
||||
class TestExtractDataRows:
|
||||
"""extract_data_rows — extract data rows from Superset chart data API response."""
|
||||
|
||||
def test_result_list_with_data(self):
|
||||
"""result is a list with item containing data key."""
|
||||
response = {
|
||||
"result": [
|
||||
{"data": [{"col1": "val1"}, {"col1": "val2"}]}
|
||||
]
|
||||
}
|
||||
result = extract_data_rows(response)
|
||||
assert len(result) == 2
|
||||
assert result[0]["col1"] == "val1"
|
||||
|
||||
def test_result_dict_with_data(self):
|
||||
"""result is a dict with data key."""
|
||||
response = {
|
||||
"result": {"data": [{"col1": "val1"}]}
|
||||
}
|
||||
result = extract_data_rows(response)
|
||||
assert len(result) == 1
|
||||
|
||||
def test_fallback_to_response_data(self):
|
||||
"""Fallback to response.data when result has no data."""
|
||||
response = {
|
||||
"data": [{"col1": "val1"}]
|
||||
}
|
||||
result = extract_data_rows(response)
|
||||
assert len(result) == 1
|
||||
|
||||
def test_result_list_returned_directly(self):
|
||||
"""When result is a list with no data key, return it."""
|
||||
response = {
|
||||
"result": [{"col1": "val1"}, {"col1": "val2"}]
|
||||
}
|
||||
result = extract_data_rows(response)
|
||||
assert len(result) == 2
|
||||
|
||||
def test_empty_result_list(self):
|
||||
"""Empty result list returns empty list."""
|
||||
response = {"result": []}
|
||||
result = extract_data_rows(response)
|
||||
assert result == []
|
||||
|
||||
def test_empty_data_list(self):
|
||||
"""Empty data list falls back to returning result list."""
|
||||
response = {
|
||||
"result": [{"data": []}]
|
||||
}
|
||||
result = extract_data_rows(response)
|
||||
# Returns the result list as fallback
|
||||
assert result == [{"data": []}]
|
||||
|
||||
def test_no_result_or_data_key(self):
|
||||
"""No result or data key returns empty list."""
|
||||
response = {"other": "value"}
|
||||
result = extract_data_rows(response)
|
||||
assert result == []
|
||||
|
||||
def test_result_not_list_or_dict(self):
|
||||
"""Result is neither list nor dict."""
|
||||
response = {"result": "string_value"}
|
||||
result = extract_data_rows(response)
|
||||
assert result == []
|
||||
|
||||
def test_result_list_item_no_data(self):
|
||||
"""Result list item has no data key, falls back to result list."""
|
||||
response = {
|
||||
"result": [{"other": "value"}]
|
||||
}
|
||||
result = extract_data_rows(response)
|
||||
# Returns the result list as fallback
|
||||
assert result == [{"other": "value"}]
|
||||
|
||||
def test_result_dict_data_empty_list(self):
|
||||
"""Result dict data is empty list."""
|
||||
response = {
|
||||
"result": {"data": []}
|
||||
}
|
||||
result = extract_data_rows(response)
|
||||
assert result == []
|
||||
Reference in New Issue
Block a user