import unittest

import pytest

from pypos.modules.printer.services.printer_settings_ui_state_service import (
    PrinterSettingsUiStateService,
)

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


class PrinterSettingsUiStateServiceTests(unittest.TestCase):
    def test_normalize_printer_entry(self):
        out = PrinterSettingsUiStateService.normalize_printer_entry(
            name="  POS-58  ",
            paper_size=" 58mm ",
            is_default=1,
        )
        self.assertEqual(out["name"], "POS-58")
        self.assertEqual(out["paper_size"], "58mm")
        self.assertTrue(out["default"])

    def test_index_validation(self):
        self.assertTrue(PrinterSettingsUiStateService.is_valid_printer_index(0, 1))
        self.assertFalse(PrinterSettingsUiStateService.is_valid_printer_index(-1, 2))
        self.assertFalse(PrinterSettingsUiStateService.is_valid_printer_index(2, 2))

    def test_build_settlement_option_log(self):
        msg = PrinterSettingsUiStateService.build_settlement_option_log("show_qr", True)
        self.assertIn("show_qr=1", msg)


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