Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion portal_event_tickets/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"/portal_event_tickets/static/src/js/portal.esm.js",
],
"web.assets_tests": [
"/portal_event_tickets/static/src/js/ticket_transfer.tour.esm.js",
"/portal_event_tickets/static/src/js/*.tour.esm.js",
],
},
"qweb": [],
Expand Down
58 changes: 58 additions & 0 deletions portal_event_tickets/static/src/js/ticket_upgrade.tour.esm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/** @odoo-module **/

import {registry} from "@web/core/registry";
import wsTourUtils from "@website_sale/js/tours/tour_utils";

registry.category("web_tour.tours").add("portal_event_tickets.ticket_upgrade_tour", {
test: true,
url: "/my/tickets",
steps: () => [
{
content: "Choose first ticket",
trigger: "a.ticket-id",
},
{
content: "Click on upgrade ticket",
trigger: "a:contains('Upgrade / Change ticket')",
},
{
content: "Confirm upgrade",
trigger: ".modal-dialog button[type=submit]",
},
{
content: "Open the register modal",
trigger: 'button:contains("Register")',
},
{
content: "Select 1 unit of `VIP` ticket type",
extra_trigger:
'#wrap:not(:has(a[href*="/event"]:contains("Conference for Architects")))',
trigger: "select:eq(1)",
run: "text 1",
},
{
content: "Click on `Order Now` button",
extra_trigger: "select:eq(1):has(option:contains(1):propSelected)",
trigger: '.btn-primary:contains("Register")',
},
{
content: "Fill attendees details",
trigger: 'form[id="attendee_registration"] .btn[type=submit]',
run: function () {
if ($("input[name*='1-email']").val()) {
// Website_event_attendee_fields automatically filled in data
return;
}
$("input[name*='1-name']").val("Att1");
$("input[name*='1-phone']").val("111 111");
$("input[name*='1-email']").val("att1@example.com");
},
},
{
content: "Validate attendees details",
extra_trigger: "input[name*='1-name']",
trigger: "button[type=submit]",
},
wsTourUtils.goToCart({quantity: 2}),
],
});
65 changes: 65 additions & 0 deletions portal_event_tickets/tests/test_ticket_upgrade.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from datetime import timedelta

from odoo.fields import Datetime
from odoo.tests.common import tagged

from odoo.addons.base.tests.common import HttpCaseWithUserPortal
from odoo.addons.website_event_sale.tests.common import TestWebsiteEventSaleCommon


@tagged("-at_install", "post_install")
class TestTicketUpgrade(TestWebsiteEventSaleCommon, HttpCaseWithUserPortal):
def setUp(self):
super().setUp()

self.ticket_vip = self.env["event.event.ticket"].create(
{
"name": "VIP",
"event_id": self.event_2.id,
"product_id": self.env.ref("event_sale.product_product_event").id,
"end_sale_datetime": (Datetime.today() + timedelta(90)).strftime(
"%Y-%m-%d"
),
"price": 1500.0,
}
)

def test_ticket_upgrade(self):
q = self.env["sale.order"].create(
{
"company_id": self.env.company.id,
"partner_id": self.partner_portal.id,
"pricelist_id": self.pricelist.id,
"order_line": [
(
0,
0,
{
"product_id": self.product_event.id,
"event_id": self.event_2.id,
"event_ticket_id": self.ticket_2.id,
},
)
],
}
)

q.action_confirm()

reg = q.order_line.registration_ids
self.assertEqual(len(reg), 1, "Unexpected behavior")

self.start_tour(
"/my/tickets",
"portal_event_tickets.ticket_upgrade_tour",
login="portal",
step_delay=500,
)

q = self.env["sale.order"].search([], order="id DESC", limit=1)
q.action_confirm()

new_reg = q.order_line.registration_ids
self.assertEqual(len(new_reg), 1, "Unexpected behavior")
self.assertEqual(reg.state, "cancel")
self.assertEqual(new_reg.state, "open")