1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- # -*- 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)
|