import unittest

import pytest

from pypos.modules.penjualan.services.transaksi_view_summary_service import (
    TransaksiViewSummaryService,
)

# edited by glg
pytestmark = [pytest.mark.unit]


class TransaksiViewSummaryServiceTests(unittest.TestCase):
    def test_formatters(self):
        self.assertEqual(TransaksiViewSummaryService.format_rupiah(12500), "12.500,00")
        self.assertEqual(TransaksiViewSummaryService.format_member_diskon_persen("2.5"), "2.50 %")
        self.assertEqual(TransaksiViewSummaryService.build_free_items_text({}), "-")
        self.assertEqual(
            TransaksiViewSummaryService.build_free_items_text({"Produk A": 2, "Produk B": 1}),
            "Produk A (2 pcs)\nProduk B (1 pcs)",
        )

    def test_build_summary_label_payload(self):
        payload = TransaksiViewSummaryService.build_summary_label_payload(
            total_produk=20000,
            diskon_produk=1500,
            free_items={"Produk A": 1},
            total_bayar=18500,
            diskon_customer=500,
            cashback=200,
            point=10,
            diskon_member_persen=2.5,
            additional_diskon=1000,
            grand_total=19000,
        )
        self.assertEqual(payload["info_total_produk"], "20.000,00")
        self.assertEqual(payload["info_diskon"], "1.500,00")
        self.assertEqual(payload["info_diskon_member_persen"], "2.50 %")
        self.assertEqual(payload["info_free_item"], "Produk A (1 pcs)")
        self.assertEqual(payload["info_grand_total"], "19.000,00")
        self.assertEqual(payload["total_label"], "18.500,00")


if __name__ == "__main__":
    unittest.main()
