mirror of
https://github.com/bringout/oca-mrp.git
synced 2026-04-21 20:52:01 +02:00
122 lines
5.2 KiB
Python
122 lines
5.2 KiB
Python
# Copyright 2014 Tecnativa S.L. - Pedro M. Baeza
|
|
# Copyright 2015 Tecnativa S.L. - Javier Iniesta
|
|
# Copyright 2016 Tecnativa S.L. - Antonio Espinosa
|
|
# Copyright 2016 Tecnativa S.L. - Vicent Cubells
|
|
# Copyright 2017 Tecnativa - David Vidal
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
from psycopg2 import IntegrityError
|
|
|
|
from odoo import fields
|
|
from odoo.tests import Form, common
|
|
from odoo.tools import mute_logger
|
|
|
|
|
|
class TestEventRegistration(common.TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestEventRegistration, cls).setUpClass()
|
|
cls.event_0 = cls.env["event.event"].create(
|
|
{
|
|
"name": "Test event",
|
|
"date_begin": fields.Datetime.now(),
|
|
"date_end": fields.Datetime.now(),
|
|
"seats_limited": True,
|
|
"seats_max": "5",
|
|
}
|
|
)
|
|
cls.event_0.create_partner = True
|
|
registration_model = cls.env["event.registration"].with_context(
|
|
registration_force_draft=True
|
|
)
|
|
partner_model = cls.env["res.partner"]
|
|
cls.partner_01 = partner_model.create(
|
|
{
|
|
"name": "Test Partner 01",
|
|
"email": "email01@test.com",
|
|
"phone": "254728911",
|
|
}
|
|
)
|
|
cls.registration_01 = registration_model.create(
|
|
{"email": "email01@test.com", "event_id": cls.event_0.id}
|
|
)
|
|
cls.registration_02 = registration_model.create(
|
|
{
|
|
"email": "email02@test.com",
|
|
"event_id": cls.event_0.id,
|
|
"name": "Test Registration 02",
|
|
"phone": "254728911",
|
|
}
|
|
)
|
|
|
|
def test_create(self):
|
|
self.assertEqual(self.partner_01.name, self.registration_01.name)
|
|
self.assertEqual(self.partner_01.email, self.registration_01.email)
|
|
self.assertEqual(self.partner_01.phone, self.registration_01.phone)
|
|
partner_02 = self.registration_02.attendee_partner_id
|
|
self.assertEqual(partner_02.name, self.registration_02.name)
|
|
self.assertEqual(partner_02.email, self.registration_02.email)
|
|
self.assertEqual(partner_02.phone, self.registration_02.phone)
|
|
|
|
def test_count_registrations(self):
|
|
event_1 = self.event_0.copy()
|
|
self.assertEqual(self.partner_01.registration_count, 0)
|
|
self.registration_01.state = "open"
|
|
self.partner_01.invalidate_recordset()
|
|
self.assertEqual(self.partner_01.registration_count, 1)
|
|
self.registration_02.state = "done"
|
|
self.registration_02.attendee_partner_id = self.partner_01
|
|
self.registration_02.event_id = event_1
|
|
self.partner_01.invalidate_recordset()
|
|
self.assertEqual(self.partner_01.registration_count, 2)
|
|
|
|
def test_button_register(self):
|
|
event_1 = self.event_0.copy()
|
|
wizard = self.env["res.partner.register.event"].create({"event": event_1.id})
|
|
active_ids = [self.partner_01.id, self.registration_02.attendee_partner_id.id]
|
|
wizard.with_context(active_ids=active_ids).button_register()
|
|
|
|
def test_data_update(self):
|
|
event_2 = self.event_0.copy()
|
|
self.yesterday = datetime.now() - timedelta(days=1)
|
|
self.tomorrow = datetime.now() + timedelta(days=1)
|
|
self.last_month = datetime.now() - timedelta(days=30)
|
|
# Set an old event
|
|
event_2.write({"date_begin": self.last_month})
|
|
event_2.write({"date_end": self.yesterday})
|
|
self.registration_02.event_id = event_2
|
|
self.registration_02.attendee_partner_id = self.partner_01
|
|
# Update partner for an old event
|
|
self.partner_01.write({"email": "new@test.com"})
|
|
self.assertNotEqual(event_2.registration_ids.email, "new@test.com")
|
|
# Update partner for a current event
|
|
event_2.write({"date_end": self.tomorrow})
|
|
self.partner_01.write({"email": "new@test.com"})
|
|
self.assertEqual(event_2.registration_ids.email, "new@test.com")
|
|
|
|
@mute_logger("odoo.sql_db")
|
|
def test_delete_registered_partner(self):
|
|
# We can't delete a partner with registrations
|
|
with self.assertRaises(IntegrityError), self.cr.savepoint():
|
|
self.cr._default_log_exceptions = False
|
|
self.partner_01.unlink()
|
|
# Create a brand new partner and delete it
|
|
partner3 = self.env["res.partner"].create({"name": "unregistered partner"})
|
|
partner3.unlink()
|
|
self.assertFalse(partner3.exists())
|
|
|
|
def test_attendee_partner_is_not_contact(self):
|
|
# Create a partner that belongs to a company but is saved as "other address"
|
|
self.partner_01.type = "other"
|
|
self.partner_01.parent_id = self.env["res.partner"].create(
|
|
{"name": "Company", "is_company": True}
|
|
)
|
|
# The partner gets registered
|
|
with Form(self.registration_01) as reg_f:
|
|
reg_f.attendee_partner_id = self.partner_01
|
|
# Partner data inherited in registration
|
|
self.assertEqual(self.registration_01.name, self.partner_01.name)
|
|
self.assertEqual(self.registration_01.email, self.partner_01.email)
|
|
self.assertEqual(self.registration_01.phone, self.partner_01.phone)
|