"""OKX 持仓指标解析:未实现盈亏须支持负数."""
from __future__ import annotations

import unittest


class TestOkxPositionMetrics(unittest.TestCase):
    def test_parse_unrealized_pnl_negative(self):
        from crypto_monitor_okx.app import parse_ccxt_position_metrics

        pos = {
            "side": "long",
            "contracts": 10,
            "markPrice": 0.43,
            "unrealizedPnl": -1.25,
            "info": {"upl": "-1.25", "markPx": "0.43"},
        }
        out = parse_ccxt_position_metrics(pos, order_leverage=5)
        self.assertIsNotNone(out)
        self.assertAlmostEqual(out["unrealized_pnl"], -1.25)
        self.assertAlmostEqual(out["mark_price"], 0.43)

    def test_parse_unrealized_pnl_zero(self):
        from crypto_monitor_okx.app import parse_ccxt_position_metrics

        pos = {
            "side": "long",
            "contracts": 1,
            "unrealizedPnl": 0,
            "info": {"upl": "0"},
        }
        out = parse_ccxt_position_metrics(pos)
        self.assertIsNotNone(out)
        self.assertEqual(out["unrealized_pnl"], 0.0)


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