pos_loyalty/static/tests/tours/PosLoyaltyRewardButtonTour.js

209 lines
10 KiB
JavaScript

/** @odoo-module **/
import * as PosLoyalty from "@pos_loyalty/../tests/tours/PosLoyaltyTourMethods";
import * as ProductScreen from "@point_of_sale/../tests/tours/helpers/ProductScreenTourMethods";
import * as SelectionPopup from "@point_of_sale/../tests/tours/helpers/SelectionPopupTourMethods";
import { registry } from "@web/core/registry";
registry.category("web_tour.tours").add("PosLoyaltyFreeProductTour", {
test: true,
url: "/pos/web",
steps: () =>
[
ProductScreen.confirmOpeningPopup(),
ProductScreen.clickHomeCategory(),
ProductScreen.addOrderline("Desk Organizer", "2"),
// At this point, the free_product program is triggered.
// The reward button should be highlighted.
PosLoyalty.isRewardButtonHighlighted(true),
// Since the reward button is highlighted, clicking the reward product should be added as reward.
ProductScreen.clickDisplayedProduct("Desk Organizer"),
ProductScreen.selectedOrderlineHas("Desk Organizer", "3.00"),
PosLoyalty.hasRewardLine("Free Product - Desk Organizer", "-5.10", "1.00"),
// In the succeeding 2 clicks on the product, it is considered as a regular product.
// In the third click, the product will be added as reward.
ProductScreen.clickDisplayedProduct("Desk Organizer"),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
PosLoyalty.isRewardButtonHighlighted(true),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
ProductScreen.selectedOrderlineHas("Desk Organizer", "6.00"),
PosLoyalty.hasRewardLine("Free Product - Desk Organizer", "-10.20", "2.00"),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
PosLoyalty.isRewardButtonHighlighted(false),
PosLoyalty.orderTotalIs("25.50"),
// Finalize order that consumed a reward.
PosLoyalty.finalizeOrder("Cash", "30"),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
ProductScreen.selectedOrderlineHas("Desk Organizer", "1.00"),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
ProductScreen.selectedOrderlineHas("Desk Organizer", "2.00"),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
PosLoyalty.hasRewardLine("Free Product - Desk Organizer", "-5.10", "1.00"),
ProductScreen.pressNumpad("⌫"),
ProductScreen.selectedOrderlineHas("Desk Organizer", "0.00"),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
ProductScreen.selectedOrderlineHas("Desk Organizer", "1.00"),
ProductScreen.clickDisplayedProduct("Desk Organizer"),
ProductScreen.selectedOrderlineHas("Desk Organizer", "2.00"),
PosLoyalty.isRewardButtonHighlighted(true),
// Finalize order but without the reward.
// This step is important. When syncing the order, no reward should be synced.
PosLoyalty.orderTotalIs("10.20"),
PosLoyalty.finalizeOrder("Cash", "20"),
ProductScreen.addOrderline("Magnetic Board", "2"),
PosLoyalty.isRewardButtonHighlighted(false),
ProductScreen.clickDisplayedProduct("Magnetic Board"),
PosLoyalty.isRewardButtonHighlighted(true),
ProductScreen.clickDisplayedProduct("Whiteboard Pen"),
PosLoyalty.isRewardButtonHighlighted(false),
PosLoyalty.hasRewardLine("Free Product - Whiteboard Pen", "-3.20", "1.00"),
ProductScreen.clickOrderline("Magnetic Board", "3.00"),
ProductScreen.selectedOrderlineHas("Magnetic Board", "3.00"),
ProductScreen.pressNumpad("6"),
ProductScreen.selectedOrderlineHas("Magnetic Board", "6.00"),
PosLoyalty.isRewardButtonHighlighted(true),
PosLoyalty.claimReward("Free Product - Whiteboard Pen"),
PosLoyalty.isRewardButtonHighlighted(false),
PosLoyalty.hasRewardLine("Free Product - Whiteboard Pen", "-6.40", "2.00"),
// Finalize order that consumed a reward.
PosLoyalty.orderTotalIs("11.88"),
PosLoyalty.finalizeOrder("Cash", "20"),
ProductScreen.addOrderline("Magnetic Board", "6"),
ProductScreen.clickDisplayedProduct("Whiteboard Pen"),
PosLoyalty.hasRewardLine("Free Product - Whiteboard Pen", "-3.20", "1.00"),
PosLoyalty.isRewardButtonHighlighted(true),
ProductScreen.clickOrderline("Magnetic Board", "6.00"),
ProductScreen.pressNumpad("⌫"),
// At this point, the reward should have been removed.
PosLoyalty.isRewardButtonHighlighted(false),
ProductScreen.selectedOrderlineHas("Magnetic Board", "0.00"),
ProductScreen.clickDisplayedProduct("Magnetic Board"),
ProductScreen.selectedOrderlineHas("Magnetic Board", "1.00"),
ProductScreen.clickDisplayedProduct("Magnetic Board"),
ProductScreen.selectedOrderlineHas("Magnetic Board", "2.00"),
ProductScreen.clickDisplayedProduct("Magnetic Board"),
ProductScreen.selectedOrderlineHas("Magnetic Board", "3.00"),
PosLoyalty.hasRewardLine("Free Product - Whiteboard Pen", "-3.20", "1.00"),
PosLoyalty.isRewardButtonHighlighted(false),
PosLoyalty.orderTotalIs("5.94"),
PosLoyalty.finalizeOrder("Cash", "10"),
// Promotion: 2 items of shelves, get desk_pad/monitor_stand free
// This is the 5th order.
ProductScreen.clickDisplayedProduct("Wall Shelf Unit"),
ProductScreen.selectedOrderlineHas("Wall Shelf Unit", "1.00"),
PosLoyalty.isRewardButtonHighlighted(false),
ProductScreen.clickDisplayedProduct("Small Shelf"),
ProductScreen.selectedOrderlineHas("Small Shelf", "1.00"),
PosLoyalty.isRewardButtonHighlighted(true),
// Click reward product. Should be automatically added as reward.
ProductScreen.clickDisplayedProduct("Desk Pad"),
PosLoyalty.isRewardButtonHighlighted(false),
PosLoyalty.hasRewardLine("Free Product", "-1.98", "1.00"),
// Remove the reward line. The next steps will check if cashier
// can select from the different reward products.
ProductScreen.pressNumpad("⌫"),
ProductScreen.pressNumpad("⌫"),
PosLoyalty.isRewardButtonHighlighted(true),
PosLoyalty.claimReward("Free Product - [Desk Pad, Monitor Stand]"),
SelectionPopup.hasSelectionItem("Monitor Stand"),
SelectionPopup.hasSelectionItem("Desk Pad"),
SelectionPopup.clickItem("Desk Pad"),
PosLoyalty.isRewardButtonHighlighted(false),
PosLoyalty.hasRewardLine("Free Product", "-1.98", "1.00"),
ProductScreen.pressNumpad("⌫"),
ProductScreen.pressNumpad("⌫"),
PosLoyalty.isRewardButtonHighlighted(true),
PosLoyalty.claimReward("Free Product - [Desk Pad, Monitor Stand]"),
SelectionPopup.hasSelectionItem("Monitor Stand"),
SelectionPopup.hasSelectionItem("Desk Pad"),
SelectionPopup.clickItem("Monitor Stand"),
PosLoyalty.isRewardButtonHighlighted(false),
ProductScreen.selectedOrderlineHas("Monitor Stand", "1.00", "3.19"),
PosLoyalty.hasRewardLine("Free Product", "-3.19", "1.00"),
PosLoyalty.orderTotalIs("4.81"),
PosLoyalty.finalizeOrder("Cash", "10"),
].flat(),
});
registry.category("web_tour.tours").add("PosLoyaltyFreeProductTour2", {
test: true,
url: "/pos/web",
steps: () =>
[
ProductScreen.confirmOpeningPopup(),
ProductScreen.clickHomeCategory(),
ProductScreen.clickPartnerButton(),
ProductScreen.clickCustomer("AAA Partner"),
ProductScreen.addOrderline("Test Product A", "1"),
PosLoyalty.isRewardButtonHighlighted(true),
PosLoyalty.clickRewardButton(),
SelectionPopup.clickItem("Free Product - Test Product A"),
PosLoyalty.hasRewardLine("Free Product - Test Product A", "-11.50", "1.00"),
PosLoyalty.isRewardButtonHighlighted(false),
].flat(),
});
registry.category("web_tour.tours").add("PosLoyaltySpecificDiscountTour", {
test: true,
url: "/pos/web",
steps: () =>
[
ProductScreen.confirmOpeningPopup(),
ProductScreen.clickHomeCategory(),
ProductScreen.clickDisplayedProduct("Test Product A"),
ProductScreen.selectedOrderlineHas("Test Product A", "1.00", "40.00"),
ProductScreen.clickDisplayedProduct("Test Product B"),
ProductScreen.selectedOrderlineHas("Test Product B", "1.00", "40.00"),
PosLoyalty.clickRewardButton(),
SelectionPopup.clickItem("$ 10 per order on specific products"),
PosLoyalty.hasRewardLine("$ 10 per order on specific products", "-10.00", "1.00"),
PosLoyalty.orderTotalIs("60.00"),
].flat(),
});
registry.category("web_tour.tours").add("PosLoyaltySpecificDiscountWithFreeProductTour", {
test: true,
url: "/pos/web",
steps: () =>
[
ProductScreen.confirmOpeningPopup(),
ProductScreen.clickHomeCategory(),
ProductScreen.clickDisplayedProduct("Test Product A"),
ProductScreen.clickDisplayedProduct("Test Product C"),
PosLoyalty.orderTotalIs("130.00"),
PosLoyalty.isRewardButtonHighlighted(true),
PosLoyalty.clickRewardButton(),
PosLoyalty.orderTotalIs("130.00"),
].flat(),
});
registry.category("web_tour.tours").add("PosLoyaltySpecificDiscountWithRewardProductDomainTour", {
test: true,
url: "/pos/web",
steps: () =>
[
ProductScreen.confirmOpeningPopup(),
ProductScreen.clickHomeCategory(),
ProductScreen.clickDisplayedProduct("Product A"),
ProductScreen.selectedOrderlineHas("Product A", "1.00", "15.00"),
PosLoyalty.orderTotalIs("15.00"),
ProductScreen.clickDisplayedProduct("Product B"),
ProductScreen.selectedOrderlineHas("Product B", "1.00", "50.00"),
PosLoyalty.orderTotalIs("40.00"),
].flat(),
});