Files
teng-lin--notebooklm-py/tests/unit/test_interactive_mind_map_payload.py
wehub-resource-sync 09e9f3545f
Test / Code Quality (push) Has been cancelled
Test / Test (macos-latest, Python 3.10) (push) Has been cancelled
Test / Test (macos-latest, Python 3.11) (push) Has been cancelled
Test / Test (macos-latest, Python 3.12) (push) Has been cancelled
Test / Test (macos-latest, Python 3.13) (push) Has been cancelled
Test / Test (macos-latest, Python 3.14) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.10) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.11) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.12) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.13) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.14) (push) Has been cancelled
Test / Test (windows-latest, Python 3.10) (push) Has been cancelled
Test / Test (windows-latest, Python 3.11) (push) Has been cancelled
Test / Test (windows-latest, Python 3.12) (push) Has been cancelled
Test / Test (windows-latest, Python 3.13) (push) Has been cancelled
Test / Test (windows-latest, Python 3.14) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
dependency-audit / pip-audit (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:30:13 +08:00

63 lines
2.4 KiB
Python

"""Snapshot test for the interactive-mind-map CREATE_ARTIFACT payload builder.
The expected shape is verified live against the captured GUI request (#1256):
``[client_options, nb, [None,None,4,<triple src ids>,None,None,None,None,None,[None,[4]]]]``.
"""
from __future__ import annotations
from notebooklm._artifact.payloads import build_interactive_mind_map_artifact_params
_ARTIFACT_CLIENT_OPTIONS = [
2,
None,
None,
[1, None, None, None, None, None, None, None, None, None, [1]],
[[1, 4, 8, 2, 3, 6]],
]
def test_single_source_exact_shape():
params = build_interactive_mind_map_artifact_params("nb1", ["s1"])
assert params == [
_ARTIFACT_CLIENT_OPTIONS,
"nb1",
[None, None, 4, [[["s1"]]], None, None, None, None, None, [None, [4]]],
]
def test_distinct_from_quiz_and_flashcards_variants():
spec = build_interactive_mind_map_artifact_params("nb1", ["s1"])[2]
# type-4 family, but variant 4 (not 2=quiz / 1=flashcards) and no config tail.
assert spec[2] == 4
assert spec[9] == [None, [4]]
def test_instructions_injected_at_prompt_slot():
# A custom prompt goes to [9][1][2] — the same slot quiz/flashcards use and
# the slot ArtifactRow.generation_prompt reads back (server-verified to steer
# the generated tree for variant 4).
spec = build_interactive_mind_map_artifact_params(
"nb1", ["s1"], instructions="focus only on the astronauts"
)[2]
assert spec[9] == [None, [4, None, "focus only on the astronauts"]]
assert spec[9][1][0] == 4 # variant still at [9][1][0]
def test_none_instructions_keeps_bare_variant_shape():
# Default / explicit None must stay byte-identical to the original request so
# the no-prompt path (and its recorded cassettes / idempotency key) is unchanged.
assert build_interactive_mind_map_artifact_params(
"nb1", ["s1"], instructions=None
) == build_interactive_mind_map_artifact_params("nb1", ["s1"])
def test_empty_or_whitespace_instructions_keeps_bare_variant_shape():
# Empty / whitespace-only instructions are treated as no prompt: same bare
# [None, [4]] shape as None, so a blank prompt is never sent to the server.
baseline = build_interactive_mind_map_artifact_params("nb1", ["s1"])
for blank in ("", " ", "\n\t "):
assert build_interactive_mind_map_artifact_params("nb1", ["s1"], instructions=blank) == (
baseline
)