# -*- coding: utf-8 -*- from odoo.tests.common import TransactionCase, tagged from odoo.exceptions import ValidationError from psycopg2 import IntegrityError from odoo.tools.misc import mute_logger @tagged('-at_install', 'post_install', 'fusion_clock') class TestNfcModels(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() cls.Employee = cls.env['hr.employee'] cls.alice = cls.Employee.create({'name': 'Alice NFC', 'x_fclk_enable_clock': True}) cls.bob = cls.Employee.create({'name': 'Bob NFC', 'x_fclk_enable_clock': True}) def test_card_uid_is_writable(self): self.alice.x_fclk_nfc_card_uid = '04:A2:B5:62:C1:80' self.assertEqual(self.alice.x_fclk_nfc_card_uid, '04:A2:B5:62:C1:80') def test_card_uid_is_unique_when_set(self): self.alice.x_fclk_nfc_card_uid = '04:A2:B5:62:C1:80' with self.assertRaises(IntegrityError), mute_logger('odoo.sql_db'): with self.env.cr.savepoint(): self.bob.x_fclk_nfc_card_uid = '04:A2:B5:62:C1:80' self.bob.flush_recordset(['x_fclk_nfc_card_uid']) def test_card_uid_can_be_null_for_multiple_employees(self): self.alice.x_fclk_nfc_card_uid = False self.bob.x_fclk_nfc_card_uid = False self.assertFalse(self.alice.x_fclk_nfc_card_uid) self.assertFalse(self.bob.x_fclk_nfc_card_uid)