from odoo.tests.common import TransactionCase, tagged @tagged('post_install', '-at_install') class TestEventTicket(TransactionCase): def setUp(self): super().setUp() self.event = self.env['event.event'].create({ 'name': 'Test Event', 'date_begin': '2030-01-01 10:00:00', 'date_end': '2030-01-01 18:00:00', }) def test_ticket_ref_and_qr_generated_on_create(self): registration = self.env['event.registration'].create({ 'event_id': self.event.id, 'name': 'Attendee One', }) self.assertTrue(registration.ticket_ref) self.assertTrue(registration.ticket_ref.startswith(f'TIX-{self.event.id}-')) self.assertTrue(registration.ticket_qr, "QR image should be generated") def test_ticket_ref_unique_per_registration(self): reg1 = self.env['event.registration'].create({'event_id': self.event.id, 'name': 'A'}) reg2 = self.env['event.registration'].create({'event_id': self.event.id, 'name': 'B'}) self.assertNotEqual(reg1.ticket_ref, reg2.ticket_ref) def test_scanned_token_round_trips(self): registration = self.env['event.registration'].create({ 'event_id': self.event.id, 'name': 'Attendee Two', }) qr_value = registration._get_ticket_qr_value() status, found = self.env['event.registration']._verify_scanned_token(qr_value) self.assertEqual(status, 'ok') self.assertEqual(found, registration)