diff --git a/promotions/app/javascript/backend/solidus_promotions/web_components/option_value_picker.js b/promotions/app/javascript/backend/solidus_promotions/web_components/option_value_picker.js index a5f7d0489a9..f2679202b88 100644 --- a/promotions/app/javascript/backend/solidus_promotions/web_components/option_value_picker.js +++ b/promotions/app/javascript/backend/solidus_promotions/web_components/option_value_picker.js @@ -45,7 +45,12 @@ $.fn.optionValueAutocomplete = function (options) { class OptionValuePicker extends HTMLInputElement { connectedCallback() { - $(this).optionValueAutocomplete(); + const container = this.closest(".promo-condition-option-value"); + const productPicker = container.querySelector('input[is="product-picker"]'); + + $(this).optionValueAutocomplete({ + productSelect: productPicker, + }); } } diff --git a/promotions/app/javascript/backend/solidus_promotions/web_components/product_picker.js b/promotions/app/javascript/backend/solidus_promotions/web_components/product_picker.js index 02cc58e6840..a0f3d75e80f 100644 --- a/promotions/app/javascript/backend/solidus_promotions/web_components/product_picker.js +++ b/promotions/app/javascript/backend/solidus_promotions/web_components/product_picker.js @@ -1,6 +1,7 @@ class ProductPicker extends HTMLInputElement { connectedCallback() { - $(this).productAutocomplete(); + const multiple = this.dataset.multiple !== "false"; + $(this).productAutocomplete({ multiple }); } } diff --git a/promotions/lib/views/backend/solidus_promotions/admin/condition_fields/line_item_option_value/_option_value_fields.html.erb b/promotions/lib/views/backend/solidus_promotions/admin/condition_fields/line_item_option_value/_option_value_fields.html.erb index b8081a854fa..82c5bd7bd26 100644 --- a/promotions/lib/views/backend/solidus_promotions/admin/condition_fields/line_item_option_value/_option_value_fields.html.erb +++ b/promotions/lib/views/backend/solidus_promotions/admin/condition_fields/line_item_option_value/_option_value_fields.html.erb @@ -4,6 +4,7 @@ is="product-picker" class="w-100" data-action="select2Change->product-option-values#propagate_product_id_to_value_input" + data-multiple="false" type="hidden" value="<%= product_option_values[0] %>" > diff --git a/promotions/spec/system/solidus_promotions/backend/promotions_spec.rb b/promotions/spec/system/solidus_promotions/backend/promotions_spec.rb index fd431057cc6..ea4e074f909 100644 --- a/promotions/spec/system/solidus_promotions/backend/promotions_spec.rb +++ b/promotions/spec/system/solidus_promotions/backend/promotions_spec.rb @@ -161,4 +161,27 @@ expect(page).to have_content("Benefit has been successfully removed!") end end + + describe "Adding a benefit condition" do + let!(:promotion_with_benefit) { create(:solidus_promotion, :with_adjustable_benefit) } + let!(:product) { create(:product) } + let!(:option_value) { create(:option_value) } + let!(:variant) { create(:variant, product: product, option_values: [option_value]) } + + it "allows adding a line_item_with_options condition", :js do + visit solidus_promotions.edit_admin_promotion_path(promotion_with_benefit) + click_link "Add Condition" + select("Line Item Option Value(s)", from: "Condition Type") + click_button "Add" + expect(page).to have_content("Line Item Option Value(s)") + click_link "Add product" + within(".promo-condition-option-value") do + # find('.select2-focusser').set(product.name) + # find('.select2-input').set(option_value.name) + end + within("#benefits_adjust_line_item_#{promotion_with_benefit.benefits.first.id}_conditions") do + find('input[type="submit"]', wait: 5).click + end + end + end end