# edited by glg
from pypos.core.views.printer_settings_panel import PrinterSettingsPanel


def _build_panel_instance_without_qt_init():
    # Hanya untuk menguji helper logic teks (tanpa inisialisasi QWidget).
    return PrinterSettingsPanel.__new__(PrinterSettingsPanel)


def test_translate_diagnostic_message_to_kasir_language():
    panel = _build_panel_instance_without_qt_init()
    msg = panel._translate_diagnostic_message("Nama printer tidak ditemukan di OS.")
    assert "tidak cocok" in msg.lower()

    msg2 = panel._translate_diagnostic_message("Format address LAN tidak valid")
    assert "ip:port" in msg2.lower()


def test_build_kasir_diagnostic_text_contains_main_sections():
    panel = _build_panel_instance_without_qt_init()
    report = {
        "summary": {"PASS": 2, "WARN": 1, "FAIL": 1},
        "checks": [
            {"status": "FAIL", "category": "configuration", "message": "Tidak ada printer terdaftar."},
            {"status": "WARN", "category": "runtime", "message": "Nama printer tidak ditemukan di OS."},
            {"status": "PASS", "category": "runtime", "message": "Default printer tunggal valid."},
        ],
        "printers": [
            {
                "name": "POS-58",
                "checks": [
                    {"status": "PASS", "message": "Nama printer ditemukan di OS."},
                    {"status": "INFO", "message": "Mode spooler OS aktif."},
                ],
            }
        ],
        "recommendations": [
            "Perbaiki format printer LAN menjadi IP:PORT (contoh 192.168.1.10:9100).",
        ],
    }
    text = panel._build_kasir_diagnostic_text(report, "C:/logs/diag.json")
    assert "Status umum:" in text
    assert "Saran tindakan cepat:" in text
    assert "Masalah penting yang harus diperbaiki:" in text
    assert "Hal yang perlu dicek:" in text
    assert "Hal yang sudah oke:" in text
    assert "LOG HASIL DIAGNOSA PRINTER:" in text
    assert "IP:PORT" in text
