// Copyright 2004-2018 Odoo SA // Copyright 2018 Lambda IS DOOEL // License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). odoo.define('pos_loyalty.tour.test_pos_loyalty', function(require) { "use strict"; // Some of the steps are taken from the pos_basic_order tour in point_of_sale. // Added additional ones necessary for testing the rewards. var Tour = require("web_tour.tour"); function add_customer(customer_name) { return [{ content: 'open customer screen', trigger: '.button.set-customer', }, { content: 'choose customer ' + customer_name, trigger: 'table.client-list tbody.client-list-contents tr.client-line td:contains("' + customer_name + '")', }, { content: 'select customer ' + customer_name, trigger: '.button.next:contains("Set Customer")', }, { content: 'Check if customer ' + customer_name + ' is added', trigger: '.button.set-customer:contains("' + customer_name + '")', run: function() {}, // it's a check }]; } function add_reward(reward_name) { return [{ content: 'open rewards screen', trigger: '.control-button:contains("Rewards")', }, { content: 'choose reward', trigger: '.selection-item:contains("' + reward_name + '")', }] } function add_product_to_order(product_name) { return [{ content: 'buy ' + product_name, trigger: '.product-list .product-name:contains("' + product_name + '")', }, { content: 'the ' + product_name + ' have been added to the order', trigger: '.order .product-name:contains("' + product_name + '")', run: function() {}, // it's a check }]; } function verify_order_product(product_name) { return [{ content: 'check if ' + product_name + ' is in order', trigger: '.orderline .product-name:contains("' + product_name + '")', run: function() {}, // it's a check }] } function generate_keypad_steps(amount_str, keypad_selector) { var i, steps = [], current_char; for (i = 0; i < amount_str.length; ++i) { current_char = amount_str[i]; steps.push({ content: 'press ' + current_char + ' on payment keypad', trigger: keypad_selector + ' .input-button:contains("' + current_char + '"):visible' }); } return steps; } function generate_payment_screen_keypad_steps(amount_str) { return generate_keypad_steps(amount_str, '.payment-numpad'); } function generate_product_screen_keypad_steps(amount_str) { return generate_keypad_steps(amount_str, '.numpad'); } function verify_order_total(total_str) { return [{ content: 'order total contains ' + total_str, trigger: '.order .total .value:contains("' + total_str + '")', run: function() {}, // it's a check }]; } function goto_payment_screen_and_select_payment_method() { return [{ content: "go to payment screen", trigger: '.button.pay', }, { content: "pay with cash", trigger: '.paymentmethod:contains("Cash")', }]; } function finish_order() { return [{ content: "validate the order", trigger: '.button.next:visible', }, { content: "verify that the order is being sent to the backend", trigger: ".js_connecting:visible", run: function() {}, // it's a check }, { content: "verify that the order has been succesfully sent to the backend", trigger: ".js_connected:visible", run: function() {}, // it's a check }, { content: "next order", trigger: '.button.next:visible', }]; } var steps = [{ content: 'waiting for loading to finish', trigger: '.o_main_content:has(.loader:hidden)', run: function() {}, // it's a check }]; steps = steps.concat(add_customer('Agrolait')); steps = steps.concat(add_product_to_order('Peaches')); steps = steps.concat(verify_order_total('5.10')); steps = steps.concat(add_product_to_order('Peaches')); // buy another kg of peaches steps = steps.concat(verify_order_total('10.20')); steps = steps.concat(goto_payment_screen_and_select_payment_method()); steps = steps.concat(generate_payment_screen_keypad_steps("12.20")); steps = steps.concat([{ content: "verify tendered", trigger: '.col-tendered:contains("12.20")', run: function() {}, // it's a check }, { content: "verify change", trigger: '.col-change:contains("2.00")', run: function() {}, // it's a check }]); steps = steps.concat(finish_order()); Tour.register('test_pos_loyalty_acquire_points', { test: true, url: '/pos/web' }, steps); steps = [{ content: 'waiting for loading to finish', trigger: '.o_main_content:has(.loader:hidden)', run: function() {}, // it's a check }]; steps = steps.concat(add_customer('Agrolait')); steps = steps.concat(add_reward('Free Peaches')); steps = steps.concat(verify_order_product('Peaches')); steps = steps.concat(verify_order_total('0.00')); steps = steps.concat(goto_payment_screen_and_select_payment_method()); steps = steps.concat([{ content: "verify tendered", trigger: '.col-tendered:contains("0.00")', run: function() {}, // it's a check }]); steps = steps.concat(finish_order()); Tour.register('test_pos_loyalty_spend_points', { test: true, url: '/pos/web' }, steps); })