mirror of
https://github.com/bringout/oca-mrp.git
synced 2026-04-20 00:32:04 +02:00
235 lines
9 KiB
Python
235 lines
9 KiB
Python
# Copyright 2017-19 Tecnativa - David Vidal
|
|
# Copyright 2017 Tecnativa - Pedro M. Baeza
|
|
# Copyright 2021 Moka Tourisme (https://www.mokatourisme.fr).
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0).
|
|
|
|
from odoo import fields
|
|
from odoo.exceptions import ValidationError
|
|
|
|
from .common import CommonEventSessionCase
|
|
|
|
|
|
class TestEventSessionCreateWizard(CommonEventSessionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.event = cls.env["event.event"].create(
|
|
{"name": "Test Event", "use_sessions": True}
|
|
)
|
|
cls.timeslot_16_00 = cls.env.ref("event_session.timeslot_16_00")
|
|
cls.timeslot_20_00 = cls.env.ref("event_session.timeslot_20_00")
|
|
|
|
def test_timeslot_name_create(self):
|
|
Timeslot = self.env["event.session.timeslot"]
|
|
# Case 1: Simple case
|
|
timeslot_id, __ = Timeslot.name_create("23:00")
|
|
timeslot = Timeslot.browse(timeslot_id)
|
|
self.assertEqual(timeslot.time, 23.00)
|
|
# Case 2: float case
|
|
timeslot_id, __ = Timeslot.name_create("23:30")
|
|
timeslot = Timeslot.browse(timeslot_id)
|
|
self.assertEqual(timeslot.time, 23.50)
|
|
# Case 3: invalid
|
|
msg = "The timeslot has to be defined in HH:MM format"
|
|
with self.assertRaisesRegex(ValidationError, msg):
|
|
Timeslot.name_create("25:30")
|
|
# Case 4: invalid
|
|
msg = "The timeslot has to be defined in HH:MM format"
|
|
with self.assertRaisesRegex(ValidationError, msg):
|
|
Timeslot.name_create("22:70")
|
|
|
|
def test_wizard_default_values(self):
|
|
self.env["event.session"].create(
|
|
[
|
|
{
|
|
"date_begin": "2017-05-26 20:00:00",
|
|
"date_end": "2017-05-26 21:00:00",
|
|
"event_id": self.event.id,
|
|
},
|
|
{
|
|
"date_begin": "2017-05-27 20:00:00",
|
|
"date_end": "2017-05-27 22:00:00",
|
|
"event_id": self.event.id,
|
|
},
|
|
]
|
|
)
|
|
wizard = self.env["wizard.event.session"].new(
|
|
{
|
|
"event_id": self.event.id,
|
|
}
|
|
)
|
|
self.assertEqual(wizard.start, fields.Date.to_date("2017-05-28"))
|
|
self.assertEqual(wizard.duration, 2.0)
|
|
|
|
def test_check_duration(self):
|
|
with self.assertRaisesRegex(ValidationError, "Duration is required"):
|
|
self._wizard_generate_sessions(
|
|
{
|
|
"event_id": self.event.id,
|
|
"rrule_type": "weekly",
|
|
"mon": True,
|
|
"timeslot_ids": [(6, 0, self.timeslot_16_00.ids)],
|
|
"duration": 0.0,
|
|
"start": "2022-01-01",
|
|
"until": "2022-01-31",
|
|
}
|
|
)
|
|
|
|
def test_check_interval(self):
|
|
with self.assertRaisesRegex(ValidationError, "The interval cannot be negative"):
|
|
self._wizard_generate_sessions(
|
|
{
|
|
"event_id": self.event.id,
|
|
"rrule_type": "weekly",
|
|
"mon": True,
|
|
"timeslot_ids": [(6, 0, self.timeslot_16_00.ids)],
|
|
"duration": 1.0,
|
|
"interval": -1,
|
|
"start": "2022-01-01",
|
|
"until": "2022-01-31",
|
|
}
|
|
)
|
|
|
|
def test_session_create_wizard_weekly_01(self):
|
|
"""Mondays at 16:00 and 20:00, for whole Jan 2022
|
|
|
|
╔════════════════════╗
|
|
║ January ░░░░░ 2022 ║
|
|
╟──┬──┬──┬──┬──┬──┬──╢
|
|
║░░│░░│░░│░░│░░│░░│ ║
|
|
╟──╔══╗──┼──┼──┼──┼──╢
|
|
║ ║03║ │ │ │ │ ║
|
|
╟──╠══╣──┼──┼──┼──┼──╢
|
|
║ ║10║ │ │ │ │ ║
|
|
╟──╠══╣──┼──┼──┼──┼──╢
|
|
║ ║17║ │ │ │ │ ║
|
|
╟──╠══╣──┼──┼──┼──┼──╢
|
|
║ ║24║ │ │ │ │ ║
|
|
╟──╠══╣──┼──┼──┼──┼──╢
|
|
║ ║31║░░│░░│░░│░░│░░║
|
|
╚══╚══╝══╧══╧══╧══╧══╝
|
|
"""
|
|
self.assertSessionDates(
|
|
self._wizard_generate_sessions(
|
|
{
|
|
"event_id": self.event.id,
|
|
"rrule_type": "weekly",
|
|
"mon": True,
|
|
"tue": False,
|
|
"wed": False,
|
|
"thu": False,
|
|
"fri": False,
|
|
"sun": False,
|
|
"sat": False,
|
|
"timeslot_ids": [
|
|
(6, 0, (self.timeslot_16_00 | self.timeslot_20_00).ids)
|
|
],
|
|
"duration": 1.0,
|
|
"start": "2022-01-01",
|
|
"until": "2022-01-31",
|
|
}
|
|
),
|
|
[
|
|
"2022-01-03 16:00:00",
|
|
"2022-01-03 20:00:00",
|
|
"2022-01-10 16:00:00",
|
|
"2022-01-10 20:00:00",
|
|
"2022-01-17 16:00:00",
|
|
"2022-01-17 20:00:00",
|
|
"2022-01-24 16:00:00",
|
|
"2022-01-24 20:00:00",
|
|
"2022-01-31 16:00:00",
|
|
"2022-01-31 20:00:00",
|
|
],
|
|
)
|
|
|
|
def test_session_create_wizard_weekly_02(self):
|
|
"""Mondays, Wednesdays and Fridays at 20:00, every 2 weeks for a Feb 2022
|
|
|
|
╔════════════════════╗
|
|
║ February ░░░░ 2022 ║
|
|
╟──┬──┬──╔══╗──╔══╗──╢
|
|
║░░│░░│ ║02║ ║04║ ║
|
|
╟──┼──┼──╚══╝──╚══╝──╢
|
|
║ │ │ │ │ │ │ ║
|
|
╟──╔══╗──╔══╗──╔══╗──╢
|
|
║ ║14║ ║16║ ║18║ ║
|
|
╟──╚══╝──╚══╝──╚══╝──╢
|
|
║ │ │ │ │ │ │ ║
|
|
╟──╔══╗──┼──┼──┼──┼──╢
|
|
║ ║28║░░│░░│░░│░░│░░║
|
|
╚══╚══╝══╧══╧══╧══╧══╝
|
|
"""
|
|
self.assertSessionDates(
|
|
self._wizard_generate_sessions(
|
|
{
|
|
"event_id": self.event.id,
|
|
"rrule_type": "weekly",
|
|
"interval": 2,
|
|
"mon": True,
|
|
"tue": False,
|
|
"wed": True,
|
|
"thu": False,
|
|
"fri": True,
|
|
"sun": False,
|
|
"sat": False,
|
|
"timeslot_ids": [(6, 0, self.timeslot_20_00.ids)],
|
|
"duration": 2.0,
|
|
"start": "2022-02-01",
|
|
"until": "2022-02-28",
|
|
}
|
|
),
|
|
[
|
|
"2022-02-02 20:00:00",
|
|
"2022-02-04 20:00:00",
|
|
"2022-02-14 20:00:00",
|
|
"2022-02-16 20:00:00",
|
|
"2022-02-18 20:00:00",
|
|
"2022-02-28 20:00:00",
|
|
],
|
|
)
|
|
|
|
def test_session_create_wizard_monthly_by_day(self):
|
|
"""Last sunday of each month at 16:00, from March 2022 to May 2022"""
|
|
self.assertSessionDates(
|
|
self._wizard_generate_sessions(
|
|
{
|
|
"event_id": self.event.id,
|
|
"rrule_type": "monthly",
|
|
"month_by": "day",
|
|
"byday": "-1",
|
|
"weekday": "SUN",
|
|
"timeslot_ids": [(6, 0, self.timeslot_16_00.ids)],
|
|
"duration": 1.0,
|
|
"start": "2022-03-01",
|
|
"until": "2022-05-31",
|
|
}
|
|
),
|
|
[
|
|
"2022-03-27 16:00:00",
|
|
"2022-04-24 16:00:00",
|
|
"2022-05-29 16:00:00",
|
|
],
|
|
)
|
|
|
|
def test_session_create_wizard_monthly_by_date(self):
|
|
"""The 15th of every month, from March 2022 to May 2022"""
|
|
self.assertSessionDates(
|
|
self._wizard_generate_sessions(
|
|
{
|
|
"event_id": self.event.id,
|
|
"rrule_type": "monthly",
|
|
"month_by": "date",
|
|
"day": "15",
|
|
"timeslot_ids": [(6, 0, self.timeslot_16_00.ids)],
|
|
"duration": 1.0,
|
|
"start": "2022-03-01",
|
|
"until": "2022-05-31",
|
|
}
|
|
),
|
|
[
|
|
"2022-03-15 16:00:00",
|
|
"2022-04-15 16:00:00",
|
|
"2022-05-15 16:00:00",
|
|
],
|
|
)
|