diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/test_event_full/tests/common.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/test_event_full/tests/common.py')
| -rw-r--r-- | addons/test_event_full/tests/common.py | 280 |
1 files changed, 280 insertions, 0 deletions
diff --git a/addons/test_event_full/tests/common.py b/addons/test_event_full/tests/common.py new file mode 100644 index 00000000..c93396d8 --- /dev/null +++ b/addons/test_event_full/tests/common.py @@ -0,0 +1,280 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from datetime import datetime, timedelta, time + +from odoo.addons.base.tests.common import HttpCaseWithUserDemo, HttpCaseWithUserPortal +from odoo.addons.event_crm.tests.common import TestEventCrmCommon +from odoo.addons.sales_team.tests.common import TestSalesCommon +from odoo.addons.website.tests.test_website_visitor import MockVisitor +from odoo.addons.website_event.tests.common import EventDtPatcher + + +class TestEventFullCommon(TestEventCrmCommon, TestSalesCommon, EventDtPatcher, MockVisitor): + + @classmethod + def setUpClass(cls): + super(TestEventFullCommon, cls).setUpClass() + + # ------------------------------------------------------------ + # TICKET INFORMATIONS + # ------------------------------------------------------------ + + cls.event_product = cls.env['product.product'].create({ + 'name': 'Test Registration Product', + 'description_sale': 'Mighty Description', + 'list_price': 10, + 'event_ok': True, + 'standard_price': 30.0, + 'type': 'service', + }) + + cls.website = cls.env['website'].search([ + ('company_id', '=', cls.env.user.company_id.id) + ], limit=1) + + cls.event_0.write({ + # event if 8-18 in Europe/Brussels (DST) (first day: begins at 9, last day: ends at 15) + 'date_begin': datetime.combine(cls.reference_now, time(7, 0)) - timedelta(days=1), + 'date_end': datetime.combine(cls.reference_now, time(13, 0)) + timedelta(days=1), + # ticket informations + 'event_ticket_ids': [ + (5, 0), + (0, 0, { + 'name': 'First Ticket', + 'product_id': cls.event_product.id, + 'seats_max': 30, + }), (0, 0, { + 'name': 'Second Ticket', + 'product_id': cls.event_product.id, + }) + ], + }) + + # make a SO for a customer, selling some tickets + cls.customer_so = cls.env['sale.order'].with_user(cls.user_sales_salesman).create({ + 'partner_id': cls.event_customer.id, + }) + + # ------------------------------------------------------------ + # QUESTIONS + # ------------------------------------------------------------ + + cls.event_question_1 = cls.env['event.question'].create({ + 'title': 'Question1', + 'question_type': 'simple_choice', + 'event_id': cls.event_0.id, + 'once_per_order': False, + 'answer_ids': [ + (0, 0, {'name': 'Q1-Answer1'}), + (0, 0, {'name': 'Q1-Answer2'}) + ], + }) + cls.event_question_2 = cls.env['event.question'].create({ + 'title': 'Question2', + 'question_type': 'simple_choice', + 'event_id': cls.event_0.id, + 'once_per_order': True, + 'answer_ids': [ + (0, 0, {'name': 'Q2-Answer1'}), + (0, 0, {'name': 'Q2-Answer2'}) + ], + }) + cls.event_question_3 = cls.env['event.question'].create({ + 'title': 'Question3', + 'question_type': 'text_box', + 'event_id': cls.event_0.id, + 'once_per_order': True, + }) + + # ------------------------------------------------------------ + # DATA MARSHMALLING + # ------------------------------------------------------------ + + cls.website_customer_data = [{ + 'name': 'My Customer %02d' % x, + 'partner_id': cls.env.ref('base.public_partner').id, + 'email': 'email.%02d@test.example.com' % x, + 'phone': '04560000%02d' % x, + 'registration_answer_ids': [ + (0, 0, { + 'question_id': cls.event_question_1.id, + 'value_answer_id': cls.event_question_1.answer_ids[(x % 2)].id, + }), (0, 0, { + 'question_id': cls.event_question_2.id, + 'value_answer_id': cls.event_question_2.answer_ids[(x % 2)].id, + }), (0, 0, { + 'question_id': cls.event_question_3.id, + 'value_text_box': 'CustomerAnswer%s' % x, + }) + ], + } for x in range(0, 4)] + + def assertLeadConvertion(self, rule, registrations, partner=None, **expected): + super(TestEventFullCommon, self).assertLeadConvertion(rule, registrations, partner=partner, **expected) + lead = self.env['crm.lead'].sudo().search([ + ('registration_ids', 'in', registrations.ids), + ('event_lead_rule_id', '=', rule.id) + ]) + + for registration in registrations: + if not registration.registration_answer_ids: + continue + for answer in registration.registration_answer_ids: + self.assertIn(answer.question_id.title, lead.description) + if answer.question_type == 'simple_choice': + self.assertIn(answer.value_answer_id.name, lead.description) + else: + self.assertIn(answer.value_text_box, lead.description) # better: check multi line + + +class TestWEventCommon(HttpCaseWithUserDemo, HttpCaseWithUserPortal, EventDtPatcher, MockVisitor): + + def setUp(self): + super(TestWEventCommon, self).setUp() + + self.event_product = self.env['product.product'].create({ + 'name': 'Test Event Registration', + 'default_code': 'EVENT_REG', + 'description_sale': 'Mighty Description', + 'list_price': 10, + 'event_ok': True, + 'standard_price': 30.0, + 'type': 'service', + }) + + self.event_tag_category_1 = self.env['event.tag.category'].create({ + 'name': 'Type', + 'sequence': 2, + }) + self.event_tag_category_1_tag_1 = self.env['event.tag'].create({ + 'name': 'Online', + 'sequence': 10, + 'category_id': self.event_tag_category_1.id, + 'color': 8, + }) + self.env['event.event'].search( + [('name', 'like', '%Online Reveal%')] + ).write( + {'name': 'Do not click on me'} + ) + self.event = self.env['event.event'].create({ + 'name': 'Online Reveal TestEvent', + 'auto_confirm': True, + 'stage_id': self.env.ref('event.event_stage_booked').id, + 'address_id': False, + 'user_id': self.user_demo.id, + 'tag_ids': [(4, self.event_tag_category_1_tag_1.id)], + # event if 8-18 in Europe/Brussels (DST) (first day: begins at 7, last day: ends at 17) + 'date_tz': 'Europe/Brussels', + 'date_begin': datetime.combine(self.reference_now, time(5, 0)) - timedelta(days=1), + 'date_end': datetime.combine(self.reference_now, time(15, 0)) + timedelta(days=1), + # ticket informations + 'event_ticket_ids': [ + (0, 0, { + 'name': 'Standard', + 'product_id': self.event_product.id, + 'price': 0, + }), (0, 0, { + 'name': 'VIP', + 'product_id': self.event_product.id, + 'seats_max': 10, + }) + ], + # activate menus + 'is_published': True, + 'website_menu': True, + 'website_track': True, + 'website_track_proposal': True, + 'exhibitor_menu': True, + 'community_menu': True, + }) + + self.event_customer = self.env['res.partner'].create({ + 'name': 'Constantin Customer', + 'email': 'constantin@test.example.com', + 'country_id': self.env.ref('base.be').id, + 'phone': '0485112233', + 'mobile': False, + }) + self.event_speaker = self.env['res.partner'].create({ + 'name': 'Brandon Freeman', + 'email': 'brandon.freeman55@example.com', + 'phone': '(355)-687-3262', + }) + + # ------------------------------------------------------------ + # QUESTIONS + # ------------------------------------------------------------ + + self.event_question_1 = self.env['event.question'].create({ + 'title': 'Which field are you working in', + 'question_type': 'simple_choice', + 'event_id': self.event.id, + 'once_per_order': False, + 'answer_ids': [ + (0, 0, {'name': 'Consumers'}), + (0, 0, {'name': 'Sales'}), + (0, 0, {'name': 'Research'}), + ], + }) + self.event_question_2 = self.env['event.question'].create({ + 'title': 'How did you hear about us ?', + 'question_type': 'text_box', + 'event_id': self.event.id, + 'once_per_order': True, + }) + + # ------------------------------------------------------------ + # TRACKS + # ------------------------------------------------------------ + + self.track_0 = self.env['event.track'].create({ + 'name': 'What This Event Is All About', + 'event_id': self.event.id, + 'stage_id': self.env.ref('website_event_track.event_track_stage3').id, + 'date': self.reference_now + timedelta(hours=1), + 'duration': 2, + 'is_published': True, + 'wishlisted_by_default': True, + 'user_id': self.user_admin.id, + 'partner_id': self.event_speaker.id, + }) + self.track_1 = self.env['event.track'].create({ + 'name': 'Live Testimonial', + 'event_id': self.event.id, + 'stage_id': self.env.ref('website_event_track.event_track_stage3').id, + 'date': self.reference_now - timedelta(minutes=30), + 'duration': 0.75, + 'is_published': True, + 'user_id': self.user_admin.id, + 'partner_id': self.event_speaker.id, + }) + self.track_2 = self.env['event.track'].create({ + 'name': 'Our Last Day Together !', + 'event_id': self.event.id, + 'stage_id': self.env.ref('website_event_track.event_track_stage3').id, + 'date': self.reference_now + timedelta(days=1), + 'duration': 0.75, + 'is_published': True, + 'user_id': self.user_admin.id, + 'partner_id': self.event_speaker.id, + }) + + # ------------------------------------------------------------ + # MEETING ROOMS + # ---------------------------------------------------------- + + self.env['event.meeting.room'].create({ + 'name': 'Best wood for furniture', + 'summary': 'Let\'s talk about wood types for furniture', + 'target_audience': 'wood expert(s)', + 'is_pinned': True, + 'website_published': True, + 'event_id': self.event.id, + 'room_lang_id': self.env.ref('base.lang_en').id, + 'room_max_capacity': '12', + 'room_participant_count': 9, + }) + + self.event.flush() |
