pr feedback
This commit is contained in:
@@ -17,14 +17,14 @@ from core.utils import handle_http_errors
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def _extract_option_values(options: List[Dict[str, Any]]) -> List[str]:
|
def _extract_option_values(options: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
|
||||||
"""Extract non-empty option values from Forms choice option objects."""
|
"""Extract valid option objects from Forms choice option objects.
|
||||||
values: List[str] = []
|
|
||||||
for option in options:
|
Returns the full option dicts (preserving fields like ``isOther``,
|
||||||
value = option.get("value")
|
``image``, ``goToAction``, and ``goToSectionId``) while filtering
|
||||||
if value:
|
out entries that lack a truthy ``value``.
|
||||||
values.append(value)
|
"""
|
||||||
return values
|
return [option for option in options if option.get("value")]
|
||||||
|
|
||||||
|
|
||||||
def _get_question_type(question: Dict[str, Any]) -> str:
|
def _get_question_type(question: Dict[str, Any]) -> str:
|
||||||
@@ -196,18 +196,18 @@ async def get_form(service, user_google_email: str, form_id: str) -> str:
|
|||||||
_serialize_form_item(item, i) for i, item in enumerate(items, 1)
|
_serialize_form_item(item, i) for i, item in enumerate(items, 1)
|
||||||
]
|
]
|
||||||
|
|
||||||
questions_summary = []
|
items_summary = []
|
||||||
for serialized_item in serialized_items:
|
for serialized_item in serialized_items:
|
||||||
item_index = serialized_item["index"]
|
item_index = serialized_item["index"]
|
||||||
item_title = serialized_item.get("title", f"Question {item_index}")
|
item_title = serialized_item.get("title", f"Item {item_index}")
|
||||||
item_type = serialized_item.get("type", "UNKNOWN")
|
item_type = serialized_item.get("type", "UNKNOWN")
|
||||||
required_text = " (Required)" if serialized_item.get("required") else ""
|
required_text = " (Required)" if serialized_item.get("required") else ""
|
||||||
questions_summary.append(
|
items_summary.append(
|
||||||
f" {item_index}. {item_title} [{item_type}]{required_text}"
|
f" {item_index}. {item_title} [{item_type}]{required_text}"
|
||||||
)
|
)
|
||||||
|
|
||||||
questions_text = (
|
items_summary_text = (
|
||||||
"\n".join(questions_summary) if questions_summary else " No questions found"
|
"\n".join(items_summary) if items_summary else " No items found"
|
||||||
)
|
)
|
||||||
items_text = json.dumps(serialized_items, indent=2) if serialized_items else "[]"
|
items_text = json.dumps(serialized_items, indent=2) if serialized_items else "[]"
|
||||||
|
|
||||||
@@ -218,8 +218,8 @@ async def get_form(service, user_google_email: str, form_id: str) -> str:
|
|||||||
- Form ID: {form_id}
|
- Form ID: {form_id}
|
||||||
- Edit URL: {edit_url}
|
- Edit URL: {edit_url}
|
||||||
- Responder URL: {responder_url}
|
- Responder URL: {responder_url}
|
||||||
- Questions ({len(items)} total):
|
- Items ({len(items)} total):
|
||||||
{questions_text}
|
{items_summary_text}
|
||||||
- Items (structured):
|
- Items (structured):
|
||||||
{items_text}"""
|
{items_text}"""
|
||||||
|
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ def test_serialize_form_item_choice_question_includes_ids_and_options():
|
|||||||
assert serialized["type"] == "RADIO"
|
assert serialized["type"] == "RADIO"
|
||||||
assert serialized["questionId"] == "q_123"
|
assert serialized["questionId"] == "q_123"
|
||||||
assert serialized["required"] is True
|
assert serialized["required"] is True
|
||||||
assert serialized["options"] == ["Red", "Blue"]
|
assert serialized["options"] == [{"value": "Red"}, {"value": "Blue"}]
|
||||||
|
|
||||||
|
|
||||||
def test_serialize_form_item_grid_includes_row_and_column_structure():
|
def test_serialize_form_item_grid_includes_row_and_column_structure():
|
||||||
@@ -284,7 +284,7 @@ def test_serialize_form_item_grid_includes_row_and_column_structure():
|
|||||||
|
|
||||||
assert serialized["index"] == 2
|
assert serialized["index"] == 2
|
||||||
assert serialized["type"] == "GRID"
|
assert serialized["type"] == "GRID"
|
||||||
assert serialized["grid"]["columns"] == ["Never", "Often"]
|
assert serialized["grid"]["columns"] == [{"value": "Never"}, {"value": "Often"}]
|
||||||
assert serialized["grid"]["rows"] == [
|
assert serialized["grid"]["rows"] == [
|
||||||
{"title": "Laundry", "questionId": "row_q1", "required": True},
|
{"title": "Laundry", "questionId": "row_q1", "required": True},
|
||||||
{"title": "Dishes", "questionId": "row_q2", "required": False},
|
{"title": "Dishes", "questionId": "row_q2", "required": False},
|
||||||
|
|||||||
Reference in New Issue
Block a user