Merge pull request #6613 from Matt-Yorkley/variant-override-serialization

Don't serialize all variant override objects where they are not needed
This commit is contained in:
Andy Brett
2021-01-14 10:59:11 -08:00
committed by GitHub
3 changed files with 28 additions and 4 deletions

View File

@@ -5,11 +5,9 @@ module Api
class VariantSerializer < ActiveModel::Serializer
attributes :id, :name, :producer_name, :image, :sku, :import_date,
:options_text, :unit_value, :unit_description, :unit_to_display,
:display_as, :display_name, :name_to_display,
:display_as, :display_name, :name_to_display, :variant_overrides_count,
:price, :on_demand, :on_hand, :in_stock, :stock_location_id, :stock_location_name
has_many :variant_overrides
def name
if object.full_name.present?
"#{object.name} - #{object.full_name}"
@@ -55,6 +53,10 @@ module Api
object.stock_items.first.stock_location.name
end
def variant_overrides_count
object.variant_overrides.count
end
end
end
end

View File

@@ -29,6 +29,6 @@
%td.actions
%a{ 'ng-click' => 'editWarn(product,variant)', :class => "edit-variant icon-edit no-text", 'ng-show' => "variantSaved(variant)", 'ofn-with-tip' => t(:edit) }
%td.actions
%span.icon-warning-sign{ 'ng-if' => 'variant.variant_overrides', 'ofn-with-tip' => "{{ 'spree.admin.products.index.products_variant.variant_has_n_overrides' | t:{n: variant.variant_overrides.length} }}" }
%span.icon-warning-sign{ 'ng-if' => 'variant.variant_overrides_count > 0', 'ofn-with-tip' => "{{ 'spree.admin.products.index.products_variant.variant_has_n_overrides' | t:{n: variant.variant_overrides_count} }}" }
%td.actions
%a{ 'ng-click' => 'deleteVariant(product,variant)', "ng-class" => '{disabled: product.variants.length < 2}', :class => "delete-variant icon-trash no-text", 'ofn-with-tip' => t(:remove) }

View File

@@ -168,6 +168,28 @@ feature '
expect(page).to have_field "variant_display_as", with: "bag"
expect(page).to have_field "variant_display_as", with: "bin"
end
context "with variant overrides" do
let!(:product) { create(:product) }
let(:variant) { product.variants.first }
let(:hub) { create(:distributor_enterprise) }
let!(:override) { create(:variant_override, variant: variant, hub: hub ) }
let(:variant_overrides_tip) {
I18n.t('spree.admin.products.index.products_variant.variant_has_n_overrides', n: 1)
}
it "displays an icon indicating a variant has overrides" do
visit spree.admin_products_path
find("a.view-variants").click
within "tr#v_#{variant.id}" do
expect(page).to have_selector(
"span.icon-warning-sign[data-powertip='#{variant_overrides_tip}']"
)
end
end
end
end
scenario "creating a new product" do