import unittest

import pytest

from pypos.modules.printer.services.printer_settings_value_service import (
    PrinterSettingsValueService,
)

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


class PrinterSettingsValueServiceTests(unittest.TestCase):
    def test_point_helpers(self):
        self.assertEqual(PrinterSettingsValueService.to_non_negative_int("12"), 12)
        self.assertEqual(PrinterSettingsValueService.to_non_negative_int("-1"), 0)
        self.assertEqual(
            PrinterSettingsValueService.extract_point_from_diskon_log(
                "diskon_customer=0;point=35;cashback=0"
            ),
            35,
        )
        self.assertEqual(
            PrinterSettingsValueService.resolve_point_transaksi_value(
                {"point_transaksi": 0, "point_nilai": "20", "diskon_log": "point=5"}
            ),
            20,
        )

    def test_ppn_mode_helpers(self):
        self.assertEqual(PrinterSettingsValueService.normalize_ppn_mode("include"), "include")
        self.assertEqual(PrinterSettingsValueService.normalize_ppn_mode("x"), "exclude")
        self.assertEqual(
            PrinterSettingsValueService.extract_ppn_mode_from_diskon_log(
                "diskon_customer=0;ppn_mode=include"
            ),
            "include",
        )
        self.assertEqual(
            PrinterSettingsValueService.resolve_ppn_mode({"ppn_mode": "", "diskon_log": "ppn_mode=exclude"}),
            "exclude",
        )


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