# edited by glg
from types import SimpleNamespace

import pytest

from pypos.modules.penjualan.controllers.load_transaksi_controller import LoadTransaksiController

pytestmark = [pytest.mark.unit, pytest.mark.critical_flow]


def test_hapus_dipilih_tampilkan_pesan_khusus_saat_value_error():
    controller = LoadTransaksiController.__new__(LoadTransaksiController)
    warnings = []
    infos = []
    logs_warning = []
    logs_error = []

    class _Table:
        def currentRow(self):
            return -1

    controller._selected_context = None
    controller.transaksi_terpilih_id = 123
    controller.view = SimpleNamespace(table=_Table())
    controller.ask_confirm = lambda _title, _msg: True
    controller.show_warning = lambda title, message: warnings.append((title, message))
    controller.show_info = lambda title, message: infos.append((title, message))
    controller.log_warning = lambda message: logs_warning.append(str(message))
    controller.log_error = lambda message: logs_error.append(str(message))
    controller.load_list_transaksi = lambda *args, **kwargs: None
    controller.model = SimpleNamespace(
        delete_transaksi_by_id=lambda _transaksi_id: (_ for _ in ()).throw(
            ValueError("Hanya transaksi tersimpan (simpan_transaksi) yang boleh dihapus dari menu ini.")
        )
    )

    controller.hapus_dipilih()

    assert warnings
    assert warnings[0][0] == "Hapus Ditolak"
    assert "simpan_transaksi" in warnings[0][1]
    assert not infos
    assert not logs_error
    assert logs_warning
