95 lines
4.1 KiB
Python
95 lines
4.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
from odoo import Command
|
|
from odoo.addons.event_booth_sale.tests.common import TestEventBoothSaleCommon
|
|
from odoo.fields import Datetime as FieldsDatetime
|
|
from odoo.tests.common import users, Form
|
|
|
|
|
|
class TestEventData(TestEventBoothSaleCommon):
|
|
|
|
@users('user_eventmanager')
|
|
def test_event_configuration_booths_from_type(self):
|
|
""" Test data computation (related to booths) of event coming from its event.type template. """
|
|
# setup test records
|
|
event_type_nobooth = self.env['event.type'].create({
|
|
'name': 'No booth',
|
|
})
|
|
event_type_wbooths = self.env['event.type'].create({
|
|
'name': 'Using booths',
|
|
'event_type_booth_ids': [
|
|
Command.clear(),
|
|
Command.create({
|
|
'name': 'Standard Booth',
|
|
'booth_category_id': self.event_booth_category_1.id,
|
|
}),
|
|
Command.create({
|
|
'name': 'Premium Booth',
|
|
'booth_category_id': self.event_booth_category_2.id,
|
|
})
|
|
]
|
|
})
|
|
|
|
# no booth by default as no booths on type
|
|
event = self.env['event.event'].create({
|
|
'name': 'Event',
|
|
'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)),
|
|
'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)),
|
|
'event_type_id': event_type_nobooth.id
|
|
})
|
|
self.assertEqual(event.event_booth_ids, self.env['event.booth'])
|
|
|
|
# manually create booths: ok
|
|
event.write({
|
|
'event_booth_ids': [
|
|
Command.create({
|
|
'name': 'Custom Standard Booth 1',
|
|
'booth_category_id': self.event_booth_category_1.id,
|
|
}),
|
|
Command.create({
|
|
'name': 'Custom Standard Booth 2',
|
|
'booth_category_id': self.event_booth_category_1.id,
|
|
})
|
|
]
|
|
})
|
|
self.assertEqual(event.event_booth_count, 2)
|
|
self.assertEqual(event.event_booth_count_available, 2)
|
|
self.assertEqual(event.event_booth_ids.product_id, self.event_booth_product)
|
|
|
|
# updating partner is independent from availability
|
|
event.event_booth_ids[1].write({'partner_id': self.event_customer.id})
|
|
self.assertEqual(event.event_booth_count, 2)
|
|
self.assertEqual(event.event_booth_count_available, 2)
|
|
self.assertEqual(event.event_booth_ids[1].message_partner_ids, self.event_customer)
|
|
|
|
# one booth is sold
|
|
event.event_booth_ids[1].write({'state': 'unavailable'})
|
|
self.assertEqual(event.event_booth_count, 2)
|
|
self.assertEqual(event.event_booth_count_available, 1)
|
|
|
|
# partner is reset: booth still unavailable but follower removed
|
|
event.event_booth_ids[1].write({'partner_id': False})
|
|
self.assertEqual(event.event_booth_count, 2)
|
|
self.assertEqual(event.event_booth_count_available, 1)
|
|
self.assertEqual(event.event_booth_ids[1].message_partner_ids, self.env['res.partner'])
|
|
|
|
# add group or the test will fail
|
|
self.user_eventmanager.write({'groups_id': [
|
|
(4, self.env.ref('sales_team.group_sale_salesman').id),
|
|
]})
|
|
|
|
# change event type to one using booths: include event type booths and keep reserved booths
|
|
with Form(event) as event_form:
|
|
event_form.event_type_id = event_type_wbooths
|
|
self.assertEqual(event.event_booth_count, 3)
|
|
self.assertEqual(
|
|
set(r['name'] for r in event.event_booth_ids),
|
|
set(('Custom Standard Booth 2', 'Standard Booth', 'Premium Booth')),
|
|
'Should keep booths with reservation, remove unused ones and add type ones'
|
|
)
|
|
self.assertEqual(event.event_booth_count_available, 2)
|
|
self.assertEqual(event.event_booth_category_ids, self.event_booth_category_1 + self.event_booth_category_2)
|