module PrestaShopAutomation::CartRulesActions

Public Instance Methods

create_cart_rule(options) click to toggle source
# File lib/actions/cart_rules.rb, line 3
def create_cart_rule options
        goto_admin_tab 'AdminCartRules'
        find('#page-header-desc-cart_rule-new_cart_rule').click
        fill_in 'name_1', :with => options[:name]

        click_label_for "partial_use_#{onoff (options[:partial_use] != false)}"
        click_label_for 'active_on'

        find('#cart_rule_link_conditions').click
        find('input[name="date_from"]').set '1900-01-01 00:00:00'
        find('input[name="date_to"]').set '2500-01-01 00:00:00'

        find('input[name="quantity"]').set 1000000
        find('input[name="quantity_per_user"]').set 1000000

        product_name = nil
        if options[:product_id]
                check 'product_restriction'
                find('#product_restriction_div a').click
                within '#product_rule_type_1' do
                        find('option[value="products"]').click
                end
                find('#product_rule_group_table a[href*="javascript:addProductRule("]').click
                find('#product_rule_1_1_choose_link').click
                within '#product_rule_select_1_1_1' do
                        option = find("option[value='#{options[:product_id]}']", :visible => false)
                        option.click
                        product_name = option.native.text.strip
                end
                addButton = find('#product_rule_select_1_1_add')
                addButton.click
                addButton.native.send_keys :escape
        end

        find('#cart_rule_link_actions').click

        if options[:free_shipping]
                click_label_for 'free_shipping_on'
        else
                click_label_for 'free_shipping_off'
        end

        click_label_for 'free_gift_off'

        amount_exp = /^(?:(\w+)\s+)?(\d+(?:\.\d+)?)\s*(?:tax\s+(excluded|included))$/
        if m = amount_exp.match(options[:amount].strip)
                currency, amount, with_tax = m[1].to_s.strip, m[2].to_f, (m[3] == 'included' ? 1 : 0)
                choose 'apply_discount_amount'
                fill_in 'reduction_amount', :with => amount
                if currency != ''
                        within 'select[name="reduction_currency"]' do
                                find(:xpath, "//option[normalize-space()='#{currency}']").click
                        end
                end
                within 'select[name="reduction_tax"]' do
                        find("option[value='#{with_tax}']").click
                end

                find('#desc-cart_rule-save-and-stay').click
                standard_success_check
                find('#cart_rule_link_actions').click

                if options[:product_id]
                        choose 'apply_discount_to_product'
                        fill_in 'reductionProductFilter', :with => product_name
                        find('div.ac_results ul li').click
                end
        elsif m = /^(\d+(?:\.\d+)?)\s*%$/.match(options[:amount].strip)
                percent = m[1]
                choose 'apply_discount_percent'
                fill_in 'reduction_percent', :with => percent
                if options[:product_id]
                        choose 'apply_discount_to_selection'
                else
                        choose 'apply_discount_to_order'
                end
        else
                throw "Invalid cart rule amount specified!"
        end

        find('#desc-cart_rule-save-and-stay').click
        standard_success_check
        id = current_url[/\bid_cart_rule=(\d+)/, 1].to_i
        id.should be > 0
        return id
end
delete_cart_rule(id) click to toggle source
# File lib/actions/cart_rules.rb, line 90
def delete_cart_rule id
        goto_admin_tab 'AdminCartRules'
        url = first("a[href*='&deletecart_rule&']", :visible => false)['href']
        url.gsub! /\bid_cart_rule=\d+/, "id_cart_rule=#{id}"
        visit url
        standard_success_check
end