"""Test if the full pipeline (extract, redact, re-insert links) affects insert_textbox."""
import sys
sys.path.insert(0, '.')
import importlib.util
import fitz

spec = importlib.util.spec_from_file_location('pdf_mod', 'translators/pdf_translator.py')
pdf_mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(pdf_mod)

doc = fitz.open('sample_files/test_corpus/test_pdf.pdf')
page = doc[0]

# Step 1: Extract blocks
raw_blocks = pdf_mod.PDFTranslator()._extract_text_blocks(page)
title = raw_blocks[0]
print(f"Title bbox: {title['bbox']}")

# Step 2: Simulate redaction
title_rect = fitz.Rect(title['bbox'])
page.add_redact_annot(title_rect, fill=(1, 1, 1))
page.apply_redactions(images=fitz.PDF_REDACT_IMAGE_NONE)
print("After redaction")

# Step 3: Simulate link reinsertion (we have TOC links)
links = list(page.get_links())
print(f"Got {len(links)} links")
for link in links:
    from_rect = link.get("from")
    if link.get("page") is not None:
        page.insert_link({
            "kind": fitz.LINK_GOTO,
            "from": from_rect,
            "page": link["page"],
            "to": fitz.Point(72, 72),
        })
    elif link.get("uri"):
        page.insert_link({
            "kind": fitz.LINK_URI,
            "from": from_rect,
            "uri": link["uri"],
        })
print("After link reinsertion")

# Step 4: NOW try insert_textbox
french = "Spécification technique : Office Translator v3.0"
rect = fitz.Rect(title['bbox'])
expanded_v = fitz.Rect(rect.x0, rect.y0, rect.x1, rect.y1 + rect.height * 3)

# Test on original bbox
rc1 = page.insert_textbox(
    rect, french,
    fontsize=22,
    fontfile='C:/Windows/Fonts/arial.ttf',
    color=(0.1, 0.2, 0.5),
    align=fitz.TEXT_ALIGN_LEFT,
    overlay=True,
)
print(f"After full pipeline, original rect: rc={rc1}")

# Test on expanded_v
rc2 = page.insert_textbox(
    expanded_v, french,
    fontsize=22,
    fontfile='C:/Windows/Fonts/arial.ttf',
    color=(0.1, 0.2, 0.5),
    align=fitz.TEXT_ALIGN_LEFT,
    overlay=True,
)
print(f"After full pipeline, expanded_v: rc={rc2}")

doc.close()
