import unittest from core.transaction import Transaction class TestTransaction(unittest.TestCase): def test_transaction_initialization_with_timestamp(self): timestamp = "2026-06-02T15:00:00.000000" t = Transaction("tx_1", "user_1", "item_1", 2.50, timestamp) self.assertEqual(t.id, "tx_1") self.assertEqual(t.user_id, "user_1") self.assertEqual(t.item_id, "item_1") self.assertEqual(t.amount, 2.50) self.assertEqual(t.timestamp, timestamp) def test_transaction_auto_timestamp(self): t = Transaction("tx_2", "user_2", "item_2", 1.50) self.assertIsNotNone(t.timestamp) # Check if timestamp format is valid ISO string (at least parses or contains dates) self.assertIn("-", t.timestamp) self.assertIn("T", t.timestamp) def test_to_json(self): timestamp = "2026-06-02T15:00:00" t = Transaction("tx_1", "user_1", "item_1", 2.50, timestamp) expected = { "id": "tx_1", "user_id": "user_1", "item_id": "item_1", "amount": 2.50, "timestamp": timestamp, } self.assertEqual(t.to_json(), expected) def test_from_json(self): data = { "id": "tx_1", "user_id": "user_1", "item_id": "item_1", "amount": 2.50, "timestamp": "2026-06-02T15:00:00", } t = Transaction.from_json(data) self.assertEqual(t.id, "tx_1") self.assertEqual(t.user_id, "user_1") self.assertEqual(t.item_id, "item_1") self.assertEqual(t.amount, 2.50) self.assertEqual(t.timestamp, "2026-06-02T15:00:00") if __name__ == "__main__": unittest.main()