server-tools/test_base_time_window/tests/test_base_time_window.py

222 lines
7.0 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2020 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.exceptions import ValidationError
from odoo.tests import SavepointCase
class TestTimeWindow(SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
cls.partner_1 = cls.env['res.partner'].create({'name': 'partner 1'})
cls.partner_2 = cls.env['res.partner'].create({'name': 'partner 2'})
cls.TimeWindow = cls.env["test.partner.time.window"]
cls.monday = cls.env.ref(
"base_time_window.time_weekday_monday"
)
cls.sunday = cls.env.ref(
"base_time_window.time_weekday_sunday"
)
def test_00(self):
"""
Data:
A partner without time window
Test Case:
Add a time window
Expected result:
A time window is created for the partner
"""
self.assertFalse(self.partner_1.time_window_ids)
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
self.assertTrue(self.partner_1.time_window_ids)
time_window = self.partner_1.time_window_ids
self.assertEqual(time_window.start, 10.0)
self.assertEqual(time_window.end, 12.0)
self.assertEqual(time_window.weekday_ids, self.monday)
def test_01(self):
"""
Data:
A partner without time window
Test Case:
1 Add a time window
2 unlink the partner
Expected result:
1 A time window is created for the partner
2 The time window is removed
"""
partner_id = self.partner_1.id
self.assertFalse(self.partner_1.time_window_ids)
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
self.assertTrue(self.partner_1.time_window_ids)
time_window = self.TimeWindow.search(
[("partner_id", "=", partner_id)]
)
self.assertTrue(time_window)
self.partner_1.unlink()
self.assertFalse(time_window.exists())
def test_02(self):
"""
Data:
A partner without time window
Test Case:
1 Add a time window
2 Add a second time window that overlaps the first one (same day)
Expected result:
1 A time window is created for the partner
2 ValidationError is raised
"""
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
with self.assertRaises(ValidationError):
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 11.0,
"end": 13.0,
"weekday_ids": [(4, self.monday.id), (4, self.sunday.id)],
}
)
def test_03(self):
"""
Data:
A partner without time window
Test Case:
1 Add a time window
2 Add a second time window that overlaps the first one (another day)
Expected result:
1 A time window is created for the partner
2 A second time window is created for the partner
"""
self.assertFalse(self.partner_1.time_window_ids)
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
self.assertTrue(self.partner_1.time_window_ids)
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 11.0,
"end": 13.0,
"weekday_ids": [(4, self.sunday.id)],
}
)
self.assertEquals(len(self.partner_1.time_window_ids), 2)
def test_04(self):
"""
Data:
Partner 1 without time window
Partner 2 without time window
Test Case:
1 Add a time window to partner 1
2 Add the same time window to partner 2
Expected result:
1 A time window is created for the partner 1
1 A time window is created for the partner 2
"""
self.assertFalse(self.partner_1.time_window_ids)
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
self.assertTrue(self.partner_1.time_window_ids)
self.assertFalse(self.partner_2.time_window_ids)
self.TimeWindow.create(
{
"partner_id": self.partner_2.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
self.assertTrue(self.partner_2.time_window_ids)
def test_05(self):
"""""
Data:
Partner 1 without time window
Test Case:
Add a time window to partner 1 with end > start
Expected result:
ValidationError is raised
"""
with self.assertRaises(ValidationError):
self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 14.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
def test_06(self):
"""""
Data:
Partner 1 with time window on monday
Partner 2 with time window on monday
Test Case:
Change time window from Partner 1 to Partner 2
Expected result:
ValidationError is raised
"""
self.assertFalse(self.partner_1.time_window_ids)
p1_timewindow = self.TimeWindow.create(
{
"partner_id": self.partner_1.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
self.assertTrue(self.partner_1.time_window_ids)
self.assertFalse(self.partner_2.time_window_ids)
self.TimeWindow.create(
{
"partner_id": self.partner_2.id,
"start": 10.0,
"end": 12.0,
"weekday_ids": [(4, self.monday.id)],
}
)
self.assertTrue(self.partner_2.time_window_ids)
with self.assertRaises(ValidationError):
p1_timewindow.partner_id = self.partner_2