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 | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/test_event_full')
| -rw-r--r-- | addons/test_event_full/__init__.py | 2 | ||||
| -rw-r--r-- | addons/test_event_full/__manifest__.py | 34 | ||||
| -rw-r--r-- | addons/test_event_full/static/src/js/tours/wevent_register_tour.js | 165 | ||||
| -rw-r--r-- | addons/test_event_full/tests/__init__.py | 6 | ||||
| -rw-r--r-- | addons/test_event_full/tests/common.py | 280 | ||||
| -rw-r--r-- | addons/test_event_full/tests/test_event_crm.py | 149 | ||||
| -rw-r--r-- | addons/test_event_full/tests/test_wevent_register.py | 44 | ||||
| -rw-r--r-- | addons/test_event_full/views/assets.xml | 8 |
8 files changed, 688 insertions, 0 deletions
diff --git a/addons/test_event_full/__init__.py b/addons/test_event_full/__init__.py new file mode 100644 index 00000000..67dee8c6 --- /dev/null +++ b/addons/test_event_full/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. diff --git a/addons/test_event_full/__manifest__.py b/addons/test_event_full/__manifest__.py new file mode 100644 index 00000000..71a7cd05 --- /dev/null +++ b/addons/test_event_full/__manifest__.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'Test Full Event Flow', + 'version': '1.0', + 'category': 'Hidden/Tests', + 'description': """ +This module will test the main event flows of Odoo, both frontend and backend. +It installs sale capabilities, front-end flow, eCommerce, questions and +automatic lead generation, full Online support, ... +""", + 'depends': [ + 'event', + 'event_crm', + 'event_sale', + 'website_event_crm_questions', + 'website_event_questions', + 'website_event_questions', + 'website_event_meet', + 'website_event_sale', + 'website_event_track', + 'website_event_track_exhibitor', + 'website_event_track_live', + 'website_event_track_quiz', + ], + 'data': [ + 'views/assets.xml', + ], + 'demo': [ + ], + 'installable': True, + 'license': 'LGPL-3', +} diff --git a/addons/test_event_full/static/src/js/tours/wevent_register_tour.js b/addons/test_event_full/static/src/js/tours/wevent_register_tour.js new file mode 100644 index 00000000..782b3fea --- /dev/null +++ b/addons/test_event_full/static/src/js/tours/wevent_register_tour.js @@ -0,0 +1,165 @@ +odoo.define('test_event_full.tour.register', function (require) { +"use strict"; + +var tour = require('web_tour.tour'); + +/** + * TALKS STEPS + */ + +var discoverTalkSteps = function (talkName, fromList, reminderOn, toggleReminder) { + var steps; + if (fromList) { + steps = [{ + content: 'Go on "' + talkName + '" talk in List', + trigger: 'a:contains("' + talkName + '")', + }]; + } + else { + steps = [{ + content: 'Click on Live Track', + trigger: 'article span:contains("' + talkName + '")', + run: 'click', + }]; + } + if (reminderOn) { + steps = steps.concat([{ + content: "Check Favorite is on", + trigger: 'div.o_wetrack_js_reminder i.fa-bell', + extra_trigger: 'span.o_wetrack_js_reminder_text:contains("Favorite On")', + run: function () {}, // it's a check + }]); + } + else { + steps = steps.concat([{ + content: "Check Favorite is Off", + trigger: 'span.o_wetrack_js_reminder_text:contains("Set Favorite")', + run: function () {}, // it's a check + }]); + if (toggleReminder) { + steps = steps.concat([{ + content: "Set Favorite", + trigger: 'span.o_wetrack_js_reminder_text', + run: 'click', + }, { + content: "Check Favorite is On", + trigger: 'div.o_wetrack_js_reminder i.fa-bell', + extra_trigger: 'span.o_wetrack_js_reminder_text:contains("Favorite On")', + run: function () {}, // it's a check + }]); + } + } + return steps; +}; + + +/** + * ROOMS STEPS + */ + +var discoverRoomSteps = function (roomName) { + var steps = [{ + content: 'Go on "' + roomName + '" room in List', + trigger: 'a.o_wevent_meeting_room_card h4:contains("' + roomName + '")', + run: function() { + // can't click on it, it will try to launch Jitsi and fail on chrome headless + }, + }]; + return steps; +}; + + +/** + * REGISTER STEPS + */ + +var registerSteps = [{ + content: 'Go on Register', + trigger: 'a.btn-primary:contains("Register")', +}, { + content: "Select 2 units of 'Standard' ticket type", + trigger: '#o_wevent_tickets_collapse .row:has(.o_wevent_registration_multi_select:contains("Free")) select', + run: 'text 2', +}, { + content: "Click on 'Register' button", + trigger: '#o_wevent_tickets .btn-primary:contains("Register"):not(:disabled)', + run: 'click', +}, { + content: "Fill attendees details", + trigger: 'form[id="attendee_registration"] .btn:contains("Continue")', + run: function () { + $("input[name='1-name']").val("Raoulette Poiluchette"); + $("input[name='1-phone']").val("0456112233"); + $("input[name='1-email']").val("raoulette@example.com"); + $("select[name*='question_answer-1']").val($("select[name*='question_answer-1'] option:contains('Consumers')").val()); + $("input[name='2-name']").val("Michel Tractopelle"); + $("input[name='2-phone']").val("0456332211"); + $("input[name='2-email']").val("michel@example.com"); + $("select[name*='question_answer-2']").val($("select[name*='question_answer-1'] option:contains('Research')").val()); + $("textarea[name*='question_answer']").text("An unicorn told me about you. I ate it afterwards."); + }, +}, { + content: "Validate attendees details", + extra_trigger: "input[name='1-name'], input[name='2-name'], input[name='3-name']", + trigger: 'button:contains("Continue")', + run: 'click', +}, { + trigger: 'div.o_wereg_confirmed_attendees span:contains("Raoulette Poiluchette")', + run: function () {} // check +}, { + trigger: 'div.o_wereg_confirmed_attendees span:contains("Michel Tractopelle")', + run: function () {} // check +}, { + content: "Click on 'register favorites talks' button", + trigger: 'a:contains("register to your favorites talks now")', + run: 'click', +}, { + trigger: 'h1:contains("Book your talks")', + run: function() {}, +}]; + +/** + * MAIN STEPS + */ + +var initTourSteps = function (eventName) { + return [{ + content: 'Go on "' + eventName + '" page', + trigger: 'a[href*="/event"]:contains("' + eventName + '"):first', + }]; +}; + +var browseTalksSteps = [{ + content: 'Browse Talks', + trigger: 'a:contains("Talks")', +}]; + +var browseExhibitorsSteps = [{ + content: 'Browse Exhibitors', + trigger: 'a:contains("Exhibitors")', +}]; + +var browseMeetSteps = [{ + content: 'Browse Meet', + trigger: 'a:contains("Community")', +}]; + + +tour.register('wevent_register', { + url: '/event', + test: true +}, [].concat( + initTourSteps('Online Reveal'), + browseTalksSteps, + discoverTalkSteps('What This Event Is All About', true, true), + browseTalksSteps, + discoverTalkSteps('Live Testimonial', false, false, false), + browseTalksSteps, + discoverTalkSteps('Our Last Day Together !', true, false, true), + browseMeetSteps, + discoverRoomSteps('Best wood for furniture'), + registerSteps, + ) +); + +}); diff --git a/addons/test_event_full/tests/__init__.py b/addons/test_event_full/tests/__init__.py new file mode 100644 index 00000000..7011f22b --- /dev/null +++ b/addons/test_event_full/tests/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import common +from . import test_event_crm +from . import test_wevent_register 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() diff --git a/addons/test_event_full/tests/test_event_crm.py b/addons/test_event_full/tests/test_event_crm.py new file mode 100644 index 00000000..5da23531 --- /dev/null +++ b/addons/test_event_full/tests/test_event_crm.py @@ -0,0 +1,149 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.test_event_full.tests.common import TestEventFullCommon +from odoo.tests import users + + +class TestEventCrm(TestEventFullCommon): + + @classmethod + def setUpClass(cls): + super(TestEventCrm, cls).setUpClass() + + cls.TICKET1_COUNT, cls.TICKET2_COUNT = 3, 1 + ticket1 = cls.event_0.event_ticket_ids[0] + ticket2 = cls.event_0.event_ticket_ids[1] + + # PREPARE SO DATA + # ------------------------------------------------------------ + + # adding some tickets to SO + cls.customer_so.write({ + 'order_line': [ + (0, 0, { + 'event_id': cls.event_0.id, + 'event_ticket_id': ticket1.id, + 'product_id': ticket1.product_id.id, + 'product_uom_qty': cls.TICKET1_COUNT, + }), (0, 0, { + 'event_id': cls.event_0.id, + 'event_ticket_id': ticket2.id, + 'product_id': ticket2.product_id.id, + 'product_uom_qty': cls.TICKET2_COUNT, + 'price_unit': 50, + }) + ] + }) + + @users('user_sales_salesman') + def test_event_crm_sale_customer(self): + """ Test a SO with a real customer set on it, check partner propagation + as well as group-based lead update. """ + customer_so = self.env['sale.order'].browse(self.customer_so.id) + + # adding some tickets to SO + t1_reg_vals = [ + dict(customer_data, + partner_id=customer_so.partner_id.id, + sale_order_line_id=customer_so.order_line[0].id) + for customer_data in self.website_customer_data[:self.TICKET1_COUNT] + ] + t1_registrations = self.env['event.registration'].create(t1_reg_vals) + + # check effect: registrations, leads + self.assertEqual(self.event_0.registration_ids, t1_registrations) + self.assertEqual(len(self.test_rule_order.lead_ids), 1) + self.assertEqual(self.test_rule_order_done.lead_ids, self.env['crm.lead']) + # check lead converted based on registrations + self.assertLeadConvertion(self.test_rule_order, t1_registrations, partner=customer_so.partner_id) + + # SO is confirmed -> missing registrations should be automatically added + # and added to the lead as part of the same group + customer_so.action_confirm() + self.assertEqual(customer_so.state, 'sale') + self.assertEqual(len(self.event_0.registration_ids), self.TICKET1_COUNT + self.TICKET2_COUNT) + self.assertEqual(len(self.test_rule_order.lead_ids), 1) # no new lead created + self.assertEqual(self.test_rule_order_done.lead_ids, self.env['crm.lead']) # this one still not triggered + + # check existing lead has been updated with new registrations + self.assertLeadConvertion(self.test_rule_order, self.event_0.registration_ids, partner=customer_so.partner_id) + + # Confirm registrations -> trigger the "DONE" rule, one new lead linked to all + # event registrations created in this test as all belong to the same SO + self.event_0.registration_ids.write({'state': 'done'}) + self.assertLeadConvertion(self.test_rule_order_done, self.event_0.registration_ids, partner=customer_so.partner_id) + + @users('user_sales_salesman') + def test_event_crm_sale_mixed_group(self): + """ Test a mixed sale order line creation. This should not happen in a customer + use case but should be supported by the code. """ + public_partner = self.env.ref('base.public_partner') + public_so = self.env['sale.order'].create({ + 'partner_id': public_partner.id, + 'order_line': [ + (0, 0, { + 'event_id': self.event_0.id, + 'event_ticket_id': self.event_0.event_ticket_ids[0].id, + 'product_id': self.event_0.event_ticket_ids[0].product_id.id, + 'product_uom_qty': 2, + }) + ] + }) + customer_so = self.env['sale.order'].browse(self.customer_so.id) + + # make a multi-SO create + mixed_reg_vals = [ + dict(self.website_customer_data[0], + partner_id=customer_so.partner_id.id, + sale_order_line_id=customer_so.order_line[0].id), + dict(self.website_customer_data[1], + partner_id=customer_so.partner_id.id, + sale_order_line_id=customer_so.order_line[0].id), + dict(self.website_customer_data[2], + partner_id=public_so.partner_id.id, + sale_order_line_id=public_so.order_line[0].id), + dict(self.website_customer_data[3], + partner_id=public_so.partner_id.id, + sale_order_line_id=public_so.order_line[0].id), + ] + self.env['event.registration'].create(mixed_reg_vals) + + public_regs = self.event_0.registration_ids.filtered(lambda reg: reg.sale_order_id == public_so) + self.assertEqual(len(public_regs), 2) + customer_regs = self.event_0.registration_ids.filtered(lambda reg: reg.sale_order_id == customer_so) + self.assertEqual(len(customer_regs), 2) + self.assertLeadConvertion(self.test_rule_order, public_regs, partner=None) + self.assertLeadConvertion(self.test_rule_order, customer_regs, partner=customer_so.partner_id) + + @users('user_sales_salesman') + def test_event_crm_sale_public(self): + """ Test a SO with a public partner on it, then updated when SO is confirmed. + This somehow simulates a simplified website_event_sale flow. """ + public_partner = self.env.ref('base.public_partner') + customer_so = self.env['sale.order'].browse(self.customer_so.id) + customer_so.write({'partner_id': public_partner.id}) + + # adding some tickets to SO + t1_reg_vals = [ + dict(customer_data, + partner_id=public_partner.id, + sale_order_line_id=customer_so.order_line[0].id) + for customer_data in self.website_customer_data[:self.TICKET1_COUNT] + ] + t1_registrations = self.env['event.registration'].create(t1_reg_vals) + self.assertEqual(self.event_0.registration_ids, t1_registrations) + + # check lead converted based on registrations + self.assertLeadConvertion(self.test_rule_order, t1_registrations, partner=None) + + # SO is confirmed -> missing registrations should be automatically added + # BUT as public user -> no email -> not taken into account by rule + customer_so.action_confirm() + self.assertEqual(customer_so.state, 'sale') + self.assertEqual(len(self.event_0.registration_ids), self.TICKET1_COUNT + self.TICKET2_COUNT) + self.assertLeadConvertion(self.test_rule_order, t1_registrations, partner=None) + + # SO has a customer set -> main contact of lead is updated accordingly + customer_so.write({'partner_id': self.event_customer.id}) + self.assertLeadConvertion(self.test_rule_order, t1_registrations, partner=self.event_customer) diff --git a/addons/test_event_full/tests/test_wevent_register.py b/addons/test_event_full/tests/test_wevent_register.py new file mode 100644 index 00000000..b1f34d10 --- /dev/null +++ b/addons/test_event_full/tests/test_wevent_register.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import tests +from odoo.addons.test_event_full.tests.common import TestWEventCommon +from odoo.tests.common import HOST + + +@tests.common.tagged('post_install', '-at_install') +class TestWEventRegister(TestWEventCommon): + + def test_register(self): + self.browser_js( + '/event', + 'odoo.__DEBUG__.services["web_tour.tour"].run("wevent_register")', + 'odoo.__DEBUG__.services["web_tour.tour"].tours.wevent_register.ready', + login=None + ) + new_registrations = self.event.registration_ids + visitor = new_registrations.visitor_id + + # check registration content + self.assertEqual(len(new_registrations), 2) + self.assertEqual( + set(new_registrations.mapped("name")), + set(["Raoulette Poiluchette", "Michel Tractopelle"]) + ) + self.assertEqual( + set(new_registrations.mapped("phone")), + set(["0456112233", "0456332211"]) + ) + self.assertEqual( + set(new_registrations.mapped("email")), + set(["raoulette@example.com", "michel@example.com"]) + ) + + # check visitor stored information + self.assertEqual(visitor.name, "Raoulette Poiluchette") + self.assertEqual(visitor.event_registration_ids, new_registrations) + self.assertEqual(visitor.partner_id, self.env['res.partner']) + self.assertEqual(visitor.mobile, "0456112233") + self.assertEqual(visitor.email, "raoulette@example.com") + self.assertFalse(visitor.parent_id) + self.assertTrue(visitor.active) diff --git a/addons/test_event_full/views/assets.xml b/addons/test_event_full/views/assets.xml new file mode 100644 index 00000000..0b20fc8d --- /dev/null +++ b/addons/test_event_full/views/assets.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" ?> +<odoo><data> + <template id="assets_tests" inherit_id="web.assets_tests" name="Full Event Tests Assets"> + <xpath expr="//script[last()]" position="after"> + <script type="text/javascript" src="/test_event_full/static/src/js/tours/wevent_register_tour.js"/> + </xpath> + </template> +</data></odoo> |
